From 832959ffcc1d99f8364e75b02d433cb72de63fc1 Mon Sep 17 00:00:00 2001 From: Andrew Date: Tue, 18 Jun 2019 13:32:04 -0400 Subject: [PATCH 001/255] doc/go1.13: add release notes for the testing package Change-Id: I4ddbe22061579383ca47e14d0b64a74365fb3d19 Reviewed-on: https://go-review.googlesource.com/c/go/+/182797 Reviewed-by: Katie Hockman --- doc/go1.13.html | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/doc/go1.13.html b/doc/go1.13.html index 02c0adf32b..5655b06d6c 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -520,15 +520,17 @@ TODO
testing

- TODO: https://golang.org/cl/112155: stop rounding b.N + When running benchmarks, B.N is no longer rounded.

- TODO: https://golang.org/cl/166717: add B.ReportMetric for custom benchmark metrics + The new method B.ReportMetric lets users report + custom benchmark metrics and override built-in metrics.

- TODO: https://golang.org/cl/173722: delay flag registration; move to an Init function + Testing flags are now registered in the new Init function. + As a result, testing flags are now only registered when running a test binary.

From 71a6a44428feb844b9dd3c4c8e16be8dee2fd8fa Mon Sep 17 00:00:00 2001 From: Jay Conrod Date: Wed, 19 Jun 2019 17:25:27 -0400 Subject: [PATCH 002/255] cmd/go: install binaries in cmd/ in $GOROOT/bin instead of $GOBIN This was caused by CL 167748, which removed a special case for command line arguments starting with "cmd/". This CL restores the behavior from go1.12. Fixes #32674 Change-Id: I72180d11fb0261ef0af9632e512bd9c03481b6c0 Reviewed-on: https://go-review.googlesource.com/c/go/+/183058 Run-TryBot: Jay Conrod TryBot-Result: Gobot Gobot Reviewed-by: Bryan C. Mills --- src/cmd/go/internal/load/pkg.go | 14 ++++++++++---- src/cmd/go/testdata/script/install_cmd_gobin.txt | 10 ++++++++++ 2 files changed, 20 insertions(+), 4 deletions(-) create mode 100644 src/cmd/go/testdata/script/install_cmd_gobin.txt diff --git a/src/cmd/go/internal/load/pkg.go b/src/cmd/go/internal/load/pkg.go index b1e9fc9ff5..35b0790bc9 100644 --- a/src/cmd/go/internal/load/pkg.go +++ b/src/cmd/go/internal/load/pkg.go @@ -662,11 +662,17 @@ func loadPackageData(path, parentPath, parentDir, parentRoot string, parentIsStd data.p, data.err = cfg.BuildContext.Import(r.path, parentDir, buildMode) } data.p.ImportPath = r.path - if cfg.GOBIN != "" { - data.p.BinDir = cfg.GOBIN - } else if cfg.ModulesEnabled && !data.p.Goroot { - data.p.BinDir = ModBinDir() + + // Set data.p.BinDir in cases where go/build.Context.Import + // may give us a path we don't want. + if !data.p.Goroot { + if cfg.GOBIN != "" { + data.p.BinDir = cfg.GOBIN + } else if cfg.ModulesEnabled { + data.p.BinDir = ModBinDir() + } } + if !cfg.ModulesEnabled && data.err == nil && data.p.ImportComment != "" && data.p.ImportComment != path && !strings.Contains(path, "/vendor/") && !strings.HasPrefix(path, "vendor/") { diff --git a/src/cmd/go/testdata/script/install_cmd_gobin.txt b/src/cmd/go/testdata/script/install_cmd_gobin.txt new file mode 100644 index 0000000000..38fd66c0e8 --- /dev/null +++ b/src/cmd/go/testdata/script/install_cmd_gobin.txt @@ -0,0 +1,10 @@ +# Check that commands in cmd are install to $GOROOT/bin, not $GOBIN. +# Verifies golang.org/issue/32674. +env GOBIN=gobin +mkdir gobin +go list -f '{{.Target}}' cmd/go +stdout $GOROOT[/\\]bin[/\\]go$GOEXE + +# Check that tools are installed to $GOTOOLDIR, not $GOBIN. +go list -f '{{.Target}}' cmd/compile +stdout $GOROOT[/\\]pkg[/\\]tool[/\\]${GOOS}_${GOARCH}[/\\]compile$GOEXE From 769fda2d5110eef6146d7df3bf0219872c9b0da6 Mon Sep 17 00:00:00 2001 From: David Chase Date: Wed, 19 Jun 2019 18:09:39 -0400 Subject: [PATCH 003/255] cmd/compile: add necessary operand to mergePoint in rewrite rules A missing operand to mergePoint caused lower to place values in the wrong blocks. Includes test, belt+suspenders to do both ssa check and verify the output (was is how the bug was originally observed). The fixed bug here is very likely present in Go versions 1.9-1.12 on amd64 and s390x Fixes #32680. Change-Id: I63e702c4c40602cb795ef71b1691eb704d38ccc7 Reviewed-on: https://go-review.googlesource.com/c/go/+/183059 Run-TryBot: David Chase TryBot-Result: Gobot Gobot Reviewed-by: Cherry Zhang --- src/cmd/compile/internal/ssa/gen/AMD64.rules | 48 +- src/cmd/compile/internal/ssa/gen/S390X.rules | 48 +- src/cmd/compile/internal/ssa/rewriteAMD64.go | 960 +++++++++---------- src/cmd/compile/internal/ssa/rewriteS390X.go | 960 +++++++++---------- test/fixedbugs/issue32680.go | 23 + test/fixedbugs/issue32680.out | 1 + 6 files changed, 1032 insertions(+), 1008 deletions(-) create mode 100644 test/fixedbugs/issue32680.go create mode 100644 test/fixedbugs/issue32680.out diff --git a/src/cmd/compile/internal/ssa/gen/AMD64.rules b/src/cmd/compile/internal/ssa/gen/AMD64.rules index 5e59f7def2..96255613f5 100644 --- a/src/cmd/compile/internal/ssa/gen/AMD64.rules +++ b/src/cmd/compile/internal/ssa/gen/AMD64.rules @@ -1608,13 +1608,13 @@ && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 - && mergePoint(b,x0,x1) != nil + && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - -> @mergePoint(b,x0,x1) (ORL (SHLLconst [j0] (MOVWload [i0] {s} p mem)) y) + -> @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j0] (MOVWload [i0] {s} p mem)) y) (ORQ s1:(SHLQconst [j1] x1:(MOVBload [i1] {s} p mem)) @@ -1629,13 +1629,13 @@ && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 - && mergePoint(b,x0,x1) != nil + && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - -> @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVWload [i0] {s} p mem)) y) + -> @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVWload [i0] {s} p mem)) y) (ORQ s1:(SHLQconst [j1] x1:(MOVWload [i1] {s} p mem)) @@ -1650,13 +1650,13 @@ && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 - && mergePoint(b,x0,x1) != nil + && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - -> @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVLload [i0] {s} p mem)) y) + -> @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVLload [i0] {s} p mem)) y) // Little-endian indexed loads @@ -1733,13 +1733,13 @@ && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 - && mergePoint(b,x0,x1) != nil + && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - -> @mergePoint(b,x0,x1) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + -> @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) (ORQ s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)) @@ -1754,13 +1754,13 @@ && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 - && mergePoint(b,x0,x1) != nil + && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - -> @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + -> @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) (ORQ s1:(SHLQconst [j1] x1:(MOVWloadidx1 [i1] {s} p idx mem)) @@ -1775,13 +1775,13 @@ && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 - && mergePoint(b,x0,x1) != nil + && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - -> @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) + -> @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) // Big-endian loads @@ -1875,13 +1875,13 @@ && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 - && mergePoint(b,x0,x1) != nil + && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - -> @mergePoint(b,x0,x1) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWload [i0] {s} p mem))) y) + -> @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWload [i0] {s} p mem))) y) (ORQ s0:(SHLQconst [j0] x0:(MOVBload [i0] {s} p mem)) @@ -1896,13 +1896,13 @@ && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 - && mergePoint(b,x0,x1) != nil + && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - -> @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWload [i0] {s} p mem))) y) + -> @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWload [i0] {s} p mem))) y) (ORQ s0:(SHLQconst [j0] r0:(ROLWconst [8] x0:(MOVWload [i0] {s} p mem))) @@ -1919,7 +1919,7 @@ && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 - && mergePoint(b,x0,x1) != nil + && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) @@ -1927,7 +1927,7 @@ && clobber(s0) && clobber(s1) && clobber(or) - -> @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (BSWAPL (MOVLload [i0] {s} p mem))) y) + -> @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (BSWAPL (MOVLload [i0] {s} p mem))) y) // Big-endian indexed loads @@ -2021,13 +2021,13 @@ && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 - && mergePoint(b,x0,x1) != nil + && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - -> @mergePoint(b,x0,x1) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + -> @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) (ORQ s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)) @@ -2042,13 +2042,13 @@ && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 - && mergePoint(b,x0,x1) != nil + && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - -> @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + -> @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) (ORQ s0:(SHLQconst [j0] r0:(ROLWconst [8] x0:(MOVWloadidx1 [i0] {s} p idx mem))) @@ -2065,7 +2065,7 @@ && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 - && mergePoint(b,x0,x1) != nil + && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) @@ -2073,7 +2073,7 @@ && clobber(s0) && clobber(s1) && clobber(or) - -> @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) + -> @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) // Combine 2 byte stores + shift into rolw 8 + word store (MOVBstore [i] {s} p w diff --git a/src/cmd/compile/internal/ssa/gen/S390X.rules b/src/cmd/compile/internal/ssa/gen/S390X.rules index cbf53506d7..ee670a908d 100644 --- a/src/cmd/compile/internal/ssa/gen/S390X.rules +++ b/src/cmd/compile/internal/ssa/gen/S390X.rules @@ -1535,13 +1535,13 @@ && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 - && mergePoint(b,x0,x1) != nil + && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - -> @mergePoint(b,x0,x1) (ORW (SLWconst [j1] (MOVHZload [i0] {s} p mem)) y) + -> @mergePoint(b,x0,x1,y) (ORW (SLWconst [j1] (MOVHZload [i0] {s} p mem)) y) (OR s0:(SLDconst [j0] x0:(MOVBZload [i0] {s} p mem)) @@ -1556,13 +1556,13 @@ && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 - && mergePoint(b,x0,x1) != nil + && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - -> @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVHZload [i0] {s} p mem)) y) + -> @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVHZload [i0] {s} p mem)) y) (OR s0:(SLDconst [j0] x0:(MOVHZload [i0] {s} p mem)) @@ -1577,13 +1577,13 @@ && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 - && mergePoint(b,x0,x1) != nil + && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - -> @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVWZload [i0] {s} p mem)) y) + -> @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVWZload [i0] {s} p mem)) y) // Big-endian indexed loads @@ -1665,13 +1665,13 @@ && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 - && mergePoint(b,x0,x1) != nil + && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - -> @mergePoint(b,x0,x1) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + -> @mergePoint(b,x0,x1,y) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) (OR s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem)) @@ -1686,13 +1686,13 @@ && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 - && mergePoint(b,x0,x1) != nil + && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - -> @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + -> @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) (OR s0:(SLDconst [j0] x0:(MOVHZloadidx [i0] {s} p idx mem)) @@ -1707,13 +1707,13 @@ && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 - && mergePoint(b,x0,x1) != nil + && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - -> @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) + -> @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) // Little-endian loads @@ -1805,13 +1805,13 @@ && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 - && mergePoint(b,x0,x1) != nil + && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - -> @mergePoint(b,x0,x1) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRload [i0] {s} p mem))) y) + -> @mergePoint(b,x0,x1,y) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRload [i0] {s} p mem))) y) (OR s1:(SLDconst [j1] x1:(MOVBZload [i1] {s} p mem)) @@ -1827,13 +1827,13 @@ && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 - && mergePoint(b,x0,x1) != nil + && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - -> @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVHZreg (MOVHBRload [i0] {s} p mem))) y) + -> @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVHZreg (MOVHBRload [i0] {s} p mem))) y) (OR s1:(SLDconst [j1] r1:(MOVHZreg x1:(MOVHBRload [i1] {s} p mem))) @@ -1850,7 +1850,7 @@ && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 - && mergePoint(b,x0,x1) != nil + && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) @@ -1858,7 +1858,7 @@ && clobber(s0) && clobber(s1) && clobber(or) - -> @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVWZreg (MOVWBRload [i0] {s} p mem))) y) + -> @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVWZreg (MOVWBRload [i0] {s} p mem))) y) // Little-endian indexed loads @@ -1950,13 +1950,13 @@ && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 - && mergePoint(b,x0,x1) != nil + && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - -> @mergePoint(b,x0,x1) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + -> @mergePoint(b,x0,x1,y) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) (OR s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem)) @@ -1972,13 +1972,13 @@ && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 - && mergePoint(b,x0,x1) != nil + && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - -> @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + -> @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) (OR s1:(SLDconst [j1] r1:(MOVHZreg x1:(MOVHBRloadidx [i1] {s} p idx mem))) @@ -1995,7 +1995,7 @@ && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 - && mergePoint(b,x0,x1) != nil + && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) @@ -2003,7 +2003,7 @@ && clobber(s0) && clobber(s1) && clobber(or) - -> @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) + -> @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) // Combine stores into store multiples. // 32-bit diff --git a/src/cmd/compile/internal/ssa/rewriteAMD64.go b/src/cmd/compile/internal/ssa/rewriteAMD64.go index 4ffa317a06..8c02897f71 100644 --- a/src/cmd/compile/internal/ssa/rewriteAMD64.go +++ b/src/cmd/compile/internal/ssa/rewriteAMD64.go @@ -29437,8 +29437,8 @@ func rewriteValueAMD64_OpAMD64ORL_50(v *Value) bool { return true } // match: (ORL s1:(SHLLconst [j1] x1:(MOVBload [i1] {s} p mem)) or:(ORL s0:(SHLLconst [j0] x0:(MOVBload [i0] {s} p mem)) y)) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j0] (MOVWload [i0] {s} p mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j0] (MOVWload [i0] {s} p mem)) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -29479,10 +29479,10 @@ func rewriteValueAMD64_OpAMD64ORL_50(v *Value) bool { if mem != x0.Args[1] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x0.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -29499,8 +29499,8 @@ func rewriteValueAMD64_OpAMD64ORL_50(v *Value) bool { return true } // match: (ORL s1:(SHLLconst [j1] x1:(MOVBload [i1] {s} p mem)) or:(ORL y s0:(SHLLconst [j0] x0:(MOVBload [i0] {s} p mem)))) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j0] (MOVWload [i0] {s} p mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j0] (MOVWload [i0] {s} p mem)) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -29542,10 +29542,10 @@ func rewriteValueAMD64_OpAMD64ORL_50(v *Value) bool { if mem != x0.Args[1] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x0.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -29562,8 +29562,8 @@ func rewriteValueAMD64_OpAMD64ORL_50(v *Value) bool { return true } // match: (ORL or:(ORL s0:(SHLLconst [j0] x0:(MOVBload [i0] {s} p mem)) y) s1:(SHLLconst [j1] x1:(MOVBload [i1] {s} p mem))) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j0] (MOVWload [i0] {s} p mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j0] (MOVWload [i0] {s} p mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -29604,10 +29604,10 @@ func rewriteValueAMD64_OpAMD64ORL_50(v *Value) bool { if mem != x1.Args[1] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x1.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -29629,8 +29629,8 @@ func rewriteValueAMD64_OpAMD64ORL_60(v *Value) bool { b := v.Block typ := &b.Func.Config.Types // match: (ORL or:(ORL y s0:(SHLLconst [j0] x0:(MOVBload [i0] {s} p mem))) s1:(SHLLconst [j1] x1:(MOVBload [i1] {s} p mem))) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j0] (MOVWload [i0] {s} p mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j0] (MOVWload [i0] {s} p mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -29672,10 +29672,10 @@ func rewriteValueAMD64_OpAMD64ORL_60(v *Value) bool { if mem != x1.Args[1] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x1.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -30545,8 +30545,8 @@ func rewriteValueAMD64_OpAMD64ORL_70(v *Value) bool { return true } // match: (ORL s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)) or:(ORL s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)) y)) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -30591,10 +30591,10 @@ func rewriteValueAMD64_OpAMD64ORL_70(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -30612,8 +30612,8 @@ func rewriteValueAMD64_OpAMD64ORL_70(v *Value) bool { return true } // match: (ORL s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)) or:(ORL s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)) y)) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -30658,10 +30658,10 @@ func rewriteValueAMD64_OpAMD64ORL_70(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -30679,8 +30679,8 @@ func rewriteValueAMD64_OpAMD64ORL_70(v *Value) bool { return true } // match: (ORL s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)) or:(ORL s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem)) y)) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -30725,10 +30725,10 @@ func rewriteValueAMD64_OpAMD64ORL_70(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -30751,8 +30751,8 @@ func rewriteValueAMD64_OpAMD64ORL_80(v *Value) bool { b := v.Block typ := &b.Func.Config.Types // match: (ORL s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)) or:(ORL s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem)) y)) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -30797,10 +30797,10 @@ func rewriteValueAMD64_OpAMD64ORL_80(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -30818,8 +30818,8 @@ func rewriteValueAMD64_OpAMD64ORL_80(v *Value) bool { return true } // match: (ORL s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)) or:(ORL y s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)))) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -30865,10 +30865,10 @@ func rewriteValueAMD64_OpAMD64ORL_80(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -30886,8 +30886,8 @@ func rewriteValueAMD64_OpAMD64ORL_80(v *Value) bool { return true } // match: (ORL s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)) or:(ORL y s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)))) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -30933,10 +30933,10 @@ func rewriteValueAMD64_OpAMD64ORL_80(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -30954,8 +30954,8 @@ func rewriteValueAMD64_OpAMD64ORL_80(v *Value) bool { return true } // match: (ORL s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)) or:(ORL y s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem)))) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -31001,10 +31001,10 @@ func rewriteValueAMD64_OpAMD64ORL_80(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -31022,8 +31022,8 @@ func rewriteValueAMD64_OpAMD64ORL_80(v *Value) bool { return true } // match: (ORL s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)) or:(ORL y s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem)))) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -31069,10 +31069,10 @@ func rewriteValueAMD64_OpAMD64ORL_80(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -31090,8 +31090,8 @@ func rewriteValueAMD64_OpAMD64ORL_80(v *Value) bool { return true } // match: (ORL or:(ORL s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)) y) s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem))) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -31136,10 +31136,10 @@ func rewriteValueAMD64_OpAMD64ORL_80(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -31157,8 +31157,8 @@ func rewriteValueAMD64_OpAMD64ORL_80(v *Value) bool { return true } // match: (ORL or:(ORL s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem)) y) s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem))) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -31203,10 +31203,10 @@ func rewriteValueAMD64_OpAMD64ORL_80(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -31224,8 +31224,8 @@ func rewriteValueAMD64_OpAMD64ORL_80(v *Value) bool { return true } // match: (ORL or:(ORL y s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem))) s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem))) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -31271,10 +31271,10 @@ func rewriteValueAMD64_OpAMD64ORL_80(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -31292,8 +31292,8 @@ func rewriteValueAMD64_OpAMD64ORL_80(v *Value) bool { return true } // match: (ORL or:(ORL y s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem))) s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem))) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -31339,10 +31339,10 @@ func rewriteValueAMD64_OpAMD64ORL_80(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -31360,8 +31360,8 @@ func rewriteValueAMD64_OpAMD64ORL_80(v *Value) bool { return true } // match: (ORL or:(ORL s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)) y) s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem))) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -31406,10 +31406,10 @@ func rewriteValueAMD64_OpAMD64ORL_80(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -31432,8 +31432,8 @@ func rewriteValueAMD64_OpAMD64ORL_90(v *Value) bool { b := v.Block typ := &b.Func.Config.Types // match: (ORL or:(ORL s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem)) y) s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem))) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -31478,10 +31478,10 @@ func rewriteValueAMD64_OpAMD64ORL_90(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -31499,8 +31499,8 @@ func rewriteValueAMD64_OpAMD64ORL_90(v *Value) bool { return true } // match: (ORL or:(ORL y s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem))) s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem))) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -31546,10 +31546,10 @@ func rewriteValueAMD64_OpAMD64ORL_90(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -31567,8 +31567,8 @@ func rewriteValueAMD64_OpAMD64ORL_90(v *Value) bool { return true } // match: (ORL or:(ORL y s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem))) s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem))) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -31614,10 +31614,10 @@ func rewriteValueAMD64_OpAMD64ORL_90(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -31865,8 +31865,8 @@ func rewriteValueAMD64_OpAMD64ORL_90(v *Value) bool { return true } // match: (ORL s0:(SHLLconst [j0] x0:(MOVBload [i0] {s} p mem)) or:(ORL s1:(SHLLconst [j1] x1:(MOVBload [i1] {s} p mem)) y)) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWload [i0] {s} p mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWload [i0] {s} p mem))) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -31907,10 +31907,10 @@ func rewriteValueAMD64_OpAMD64ORL_90(v *Value) bool { if mem != x1.Args[1] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x1.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -31930,8 +31930,8 @@ func rewriteValueAMD64_OpAMD64ORL_90(v *Value) bool { return true } // match: (ORL s0:(SHLLconst [j0] x0:(MOVBload [i0] {s} p mem)) or:(ORL y s1:(SHLLconst [j1] x1:(MOVBload [i1] {s} p mem)))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWload [i0] {s} p mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWload [i0] {s} p mem))) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -31973,10 +31973,10 @@ func rewriteValueAMD64_OpAMD64ORL_90(v *Value) bool { if mem != x1.Args[1] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x1.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -31996,8 +31996,8 @@ func rewriteValueAMD64_OpAMD64ORL_90(v *Value) bool { return true } // match: (ORL or:(ORL s1:(SHLLconst [j1] x1:(MOVBload [i1] {s} p mem)) y) s0:(SHLLconst [j0] x0:(MOVBload [i0] {s} p mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWload [i0] {s} p mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWload [i0] {s} p mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -32038,10 +32038,10 @@ func rewriteValueAMD64_OpAMD64ORL_90(v *Value) bool { if mem != x0.Args[1] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x0.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -32066,8 +32066,8 @@ func rewriteValueAMD64_OpAMD64ORL_100(v *Value) bool { b := v.Block typ := &b.Func.Config.Types // match: (ORL or:(ORL y s1:(SHLLconst [j1] x1:(MOVBload [i1] {s} p mem))) s0:(SHLLconst [j0] x0:(MOVBload [i0] {s} p mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWload [i0] {s} p mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWload [i0] {s} p mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -32109,10 +32109,10 @@ func rewriteValueAMD64_OpAMD64ORL_100(v *Value) bool { if mem != x0.Args[1] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x0.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -33137,8 +33137,8 @@ func rewriteValueAMD64_OpAMD64ORL_110(v *Value) bool { return true } // match: (ORL s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)) or:(ORL s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)) y)) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -33183,10 +33183,10 @@ func rewriteValueAMD64_OpAMD64ORL_110(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -33207,8 +33207,8 @@ func rewriteValueAMD64_OpAMD64ORL_110(v *Value) bool { return true } // match: (ORL s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem)) or:(ORL s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)) y)) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -33253,10 +33253,10 @@ func rewriteValueAMD64_OpAMD64ORL_110(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -33277,8 +33277,8 @@ func rewriteValueAMD64_OpAMD64ORL_110(v *Value) bool { return true } // match: (ORL s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)) or:(ORL s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)) y)) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -33323,10 +33323,10 @@ func rewriteValueAMD64_OpAMD64ORL_110(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -33352,8 +33352,8 @@ func rewriteValueAMD64_OpAMD64ORL_120(v *Value) bool { b := v.Block typ := &b.Func.Config.Types // match: (ORL s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem)) or:(ORL s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)) y)) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -33398,10 +33398,10 @@ func rewriteValueAMD64_OpAMD64ORL_120(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -33422,8 +33422,8 @@ func rewriteValueAMD64_OpAMD64ORL_120(v *Value) bool { return true } // match: (ORL s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)) or:(ORL y s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -33469,10 +33469,10 @@ func rewriteValueAMD64_OpAMD64ORL_120(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -33493,8 +33493,8 @@ func rewriteValueAMD64_OpAMD64ORL_120(v *Value) bool { return true } // match: (ORL s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem)) or:(ORL y s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -33540,10 +33540,10 @@ func rewriteValueAMD64_OpAMD64ORL_120(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -33564,8 +33564,8 @@ func rewriteValueAMD64_OpAMD64ORL_120(v *Value) bool { return true } // match: (ORL s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)) or:(ORL y s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -33611,10 +33611,10 @@ func rewriteValueAMD64_OpAMD64ORL_120(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -33635,8 +33635,8 @@ func rewriteValueAMD64_OpAMD64ORL_120(v *Value) bool { return true } // match: (ORL s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem)) or:(ORL y s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -33682,10 +33682,10 @@ func rewriteValueAMD64_OpAMD64ORL_120(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -33706,8 +33706,8 @@ func rewriteValueAMD64_OpAMD64ORL_120(v *Value) bool { return true } // match: (ORL or:(ORL s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)) y) s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -33752,10 +33752,10 @@ func rewriteValueAMD64_OpAMD64ORL_120(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -33776,8 +33776,8 @@ func rewriteValueAMD64_OpAMD64ORL_120(v *Value) bool { return true } // match: (ORL or:(ORL s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)) y) s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -33822,10 +33822,10 @@ func rewriteValueAMD64_OpAMD64ORL_120(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -33846,8 +33846,8 @@ func rewriteValueAMD64_OpAMD64ORL_120(v *Value) bool { return true } // match: (ORL or:(ORL y s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem))) s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -33893,10 +33893,10 @@ func rewriteValueAMD64_OpAMD64ORL_120(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -33917,8 +33917,8 @@ func rewriteValueAMD64_OpAMD64ORL_120(v *Value) bool { return true } // match: (ORL or:(ORL y s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem))) s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -33964,10 +33964,10 @@ func rewriteValueAMD64_OpAMD64ORL_120(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -33988,8 +33988,8 @@ func rewriteValueAMD64_OpAMD64ORL_120(v *Value) bool { return true } // match: (ORL or:(ORL s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)) y) s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -34034,10 +34034,10 @@ func rewriteValueAMD64_OpAMD64ORL_120(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -34063,8 +34063,8 @@ func rewriteValueAMD64_OpAMD64ORL_130(v *Value) bool { b := v.Block typ := &b.Func.Config.Types // match: (ORL or:(ORL s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)) y) s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -34109,10 +34109,10 @@ func rewriteValueAMD64_OpAMD64ORL_130(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -34133,8 +34133,8 @@ func rewriteValueAMD64_OpAMD64ORL_130(v *Value) bool { return true } // match: (ORL or:(ORL y s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem))) s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -34180,10 +34180,10 @@ func rewriteValueAMD64_OpAMD64ORL_130(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -34204,8 +34204,8 @@ func rewriteValueAMD64_OpAMD64ORL_130(v *Value) bool { return true } // match: (ORL or:(ORL y s1:(SHLLconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem))) s0:(SHLLconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORL (SHLLconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -34251,10 +34251,10 @@ func rewriteValueAMD64_OpAMD64ORL_130(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORL, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -36200,8 +36200,8 @@ func rewriteValueAMD64_OpAMD64ORQ_30(v *Value) bool { return true } // match: (ORQ s1:(SHLQconst [j1] x1:(MOVBload [i1] {s} p mem)) or:(ORQ s0:(SHLQconst [j0] x0:(MOVBload [i0] {s} p mem)) y)) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVWload [i0] {s} p mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVWload [i0] {s} p mem)) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -36242,10 +36242,10 @@ func rewriteValueAMD64_OpAMD64ORQ_30(v *Value) bool { if mem != x0.Args[1] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x0.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -36262,8 +36262,8 @@ func rewriteValueAMD64_OpAMD64ORQ_30(v *Value) bool { return true } // match: (ORQ s1:(SHLQconst [j1] x1:(MOVBload [i1] {s} p mem)) or:(ORQ y s0:(SHLQconst [j0] x0:(MOVBload [i0] {s} p mem)))) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVWload [i0] {s} p mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVWload [i0] {s} p mem)) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -36305,10 +36305,10 @@ func rewriteValueAMD64_OpAMD64ORQ_30(v *Value) bool { if mem != x0.Args[1] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x0.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -36325,8 +36325,8 @@ func rewriteValueAMD64_OpAMD64ORQ_30(v *Value) bool { return true } // match: (ORQ or:(ORQ s0:(SHLQconst [j0] x0:(MOVBload [i0] {s} p mem)) y) s1:(SHLQconst [j1] x1:(MOVBload [i1] {s} p mem))) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVWload [i0] {s} p mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVWload [i0] {s} p mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -36367,10 +36367,10 @@ func rewriteValueAMD64_OpAMD64ORQ_30(v *Value) bool { if mem != x1.Args[1] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x1.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -36387,8 +36387,8 @@ func rewriteValueAMD64_OpAMD64ORQ_30(v *Value) bool { return true } // match: (ORQ or:(ORQ y s0:(SHLQconst [j0] x0:(MOVBload [i0] {s} p mem))) s1:(SHLQconst [j1] x1:(MOVBload [i1] {s} p mem))) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVWload [i0] {s} p mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVWload [i0] {s} p mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -36430,10 +36430,10 @@ func rewriteValueAMD64_OpAMD64ORQ_30(v *Value) bool { if mem != x1.Args[1] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x1.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -36450,8 +36450,8 @@ func rewriteValueAMD64_OpAMD64ORQ_30(v *Value) bool { return true } // match: (ORQ s1:(SHLQconst [j1] x1:(MOVWload [i1] {s} p mem)) or:(ORQ s0:(SHLQconst [j0] x0:(MOVWload [i0] {s} p mem)) y)) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVLload [i0] {s} p mem)) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVLload [i0] {s} p mem)) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -36492,10 +36492,10 @@ func rewriteValueAMD64_OpAMD64ORQ_30(v *Value) bool { if mem != x0.Args[1] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x0.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -36512,8 +36512,8 @@ func rewriteValueAMD64_OpAMD64ORQ_30(v *Value) bool { return true } // match: (ORQ s1:(SHLQconst [j1] x1:(MOVWload [i1] {s} p mem)) or:(ORQ y s0:(SHLQconst [j0] x0:(MOVWload [i0] {s} p mem)))) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVLload [i0] {s} p mem)) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVLload [i0] {s} p mem)) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -36555,10 +36555,10 @@ func rewriteValueAMD64_OpAMD64ORQ_30(v *Value) bool { if mem != x0.Args[1] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x0.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -36575,8 +36575,8 @@ func rewriteValueAMD64_OpAMD64ORQ_30(v *Value) bool { return true } // match: (ORQ or:(ORQ s0:(SHLQconst [j0] x0:(MOVWload [i0] {s} p mem)) y) s1:(SHLQconst [j1] x1:(MOVWload [i1] {s} p mem))) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVLload [i0] {s} p mem)) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVLload [i0] {s} p mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -36617,10 +36617,10 @@ func rewriteValueAMD64_OpAMD64ORQ_30(v *Value) bool { if mem != x1.Args[1] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x1.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -36637,8 +36637,8 @@ func rewriteValueAMD64_OpAMD64ORQ_30(v *Value) bool { return true } // match: (ORQ or:(ORQ y s0:(SHLQconst [j0] x0:(MOVWload [i0] {s} p mem))) s1:(SHLQconst [j1] x1:(MOVWload [i1] {s} p mem))) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVLload [i0] {s} p mem)) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVLload [i0] {s} p mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -36680,10 +36680,10 @@ func rewriteValueAMD64_OpAMD64ORQ_30(v *Value) bool { if mem != x1.Args[1] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x1.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -37987,8 +37987,8 @@ func rewriteValueAMD64_OpAMD64ORQ_60(v *Value) bool { return true } // match: (ORQ s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)) or:(ORQ s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)) y)) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -38033,10 +38033,10 @@ func rewriteValueAMD64_OpAMD64ORQ_60(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -38054,8 +38054,8 @@ func rewriteValueAMD64_OpAMD64ORQ_60(v *Value) bool { return true } // match: (ORQ s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)) or:(ORQ s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)) y)) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -38100,10 +38100,10 @@ func rewriteValueAMD64_OpAMD64ORQ_60(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -38121,8 +38121,8 @@ func rewriteValueAMD64_OpAMD64ORQ_60(v *Value) bool { return true } // match: (ORQ s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)) or:(ORQ s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem)) y)) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -38167,10 +38167,10 @@ func rewriteValueAMD64_OpAMD64ORQ_60(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -38188,8 +38188,8 @@ func rewriteValueAMD64_OpAMD64ORQ_60(v *Value) bool { return true } // match: (ORQ s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)) or:(ORQ s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem)) y)) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -38234,10 +38234,10 @@ func rewriteValueAMD64_OpAMD64ORQ_60(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -38255,8 +38255,8 @@ func rewriteValueAMD64_OpAMD64ORQ_60(v *Value) bool { return true } // match: (ORQ s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)) or:(ORQ y s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)))) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -38302,10 +38302,10 @@ func rewriteValueAMD64_OpAMD64ORQ_60(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -38323,8 +38323,8 @@ func rewriteValueAMD64_OpAMD64ORQ_60(v *Value) bool { return true } // match: (ORQ s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)) or:(ORQ y s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)))) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -38370,10 +38370,10 @@ func rewriteValueAMD64_OpAMD64ORQ_60(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -38391,8 +38391,8 @@ func rewriteValueAMD64_OpAMD64ORQ_60(v *Value) bool { return true } // match: (ORQ s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)) or:(ORQ y s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem)))) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -38438,10 +38438,10 @@ func rewriteValueAMD64_OpAMD64ORQ_60(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -38464,8 +38464,8 @@ func rewriteValueAMD64_OpAMD64ORQ_70(v *Value) bool { b := v.Block typ := &b.Func.Config.Types // match: (ORQ s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)) or:(ORQ y s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem)))) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -38511,10 +38511,10 @@ func rewriteValueAMD64_OpAMD64ORQ_70(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -38532,8 +38532,8 @@ func rewriteValueAMD64_OpAMD64ORQ_70(v *Value) bool { return true } // match: (ORQ or:(ORQ s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)) y) s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem))) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -38578,10 +38578,10 @@ func rewriteValueAMD64_OpAMD64ORQ_70(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -38599,8 +38599,8 @@ func rewriteValueAMD64_OpAMD64ORQ_70(v *Value) bool { return true } // match: (ORQ or:(ORQ s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem)) y) s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem))) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -38645,10 +38645,10 @@ func rewriteValueAMD64_OpAMD64ORQ_70(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -38666,8 +38666,8 @@ func rewriteValueAMD64_OpAMD64ORQ_70(v *Value) bool { return true } // match: (ORQ or:(ORQ y s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem))) s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem))) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -38713,10 +38713,10 @@ func rewriteValueAMD64_OpAMD64ORQ_70(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -38734,8 +38734,8 @@ func rewriteValueAMD64_OpAMD64ORQ_70(v *Value) bool { return true } // match: (ORQ or:(ORQ y s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem))) s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem))) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -38781,10 +38781,10 @@ func rewriteValueAMD64_OpAMD64ORQ_70(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -38802,8 +38802,8 @@ func rewriteValueAMD64_OpAMD64ORQ_70(v *Value) bool { return true } // match: (ORQ or:(ORQ s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)) y) s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem))) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -38848,10 +38848,10 @@ func rewriteValueAMD64_OpAMD64ORQ_70(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -38869,8 +38869,8 @@ func rewriteValueAMD64_OpAMD64ORQ_70(v *Value) bool { return true } // match: (ORQ or:(ORQ s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem)) y) s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem))) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -38915,10 +38915,10 @@ func rewriteValueAMD64_OpAMD64ORQ_70(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -38936,8 +38936,8 @@ func rewriteValueAMD64_OpAMD64ORQ_70(v *Value) bool { return true } // match: (ORQ or:(ORQ y s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem))) s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem))) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -38983,10 +38983,10 @@ func rewriteValueAMD64_OpAMD64ORQ_70(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -39004,8 +39004,8 @@ func rewriteValueAMD64_OpAMD64ORQ_70(v *Value) bool { return true } // match: (ORQ or:(ORQ y s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem))) s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem))) - // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVWloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -39051,10 +39051,10 @@ func rewriteValueAMD64_OpAMD64ORQ_70(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -39072,8 +39072,8 @@ func rewriteValueAMD64_OpAMD64ORQ_70(v *Value) bool { return true } // match: (ORQ s1:(SHLQconst [j1] x1:(MOVWloadidx1 [i1] {s} p idx mem)) or:(ORQ s0:(SHLQconst [j0] x0:(MOVWloadidx1 [i0] {s} p idx mem)) y)) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -39118,10 +39118,10 @@ func rewriteValueAMD64_OpAMD64ORQ_70(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -39144,8 +39144,8 @@ func rewriteValueAMD64_OpAMD64ORQ_80(v *Value) bool { b := v.Block typ := &b.Func.Config.Types // match: (ORQ s1:(SHLQconst [j1] x1:(MOVWloadidx1 [i1] {s} idx p mem)) or:(ORQ s0:(SHLQconst [j0] x0:(MOVWloadidx1 [i0] {s} p idx mem)) y)) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -39190,10 +39190,10 @@ func rewriteValueAMD64_OpAMD64ORQ_80(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -39211,8 +39211,8 @@ func rewriteValueAMD64_OpAMD64ORQ_80(v *Value) bool { return true } // match: (ORQ s1:(SHLQconst [j1] x1:(MOVWloadidx1 [i1] {s} p idx mem)) or:(ORQ s0:(SHLQconst [j0] x0:(MOVWloadidx1 [i0] {s} idx p mem)) y)) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -39257,10 +39257,10 @@ func rewriteValueAMD64_OpAMD64ORQ_80(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -39278,8 +39278,8 @@ func rewriteValueAMD64_OpAMD64ORQ_80(v *Value) bool { return true } // match: (ORQ s1:(SHLQconst [j1] x1:(MOVWloadidx1 [i1] {s} idx p mem)) or:(ORQ s0:(SHLQconst [j0] x0:(MOVWloadidx1 [i0] {s} idx p mem)) y)) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -39324,10 +39324,10 @@ func rewriteValueAMD64_OpAMD64ORQ_80(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -39345,8 +39345,8 @@ func rewriteValueAMD64_OpAMD64ORQ_80(v *Value) bool { return true } // match: (ORQ s1:(SHLQconst [j1] x1:(MOVWloadidx1 [i1] {s} p idx mem)) or:(ORQ y s0:(SHLQconst [j0] x0:(MOVWloadidx1 [i0] {s} p idx mem)))) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -39392,10 +39392,10 @@ func rewriteValueAMD64_OpAMD64ORQ_80(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -39413,8 +39413,8 @@ func rewriteValueAMD64_OpAMD64ORQ_80(v *Value) bool { return true } // match: (ORQ s1:(SHLQconst [j1] x1:(MOVWloadidx1 [i1] {s} idx p mem)) or:(ORQ y s0:(SHLQconst [j0] x0:(MOVWloadidx1 [i0] {s} p idx mem)))) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -39460,10 +39460,10 @@ func rewriteValueAMD64_OpAMD64ORQ_80(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -39481,8 +39481,8 @@ func rewriteValueAMD64_OpAMD64ORQ_80(v *Value) bool { return true } // match: (ORQ s1:(SHLQconst [j1] x1:(MOVWloadidx1 [i1] {s} p idx mem)) or:(ORQ y s0:(SHLQconst [j0] x0:(MOVWloadidx1 [i0] {s} idx p mem)))) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -39528,10 +39528,10 @@ func rewriteValueAMD64_OpAMD64ORQ_80(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -39549,8 +39549,8 @@ func rewriteValueAMD64_OpAMD64ORQ_80(v *Value) bool { return true } // match: (ORQ s1:(SHLQconst [j1] x1:(MOVWloadidx1 [i1] {s} idx p mem)) or:(ORQ y s0:(SHLQconst [j0] x0:(MOVWloadidx1 [i0] {s} idx p mem)))) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -39596,10 +39596,10 @@ func rewriteValueAMD64_OpAMD64ORQ_80(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -39617,8 +39617,8 @@ func rewriteValueAMD64_OpAMD64ORQ_80(v *Value) bool { return true } // match: (ORQ or:(ORQ s0:(SHLQconst [j0] x0:(MOVWloadidx1 [i0] {s} p idx mem)) y) s1:(SHLQconst [j1] x1:(MOVWloadidx1 [i1] {s} p idx mem))) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -39663,10 +39663,10 @@ func rewriteValueAMD64_OpAMD64ORQ_80(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -39684,8 +39684,8 @@ func rewriteValueAMD64_OpAMD64ORQ_80(v *Value) bool { return true } // match: (ORQ or:(ORQ s0:(SHLQconst [j0] x0:(MOVWloadidx1 [i0] {s} idx p mem)) y) s1:(SHLQconst [j1] x1:(MOVWloadidx1 [i1] {s} p idx mem))) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -39730,10 +39730,10 @@ func rewriteValueAMD64_OpAMD64ORQ_80(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -39751,8 +39751,8 @@ func rewriteValueAMD64_OpAMD64ORQ_80(v *Value) bool { return true } // match: (ORQ or:(ORQ y s0:(SHLQconst [j0] x0:(MOVWloadidx1 [i0] {s} p idx mem))) s1:(SHLQconst [j1] x1:(MOVWloadidx1 [i1] {s} p idx mem))) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -39798,10 +39798,10 @@ func rewriteValueAMD64_OpAMD64ORQ_80(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -39824,8 +39824,8 @@ func rewriteValueAMD64_OpAMD64ORQ_90(v *Value) bool { b := v.Block typ := &b.Func.Config.Types // match: (ORQ or:(ORQ y s0:(SHLQconst [j0] x0:(MOVWloadidx1 [i0] {s} idx p mem))) s1:(SHLQconst [j1] x1:(MOVWloadidx1 [i1] {s} p idx mem))) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -39871,10 +39871,10 @@ func rewriteValueAMD64_OpAMD64ORQ_90(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -39892,8 +39892,8 @@ func rewriteValueAMD64_OpAMD64ORQ_90(v *Value) bool { return true } // match: (ORQ or:(ORQ s0:(SHLQconst [j0] x0:(MOVWloadidx1 [i0] {s} p idx mem)) y) s1:(SHLQconst [j1] x1:(MOVWloadidx1 [i1] {s} idx p mem))) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -39938,10 +39938,10 @@ func rewriteValueAMD64_OpAMD64ORQ_90(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -39959,8 +39959,8 @@ func rewriteValueAMD64_OpAMD64ORQ_90(v *Value) bool { return true } // match: (ORQ or:(ORQ s0:(SHLQconst [j0] x0:(MOVWloadidx1 [i0] {s} idx p mem)) y) s1:(SHLQconst [j1] x1:(MOVWloadidx1 [i1] {s} idx p mem))) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -40005,10 +40005,10 @@ func rewriteValueAMD64_OpAMD64ORQ_90(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -40026,8 +40026,8 @@ func rewriteValueAMD64_OpAMD64ORQ_90(v *Value) bool { return true } // match: (ORQ or:(ORQ y s0:(SHLQconst [j0] x0:(MOVWloadidx1 [i0] {s} p idx mem))) s1:(SHLQconst [j1] x1:(MOVWloadidx1 [i1] {s} idx p mem))) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -40073,10 +40073,10 @@ func rewriteValueAMD64_OpAMD64ORQ_90(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -40094,8 +40094,8 @@ func rewriteValueAMD64_OpAMD64ORQ_90(v *Value) bool { return true } // match: (ORQ or:(ORQ y s0:(SHLQconst [j0] x0:(MOVWloadidx1 [i0] {s} idx p mem))) s1:(SHLQconst [j1] x1:(MOVWloadidx1 [i1] {s} idx p mem))) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j0] (MOVLloadidx1 [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -40141,10 +40141,10 @@ func rewriteValueAMD64_OpAMD64ORQ_90(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -40513,8 +40513,8 @@ func rewriteValueAMD64_OpAMD64ORQ_100(v *Value) bool { return true } // match: (ORQ s0:(SHLQconst [j0] x0:(MOVBload [i0] {s} p mem)) or:(ORQ s1:(SHLQconst [j1] x1:(MOVBload [i1] {s} p mem)) y)) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWload [i0] {s} p mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWload [i0] {s} p mem))) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -40555,10 +40555,10 @@ func rewriteValueAMD64_OpAMD64ORQ_100(v *Value) bool { if mem != x1.Args[1] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x1.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -40578,8 +40578,8 @@ func rewriteValueAMD64_OpAMD64ORQ_100(v *Value) bool { return true } // match: (ORQ s0:(SHLQconst [j0] x0:(MOVBload [i0] {s} p mem)) or:(ORQ y s1:(SHLQconst [j1] x1:(MOVBload [i1] {s} p mem)))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWload [i0] {s} p mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWload [i0] {s} p mem))) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -40621,10 +40621,10 @@ func rewriteValueAMD64_OpAMD64ORQ_100(v *Value) bool { if mem != x1.Args[1] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x1.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -40644,8 +40644,8 @@ func rewriteValueAMD64_OpAMD64ORQ_100(v *Value) bool { return true } // match: (ORQ or:(ORQ s1:(SHLQconst [j1] x1:(MOVBload [i1] {s} p mem)) y) s0:(SHLQconst [j0] x0:(MOVBload [i0] {s} p mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWload [i0] {s} p mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWload [i0] {s} p mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -40686,10 +40686,10 @@ func rewriteValueAMD64_OpAMD64ORQ_100(v *Value) bool { if mem != x0.Args[1] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x0.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -40709,8 +40709,8 @@ func rewriteValueAMD64_OpAMD64ORQ_100(v *Value) bool { return true } // match: (ORQ or:(ORQ y s1:(SHLQconst [j1] x1:(MOVBload [i1] {s} p mem))) s0:(SHLQconst [j0] x0:(MOVBload [i0] {s} p mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWload [i0] {s} p mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWload [i0] {s} p mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -40752,10 +40752,10 @@ func rewriteValueAMD64_OpAMD64ORQ_100(v *Value) bool { if mem != x0.Args[1] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x0.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -40775,8 +40775,8 @@ func rewriteValueAMD64_OpAMD64ORQ_100(v *Value) bool { return true } // match: (ORQ s0:(SHLQconst [j0] r0:(ROLWconst [8] x0:(MOVWload [i0] {s} p mem))) or:(ORQ s1:(SHLQconst [j1] r1:(ROLWconst [8] x1:(MOVWload [i1] {s} p mem))) y)) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (BSWAPL (MOVLload [i0] {s} p mem))) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (BSWAPL (MOVLload [i0] {s} p mem))) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -40831,10 +40831,10 @@ func rewriteValueAMD64_OpAMD64ORQ_100(v *Value) bool { if mem != x1.Args[1] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x1.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -40853,8 +40853,8 @@ func rewriteValueAMD64_OpAMD64ORQ_100(v *Value) bool { return true } // match: (ORQ s0:(SHLQconst [j0] r0:(ROLWconst [8] x0:(MOVWload [i0] {s} p mem))) or:(ORQ y s1:(SHLQconst [j1] r1:(ROLWconst [8] x1:(MOVWload [i1] {s} p mem))))) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (BSWAPL (MOVLload [i0] {s} p mem))) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (BSWAPL (MOVLload [i0] {s} p mem))) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -40910,10 +40910,10 @@ func rewriteValueAMD64_OpAMD64ORQ_100(v *Value) bool { if mem != x1.Args[1] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x1.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -40932,8 +40932,8 @@ func rewriteValueAMD64_OpAMD64ORQ_100(v *Value) bool { return true } // match: (ORQ or:(ORQ s1:(SHLQconst [j1] r1:(ROLWconst [8] x1:(MOVWload [i1] {s} p mem))) y) s0:(SHLQconst [j0] r0:(ROLWconst [8] x0:(MOVWload [i0] {s} p mem)))) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (BSWAPL (MOVLload [i0] {s} p mem))) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (BSWAPL (MOVLload [i0] {s} p mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -40988,10 +40988,10 @@ func rewriteValueAMD64_OpAMD64ORQ_100(v *Value) bool { if mem != x0.Args[1] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x0.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -41010,8 +41010,8 @@ func rewriteValueAMD64_OpAMD64ORQ_100(v *Value) bool { return true } // match: (ORQ or:(ORQ y s1:(SHLQconst [j1] r1:(ROLWconst [8] x1:(MOVWload [i1] {s} p mem)))) s0:(SHLQconst [j0] r0:(ROLWconst [8] x0:(MOVWload [i0] {s} p mem)))) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (BSWAPL (MOVLload [i0] {s} p mem))) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (BSWAPL (MOVLload [i0] {s} p mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -41067,10 +41067,10 @@ func rewriteValueAMD64_OpAMD64ORQ_100(v *Value) bool { if mem != x0.Args[1] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x0.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -42608,8 +42608,8 @@ func rewriteValueAMD64_OpAMD64ORQ_130(v *Value) bool { return true } // match: (ORQ s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)) or:(ORQ s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)) y)) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -42654,10 +42654,10 @@ func rewriteValueAMD64_OpAMD64ORQ_130(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -42678,8 +42678,8 @@ func rewriteValueAMD64_OpAMD64ORQ_130(v *Value) bool { return true } // match: (ORQ s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem)) or:(ORQ s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)) y)) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -42724,10 +42724,10 @@ func rewriteValueAMD64_OpAMD64ORQ_130(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -42748,8 +42748,8 @@ func rewriteValueAMD64_OpAMD64ORQ_130(v *Value) bool { return true } // match: (ORQ s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)) or:(ORQ s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)) y)) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -42794,10 +42794,10 @@ func rewriteValueAMD64_OpAMD64ORQ_130(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -42818,8 +42818,8 @@ func rewriteValueAMD64_OpAMD64ORQ_130(v *Value) bool { return true } // match: (ORQ s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem)) or:(ORQ s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)) y)) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -42864,10 +42864,10 @@ func rewriteValueAMD64_OpAMD64ORQ_130(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -42888,8 +42888,8 @@ func rewriteValueAMD64_OpAMD64ORQ_130(v *Value) bool { return true } // match: (ORQ s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)) or:(ORQ y s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -42935,10 +42935,10 @@ func rewriteValueAMD64_OpAMD64ORQ_130(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -42959,8 +42959,8 @@ func rewriteValueAMD64_OpAMD64ORQ_130(v *Value) bool { return true } // match: (ORQ s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem)) or:(ORQ y s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -43006,10 +43006,10 @@ func rewriteValueAMD64_OpAMD64ORQ_130(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -43030,8 +43030,8 @@ func rewriteValueAMD64_OpAMD64ORQ_130(v *Value) bool { return true } // match: (ORQ s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem)) or:(ORQ y s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -43077,10 +43077,10 @@ func rewriteValueAMD64_OpAMD64ORQ_130(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -43106,8 +43106,8 @@ func rewriteValueAMD64_OpAMD64ORQ_140(v *Value) bool { b := v.Block typ := &b.Func.Config.Types // match: (ORQ s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem)) or:(ORQ y s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -43153,10 +43153,10 @@ func rewriteValueAMD64_OpAMD64ORQ_140(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -43177,8 +43177,8 @@ func rewriteValueAMD64_OpAMD64ORQ_140(v *Value) bool { return true } // match: (ORQ or:(ORQ s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)) y) s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -43223,10 +43223,10 @@ func rewriteValueAMD64_OpAMD64ORQ_140(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -43247,8 +43247,8 @@ func rewriteValueAMD64_OpAMD64ORQ_140(v *Value) bool { return true } // match: (ORQ or:(ORQ s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)) y) s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -43293,10 +43293,10 @@ func rewriteValueAMD64_OpAMD64ORQ_140(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -43317,8 +43317,8 @@ func rewriteValueAMD64_OpAMD64ORQ_140(v *Value) bool { return true } // match: (ORQ or:(ORQ y s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem))) s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -43364,10 +43364,10 @@ func rewriteValueAMD64_OpAMD64ORQ_140(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -43388,8 +43388,8 @@ func rewriteValueAMD64_OpAMD64ORQ_140(v *Value) bool { return true } // match: (ORQ or:(ORQ y s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem))) s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} p idx mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -43435,10 +43435,10 @@ func rewriteValueAMD64_OpAMD64ORQ_140(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -43459,8 +43459,8 @@ func rewriteValueAMD64_OpAMD64ORQ_140(v *Value) bool { return true } // match: (ORQ or:(ORQ s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem)) y) s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -43505,10 +43505,10 @@ func rewriteValueAMD64_OpAMD64ORQ_140(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -43529,8 +43529,8 @@ func rewriteValueAMD64_OpAMD64ORQ_140(v *Value) bool { return true } // match: (ORQ or:(ORQ s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem)) y) s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -43575,10 +43575,10 @@ func rewriteValueAMD64_OpAMD64ORQ_140(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -43599,8 +43599,8 @@ func rewriteValueAMD64_OpAMD64ORQ_140(v *Value) bool { return true } // match: (ORQ or:(ORQ y s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} p idx mem))) s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -43646,10 +43646,10 @@ func rewriteValueAMD64_OpAMD64ORQ_140(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -43670,8 +43670,8 @@ func rewriteValueAMD64_OpAMD64ORQ_140(v *Value) bool { return true } // match: (ORQ or:(ORQ y s1:(SHLQconst [j1] x1:(MOVBloadidx1 [i1] {s} idx p mem))) s0:(SHLQconst [j0] x0:(MOVBloadidx1 [i0] {s} idx p mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (ROLWconst [8] (MOVWloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -43717,10 +43717,10 @@ func rewriteValueAMD64_OpAMD64ORQ_140(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -43741,8 +43741,8 @@ func rewriteValueAMD64_OpAMD64ORQ_140(v *Value) bool { return true } // match: (ORQ s0:(SHLQconst [j0] r0:(ROLWconst [8] x0:(MOVWloadidx1 [i0] {s} p idx mem))) or:(ORQ s1:(SHLQconst [j1] r1:(ROLWconst [8] x1:(MOVWloadidx1 [i1] {s} p idx mem))) y)) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -43801,10 +43801,10 @@ func rewriteValueAMD64_OpAMD64ORQ_140(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -43829,8 +43829,8 @@ func rewriteValueAMD64_OpAMD64ORQ_150(v *Value) bool { b := v.Block typ := &b.Func.Config.Types // match: (ORQ s0:(SHLQconst [j0] r0:(ROLWconst [8] x0:(MOVWloadidx1 [i0] {s} idx p mem))) or:(ORQ s1:(SHLQconst [j1] r1:(ROLWconst [8] x1:(MOVWloadidx1 [i1] {s} p idx mem))) y)) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -43889,10 +43889,10 @@ func rewriteValueAMD64_OpAMD64ORQ_150(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -43912,8 +43912,8 @@ func rewriteValueAMD64_OpAMD64ORQ_150(v *Value) bool { return true } // match: (ORQ s0:(SHLQconst [j0] r0:(ROLWconst [8] x0:(MOVWloadidx1 [i0] {s} p idx mem))) or:(ORQ s1:(SHLQconst [j1] r1:(ROLWconst [8] x1:(MOVWloadidx1 [i1] {s} idx p mem))) y)) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -43972,10 +43972,10 @@ func rewriteValueAMD64_OpAMD64ORQ_150(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -43995,8 +43995,8 @@ func rewriteValueAMD64_OpAMD64ORQ_150(v *Value) bool { return true } // match: (ORQ s0:(SHLQconst [j0] r0:(ROLWconst [8] x0:(MOVWloadidx1 [i0] {s} idx p mem))) or:(ORQ s1:(SHLQconst [j1] r1:(ROLWconst [8] x1:(MOVWloadidx1 [i1] {s} idx p mem))) y)) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -44055,10 +44055,10 @@ func rewriteValueAMD64_OpAMD64ORQ_150(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -44078,8 +44078,8 @@ func rewriteValueAMD64_OpAMD64ORQ_150(v *Value) bool { return true } // match: (ORQ s0:(SHLQconst [j0] r0:(ROLWconst [8] x0:(MOVWloadidx1 [i0] {s} p idx mem))) or:(ORQ y s1:(SHLQconst [j1] r1:(ROLWconst [8] x1:(MOVWloadidx1 [i1] {s} p idx mem))))) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -44139,10 +44139,10 @@ func rewriteValueAMD64_OpAMD64ORQ_150(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -44162,8 +44162,8 @@ func rewriteValueAMD64_OpAMD64ORQ_150(v *Value) bool { return true } // match: (ORQ s0:(SHLQconst [j0] r0:(ROLWconst [8] x0:(MOVWloadidx1 [i0] {s} idx p mem))) or:(ORQ y s1:(SHLQconst [j1] r1:(ROLWconst [8] x1:(MOVWloadidx1 [i1] {s} p idx mem))))) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -44223,10 +44223,10 @@ func rewriteValueAMD64_OpAMD64ORQ_150(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -44246,8 +44246,8 @@ func rewriteValueAMD64_OpAMD64ORQ_150(v *Value) bool { return true } // match: (ORQ s0:(SHLQconst [j0] r0:(ROLWconst [8] x0:(MOVWloadidx1 [i0] {s} p idx mem))) or:(ORQ y s1:(SHLQconst [j1] r1:(ROLWconst [8] x1:(MOVWloadidx1 [i1] {s} idx p mem))))) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -44307,10 +44307,10 @@ func rewriteValueAMD64_OpAMD64ORQ_150(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -44330,8 +44330,8 @@ func rewriteValueAMD64_OpAMD64ORQ_150(v *Value) bool { return true } // match: (ORQ s0:(SHLQconst [j0] r0:(ROLWconst [8] x0:(MOVWloadidx1 [i0] {s} idx p mem))) or:(ORQ y s1:(SHLQconst [j1] r1:(ROLWconst [8] x1:(MOVWloadidx1 [i1] {s} idx p mem))))) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -44391,10 +44391,10 @@ func rewriteValueAMD64_OpAMD64ORQ_150(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -44414,8 +44414,8 @@ func rewriteValueAMD64_OpAMD64ORQ_150(v *Value) bool { return true } // match: (ORQ or:(ORQ s1:(SHLQconst [j1] r1:(ROLWconst [8] x1:(MOVWloadidx1 [i1] {s} p idx mem))) y) s0:(SHLQconst [j0] r0:(ROLWconst [8] x0:(MOVWloadidx1 [i0] {s} p idx mem)))) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -44474,10 +44474,10 @@ func rewriteValueAMD64_OpAMD64ORQ_150(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -44497,8 +44497,8 @@ func rewriteValueAMD64_OpAMD64ORQ_150(v *Value) bool { return true } // match: (ORQ or:(ORQ s1:(SHLQconst [j1] r1:(ROLWconst [8] x1:(MOVWloadidx1 [i1] {s} idx p mem))) y) s0:(SHLQconst [j0] r0:(ROLWconst [8] x0:(MOVWloadidx1 [i0] {s} p idx mem)))) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -44557,10 +44557,10 @@ func rewriteValueAMD64_OpAMD64ORQ_150(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -44580,8 +44580,8 @@ func rewriteValueAMD64_OpAMD64ORQ_150(v *Value) bool { return true } // match: (ORQ or:(ORQ y s1:(SHLQconst [j1] r1:(ROLWconst [8] x1:(MOVWloadidx1 [i1] {s} p idx mem)))) s0:(SHLQconst [j0] r0:(ROLWconst [8] x0:(MOVWloadidx1 [i0] {s} p idx mem)))) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -44641,10 +44641,10 @@ func rewriteValueAMD64_OpAMD64ORQ_150(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -44669,8 +44669,8 @@ func rewriteValueAMD64_OpAMD64ORQ_160(v *Value) bool { b := v.Block typ := &b.Func.Config.Types // match: (ORQ or:(ORQ y s1:(SHLQconst [j1] r1:(ROLWconst [8] x1:(MOVWloadidx1 [i1] {s} idx p mem)))) s0:(SHLQconst [j0] r0:(ROLWconst [8] x0:(MOVWloadidx1 [i0] {s} p idx mem)))) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -44730,10 +44730,10 @@ func rewriteValueAMD64_OpAMD64ORQ_160(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -44753,8 +44753,8 @@ func rewriteValueAMD64_OpAMD64ORQ_160(v *Value) bool { return true } // match: (ORQ or:(ORQ s1:(SHLQconst [j1] r1:(ROLWconst [8] x1:(MOVWloadidx1 [i1] {s} p idx mem))) y) s0:(SHLQconst [j0] r0:(ROLWconst [8] x0:(MOVWloadidx1 [i0] {s} idx p mem)))) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -44813,10 +44813,10 @@ func rewriteValueAMD64_OpAMD64ORQ_160(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -44836,8 +44836,8 @@ func rewriteValueAMD64_OpAMD64ORQ_160(v *Value) bool { return true } // match: (ORQ or:(ORQ s1:(SHLQconst [j1] r1:(ROLWconst [8] x1:(MOVWloadidx1 [i1] {s} idx p mem))) y) s0:(SHLQconst [j0] r0:(ROLWconst [8] x0:(MOVWloadidx1 [i0] {s} idx p mem)))) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -44896,10 +44896,10 @@ func rewriteValueAMD64_OpAMD64ORQ_160(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -44919,8 +44919,8 @@ func rewriteValueAMD64_OpAMD64ORQ_160(v *Value) bool { return true } // match: (ORQ or:(ORQ y s1:(SHLQconst [j1] r1:(ROLWconst [8] x1:(MOVWloadidx1 [i1] {s} p idx mem)))) s0:(SHLQconst [j0] r0:(ROLWconst [8] x0:(MOVWloadidx1 [i0] {s} idx p mem)))) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -44980,10 +44980,10 @@ func rewriteValueAMD64_OpAMD64ORQ_160(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -45003,8 +45003,8 @@ func rewriteValueAMD64_OpAMD64ORQ_160(v *Value) bool { return true } // match: (ORQ or:(ORQ y s1:(SHLQconst [j1] r1:(ROLWconst [8] x1:(MOVWloadidx1 [i1] {s} idx p mem)))) s0:(SHLQconst [j0] r0:(ROLWconst [8] x0:(MOVWloadidx1 [i0] {s} idx p mem)))) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORQ (SHLQconst [j1] (BSWAPL (MOVLloadidx1 [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -45064,10 +45064,10 @@ func rewriteValueAMD64_OpAMD64ORQ_160(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpAMD64ORQ, v.Type) v.reset(OpCopy) v.AddArg(v0) diff --git a/src/cmd/compile/internal/ssa/rewriteS390X.go b/src/cmd/compile/internal/ssa/rewriteS390X.go index 7781590f2a..fa1de9a7a6 100644 --- a/src/cmd/compile/internal/ssa/rewriteS390X.go +++ b/src/cmd/compile/internal/ssa/rewriteS390X.go @@ -23598,8 +23598,8 @@ func rewriteValueS390X_OpS390XOR_20(v *Value) bool { return true } // match: (OR s0:(SLDconst [j0] x0:(MOVBZload [i0] {s} p mem)) or:(OR s1:(SLDconst [j1] x1:(MOVBZload [i1] {s} p mem)) y)) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVHZload [i0] {s} p mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVHZload [i0] {s} p mem)) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -23640,10 +23640,10 @@ func rewriteValueS390X_OpS390XOR_20(v *Value) bool { if mem != x1.Args[1] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x1.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -23660,8 +23660,8 @@ func rewriteValueS390X_OpS390XOR_20(v *Value) bool { return true } // match: (OR s0:(SLDconst [j0] x0:(MOVBZload [i0] {s} p mem)) or:(OR y s1:(SLDconst [j1] x1:(MOVBZload [i1] {s} p mem)))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVHZload [i0] {s} p mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVHZload [i0] {s} p mem)) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -23703,10 +23703,10 @@ func rewriteValueS390X_OpS390XOR_20(v *Value) bool { if mem != x1.Args[1] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x1.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -23723,8 +23723,8 @@ func rewriteValueS390X_OpS390XOR_20(v *Value) bool { return true } // match: (OR or:(OR s1:(SLDconst [j1] x1:(MOVBZload [i1] {s} p mem)) y) s0:(SLDconst [j0] x0:(MOVBZload [i0] {s} p mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVHZload [i0] {s} p mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVHZload [i0] {s} p mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -23765,10 +23765,10 @@ func rewriteValueS390X_OpS390XOR_20(v *Value) bool { if mem != x0.Args[1] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x0.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -23785,8 +23785,8 @@ func rewriteValueS390X_OpS390XOR_20(v *Value) bool { return true } // match: (OR or:(OR y s1:(SLDconst [j1] x1:(MOVBZload [i1] {s} p mem))) s0:(SLDconst [j0] x0:(MOVBZload [i0] {s} p mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVHZload [i0] {s} p mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVHZload [i0] {s} p mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -23828,10 +23828,10 @@ func rewriteValueS390X_OpS390XOR_20(v *Value) bool { if mem != x0.Args[1] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x0.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -23848,8 +23848,8 @@ func rewriteValueS390X_OpS390XOR_20(v *Value) bool { return true } // match: (OR s0:(SLDconst [j0] x0:(MOVHZload [i0] {s} p mem)) or:(OR s1:(SLDconst [j1] x1:(MOVHZload [i1] {s} p mem)) y)) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVWZload [i0] {s} p mem)) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVWZload [i0] {s} p mem)) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -23890,10 +23890,10 @@ func rewriteValueS390X_OpS390XOR_20(v *Value) bool { if mem != x1.Args[1] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x1.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -23910,8 +23910,8 @@ func rewriteValueS390X_OpS390XOR_20(v *Value) bool { return true } // match: (OR s0:(SLDconst [j0] x0:(MOVHZload [i0] {s} p mem)) or:(OR y s1:(SLDconst [j1] x1:(MOVHZload [i1] {s} p mem)))) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVWZload [i0] {s} p mem)) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVWZload [i0] {s} p mem)) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -23953,10 +23953,10 @@ func rewriteValueS390X_OpS390XOR_20(v *Value) bool { if mem != x1.Args[1] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x1.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -23973,8 +23973,8 @@ func rewriteValueS390X_OpS390XOR_20(v *Value) bool { return true } // match: (OR or:(OR s1:(SLDconst [j1] x1:(MOVHZload [i1] {s} p mem)) y) s0:(SLDconst [j0] x0:(MOVHZload [i0] {s} p mem))) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVWZload [i0] {s} p mem)) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVWZload [i0] {s} p mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -24015,10 +24015,10 @@ func rewriteValueS390X_OpS390XOR_20(v *Value) bool { if mem != x0.Args[1] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x0.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -24040,8 +24040,8 @@ func rewriteValueS390X_OpS390XOR_30(v *Value) bool { b := v.Block typ := &b.Func.Config.Types // match: (OR or:(OR y s1:(SLDconst [j1] x1:(MOVHZload [i1] {s} p mem))) s0:(SLDconst [j0] x0:(MOVHZload [i0] {s} p mem))) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVWZload [i0] {s} p mem)) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVWZload [i0] {s} p mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -24083,10 +24083,10 @@ func rewriteValueS390X_OpS390XOR_30(v *Value) bool { if mem != x0.Args[1] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x0.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -25385,8 +25385,8 @@ func rewriteValueS390X_OpS390XOR_50(v *Value) bool { return true } // match: (OR s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem)) or:(OR s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem)) y)) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -25431,10 +25431,10 @@ func rewriteValueS390X_OpS390XOR_50(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -25452,8 +25452,8 @@ func rewriteValueS390X_OpS390XOR_50(v *Value) bool { return true } // match: (OR s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem)) or:(OR s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem)) y)) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -25498,10 +25498,10 @@ func rewriteValueS390X_OpS390XOR_50(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -25519,8 +25519,8 @@ func rewriteValueS390X_OpS390XOR_50(v *Value) bool { return true } // match: (OR s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem)) or:(OR s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem)) y)) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -25565,10 +25565,10 @@ func rewriteValueS390X_OpS390XOR_50(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -25586,8 +25586,8 @@ func rewriteValueS390X_OpS390XOR_50(v *Value) bool { return true } // match: (OR s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem)) or:(OR s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem)) y)) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -25632,10 +25632,10 @@ func rewriteValueS390X_OpS390XOR_50(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -25653,8 +25653,8 @@ func rewriteValueS390X_OpS390XOR_50(v *Value) bool { return true } // match: (OR s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem)) or:(OR y s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem)))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -25700,10 +25700,10 @@ func rewriteValueS390X_OpS390XOR_50(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -25726,8 +25726,8 @@ func rewriteValueS390X_OpS390XOR_60(v *Value) bool { b := v.Block typ := &b.Func.Config.Types // match: (OR s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem)) or:(OR y s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem)))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -25773,10 +25773,10 @@ func rewriteValueS390X_OpS390XOR_60(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -25794,8 +25794,8 @@ func rewriteValueS390X_OpS390XOR_60(v *Value) bool { return true } // match: (OR s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem)) or:(OR y s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem)))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -25841,10 +25841,10 @@ func rewriteValueS390X_OpS390XOR_60(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -25862,8 +25862,8 @@ func rewriteValueS390X_OpS390XOR_60(v *Value) bool { return true } // match: (OR s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem)) or:(OR y s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem)))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -25909,10 +25909,10 @@ func rewriteValueS390X_OpS390XOR_60(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -25930,8 +25930,8 @@ func rewriteValueS390X_OpS390XOR_60(v *Value) bool { return true } // match: (OR or:(OR s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem)) y) s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -25976,10 +25976,10 @@ func rewriteValueS390X_OpS390XOR_60(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -25997,8 +25997,8 @@ func rewriteValueS390X_OpS390XOR_60(v *Value) bool { return true } // match: (OR or:(OR s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem)) y) s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -26043,10 +26043,10 @@ func rewriteValueS390X_OpS390XOR_60(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -26064,8 +26064,8 @@ func rewriteValueS390X_OpS390XOR_60(v *Value) bool { return true } // match: (OR or:(OR y s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem))) s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -26111,10 +26111,10 @@ func rewriteValueS390X_OpS390XOR_60(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -26132,8 +26132,8 @@ func rewriteValueS390X_OpS390XOR_60(v *Value) bool { return true } // match: (OR or:(OR y s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem))) s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -26179,10 +26179,10 @@ func rewriteValueS390X_OpS390XOR_60(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -26200,8 +26200,8 @@ func rewriteValueS390X_OpS390XOR_60(v *Value) bool { return true } // match: (OR or:(OR s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem)) y) s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -26246,10 +26246,10 @@ func rewriteValueS390X_OpS390XOR_60(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -26267,8 +26267,8 @@ func rewriteValueS390X_OpS390XOR_60(v *Value) bool { return true } // match: (OR or:(OR s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem)) y) s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -26313,10 +26313,10 @@ func rewriteValueS390X_OpS390XOR_60(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -26334,8 +26334,8 @@ func rewriteValueS390X_OpS390XOR_60(v *Value) bool { return true } // match: (OR or:(OR y s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem))) s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -26381,10 +26381,10 @@ func rewriteValueS390X_OpS390XOR_60(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -26407,8 +26407,8 @@ func rewriteValueS390X_OpS390XOR_70(v *Value) bool { b := v.Block typ := &b.Func.Config.Types // match: (OR or:(OR y s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem))) s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -26454,10 +26454,10 @@ func rewriteValueS390X_OpS390XOR_70(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -26475,8 +26475,8 @@ func rewriteValueS390X_OpS390XOR_70(v *Value) bool { return true } // match: (OR s0:(SLDconst [j0] x0:(MOVHZloadidx [i0] {s} p idx mem)) or:(OR s1:(SLDconst [j1] x1:(MOVHZloadidx [i1] {s} p idx mem)) y)) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -26521,10 +26521,10 @@ func rewriteValueS390X_OpS390XOR_70(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -26542,8 +26542,8 @@ func rewriteValueS390X_OpS390XOR_70(v *Value) bool { return true } // match: (OR s0:(SLDconst [j0] x0:(MOVHZloadidx [i0] {s} idx p mem)) or:(OR s1:(SLDconst [j1] x1:(MOVHZloadidx [i1] {s} p idx mem)) y)) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -26588,10 +26588,10 @@ func rewriteValueS390X_OpS390XOR_70(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -26609,8 +26609,8 @@ func rewriteValueS390X_OpS390XOR_70(v *Value) bool { return true } // match: (OR s0:(SLDconst [j0] x0:(MOVHZloadidx [i0] {s} p idx mem)) or:(OR s1:(SLDconst [j1] x1:(MOVHZloadidx [i1] {s} idx p mem)) y)) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -26655,10 +26655,10 @@ func rewriteValueS390X_OpS390XOR_70(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -26676,8 +26676,8 @@ func rewriteValueS390X_OpS390XOR_70(v *Value) bool { return true } // match: (OR s0:(SLDconst [j0] x0:(MOVHZloadidx [i0] {s} idx p mem)) or:(OR s1:(SLDconst [j1] x1:(MOVHZloadidx [i1] {s} idx p mem)) y)) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -26722,10 +26722,10 @@ func rewriteValueS390X_OpS390XOR_70(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -26743,8 +26743,8 @@ func rewriteValueS390X_OpS390XOR_70(v *Value) bool { return true } // match: (OR s0:(SLDconst [j0] x0:(MOVHZloadidx [i0] {s} p idx mem)) or:(OR y s1:(SLDconst [j1] x1:(MOVHZloadidx [i1] {s} p idx mem)))) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -26790,10 +26790,10 @@ func rewriteValueS390X_OpS390XOR_70(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -26811,8 +26811,8 @@ func rewriteValueS390X_OpS390XOR_70(v *Value) bool { return true } // match: (OR s0:(SLDconst [j0] x0:(MOVHZloadidx [i0] {s} idx p mem)) or:(OR y s1:(SLDconst [j1] x1:(MOVHZloadidx [i1] {s} p idx mem)))) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -26858,10 +26858,10 @@ func rewriteValueS390X_OpS390XOR_70(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -26879,8 +26879,8 @@ func rewriteValueS390X_OpS390XOR_70(v *Value) bool { return true } // match: (OR s0:(SLDconst [j0] x0:(MOVHZloadidx [i0] {s} p idx mem)) or:(OR y s1:(SLDconst [j1] x1:(MOVHZloadidx [i1] {s} idx p mem)))) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -26926,10 +26926,10 @@ func rewriteValueS390X_OpS390XOR_70(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -26947,8 +26947,8 @@ func rewriteValueS390X_OpS390XOR_70(v *Value) bool { return true } // match: (OR s0:(SLDconst [j0] x0:(MOVHZloadidx [i0] {s} idx p mem)) or:(OR y s1:(SLDconst [j1] x1:(MOVHZloadidx [i1] {s} idx p mem)))) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -26994,10 +26994,10 @@ func rewriteValueS390X_OpS390XOR_70(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -27015,8 +27015,8 @@ func rewriteValueS390X_OpS390XOR_70(v *Value) bool { return true } // match: (OR or:(OR s1:(SLDconst [j1] x1:(MOVHZloadidx [i1] {s} p idx mem)) y) s0:(SLDconst [j0] x0:(MOVHZloadidx [i0] {s} p idx mem))) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -27061,10 +27061,10 @@ func rewriteValueS390X_OpS390XOR_70(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -27087,8 +27087,8 @@ func rewriteValueS390X_OpS390XOR_80(v *Value) bool { b := v.Block typ := &b.Func.Config.Types // match: (OR or:(OR s1:(SLDconst [j1] x1:(MOVHZloadidx [i1] {s} idx p mem)) y) s0:(SLDconst [j0] x0:(MOVHZloadidx [i0] {s} p idx mem))) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -27133,10 +27133,10 @@ func rewriteValueS390X_OpS390XOR_80(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -27154,8 +27154,8 @@ func rewriteValueS390X_OpS390XOR_80(v *Value) bool { return true } // match: (OR or:(OR y s1:(SLDconst [j1] x1:(MOVHZloadidx [i1] {s} p idx mem))) s0:(SLDconst [j0] x0:(MOVHZloadidx [i0] {s} p idx mem))) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -27201,10 +27201,10 @@ func rewriteValueS390X_OpS390XOR_80(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -27222,8 +27222,8 @@ func rewriteValueS390X_OpS390XOR_80(v *Value) bool { return true } // match: (OR or:(OR y s1:(SLDconst [j1] x1:(MOVHZloadidx [i1] {s} idx p mem))) s0:(SLDconst [j0] x0:(MOVHZloadidx [i0] {s} p idx mem))) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -27269,10 +27269,10 @@ func rewriteValueS390X_OpS390XOR_80(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -27290,8 +27290,8 @@ func rewriteValueS390X_OpS390XOR_80(v *Value) bool { return true } // match: (OR or:(OR s1:(SLDconst [j1] x1:(MOVHZloadidx [i1] {s} p idx mem)) y) s0:(SLDconst [j0] x0:(MOVHZloadidx [i0] {s} idx p mem))) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -27336,10 +27336,10 @@ func rewriteValueS390X_OpS390XOR_80(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -27357,8 +27357,8 @@ func rewriteValueS390X_OpS390XOR_80(v *Value) bool { return true } // match: (OR or:(OR s1:(SLDconst [j1] x1:(MOVHZloadidx [i1] {s} idx p mem)) y) s0:(SLDconst [j0] x0:(MOVHZloadidx [i0] {s} idx p mem))) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -27403,10 +27403,10 @@ func rewriteValueS390X_OpS390XOR_80(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -27424,8 +27424,8 @@ func rewriteValueS390X_OpS390XOR_80(v *Value) bool { return true } // match: (OR or:(OR y s1:(SLDconst [j1] x1:(MOVHZloadidx [i1] {s} p idx mem))) s0:(SLDconst [j0] x0:(MOVHZloadidx [i0] {s} idx p mem))) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -27471,10 +27471,10 @@ func rewriteValueS390X_OpS390XOR_80(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -27492,8 +27492,8 @@ func rewriteValueS390X_OpS390XOR_80(v *Value) bool { return true } // match: (OR or:(OR y s1:(SLDconst [j1] x1:(MOVHZloadidx [i1] {s} idx p mem))) s0:(SLDconst [j0] x0:(MOVHZloadidx [i0] {s} idx p mem))) - // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+2 && j1 == j0-16 && j1 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j1] (MOVWZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -27539,10 +27539,10 @@ func rewriteValueS390X_OpS390XOR_80(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0-16 && j1%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -27893,8 +27893,8 @@ func rewriteValueS390X_OpS390XOR_90(v *Value) bool { return true } // match: (OR s1:(SLDconst [j1] x1:(MOVBZload [i1] {s} p mem)) or:(OR s0:(SLDconst [j0] x0:(MOVBZload [i0] {s} p mem)) y)) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVHZreg (MOVHBRload [i0] {s} p mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVHZreg (MOVHBRload [i0] {s} p mem))) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -27935,10 +27935,10 @@ func rewriteValueS390X_OpS390XOR_90(v *Value) bool { if mem != x0.Args[1] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x0.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -27957,8 +27957,8 @@ func rewriteValueS390X_OpS390XOR_90(v *Value) bool { return true } // match: (OR s1:(SLDconst [j1] x1:(MOVBZload [i1] {s} p mem)) or:(OR y s0:(SLDconst [j0] x0:(MOVBZload [i0] {s} p mem)))) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVHZreg (MOVHBRload [i0] {s} p mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVHZreg (MOVHBRload [i0] {s} p mem))) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -28000,10 +28000,10 @@ func rewriteValueS390X_OpS390XOR_90(v *Value) bool { if mem != x0.Args[1] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x0.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -28022,8 +28022,8 @@ func rewriteValueS390X_OpS390XOR_90(v *Value) bool { return true } // match: (OR or:(OR s0:(SLDconst [j0] x0:(MOVBZload [i0] {s} p mem)) y) s1:(SLDconst [j1] x1:(MOVBZload [i1] {s} p mem))) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVHZreg (MOVHBRload [i0] {s} p mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVHZreg (MOVHBRload [i0] {s} p mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -28064,10 +28064,10 @@ func rewriteValueS390X_OpS390XOR_90(v *Value) bool { if mem != x1.Args[1] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x1.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -28086,8 +28086,8 @@ func rewriteValueS390X_OpS390XOR_90(v *Value) bool { return true } // match: (OR or:(OR y s0:(SLDconst [j0] x0:(MOVBZload [i0] {s} p mem))) s1:(SLDconst [j1] x1:(MOVBZload [i1] {s} p mem))) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVHZreg (MOVHBRload [i0] {s} p mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVHZreg (MOVHBRload [i0] {s} p mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -28129,10 +28129,10 @@ func rewriteValueS390X_OpS390XOR_90(v *Value) bool { if mem != x1.Args[1] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x1.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -28151,8 +28151,8 @@ func rewriteValueS390X_OpS390XOR_90(v *Value) bool { return true } // match: (OR s1:(SLDconst [j1] r1:(MOVHZreg x1:(MOVHBRload [i1] {s} p mem))) or:(OR s0:(SLDconst [j0] r0:(MOVHZreg x0:(MOVHBRload [i0] {s} p mem))) y)) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVWZreg (MOVWBRload [i0] {s} p mem))) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVWZreg (MOVWBRload [i0] {s} p mem))) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -28201,10 +28201,10 @@ func rewriteValueS390X_OpS390XOR_90(v *Value) bool { if mem != x0.Args[1] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x0.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -28223,8 +28223,8 @@ func rewriteValueS390X_OpS390XOR_90(v *Value) bool { return true } // match: (OR s1:(SLDconst [j1] r1:(MOVHZreg x1:(MOVHBRload [i1] {s} p mem))) or:(OR y s0:(SLDconst [j0] r0:(MOVHZreg x0:(MOVHBRload [i0] {s} p mem))))) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVWZreg (MOVWBRload [i0] {s} p mem))) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVWZreg (MOVWBRload [i0] {s} p mem))) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -28274,10 +28274,10 @@ func rewriteValueS390X_OpS390XOR_90(v *Value) bool { if mem != x0.Args[1] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x0.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -28296,8 +28296,8 @@ func rewriteValueS390X_OpS390XOR_90(v *Value) bool { return true } // match: (OR or:(OR s0:(SLDconst [j0] r0:(MOVHZreg x0:(MOVHBRload [i0] {s} p mem))) y) s1:(SLDconst [j1] r1:(MOVHZreg x1:(MOVHBRload [i1] {s} p mem)))) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVWZreg (MOVWBRload [i0] {s} p mem))) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVWZreg (MOVWBRload [i0] {s} p mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -28346,10 +28346,10 @@ func rewriteValueS390X_OpS390XOR_90(v *Value) bool { if mem != x1.Args[1] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x1.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -28373,8 +28373,8 @@ func rewriteValueS390X_OpS390XOR_100(v *Value) bool { b := v.Block typ := &b.Func.Config.Types // match: (OR or:(OR y s0:(SLDconst [j0] r0:(MOVHZreg x0:(MOVHBRload [i0] {s} p mem)))) s1:(SLDconst [j1] r1:(MOVHZreg x1:(MOVHBRload [i1] {s} p mem)))) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVWZreg (MOVWBRload [i0] {s} p mem))) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVWZreg (MOVWBRload [i0] {s} p mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -28424,10 +28424,10 @@ func rewriteValueS390X_OpS390XOR_100(v *Value) bool { if mem != x1.Args[1] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x1.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -29888,8 +29888,8 @@ func rewriteValueS390X_OpS390XOR_120(v *Value) bool { return true } // match: (OR s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem)) or:(OR s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem)) y)) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -29934,10 +29934,10 @@ func rewriteValueS390X_OpS390XOR_120(v *Value) bool { if mem != x0.Args[2] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -29957,8 +29957,8 @@ func rewriteValueS390X_OpS390XOR_120(v *Value) bool { return true } // match: (OR s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem)) or:(OR s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem)) y)) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -30003,10 +30003,10 @@ func rewriteValueS390X_OpS390XOR_120(v *Value) bool { if mem != x0.Args[2] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -30026,8 +30026,8 @@ func rewriteValueS390X_OpS390XOR_120(v *Value) bool { return true } // match: (OR s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem)) or:(OR s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem)) y)) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -30072,10 +30072,10 @@ func rewriteValueS390X_OpS390XOR_120(v *Value) bool { if mem != x0.Args[2] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -30095,8 +30095,8 @@ func rewriteValueS390X_OpS390XOR_120(v *Value) bool { return true } // match: (OR s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem)) or:(OR s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem)) y)) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -30141,10 +30141,10 @@ func rewriteValueS390X_OpS390XOR_120(v *Value) bool { if mem != x0.Args[2] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -30164,8 +30164,8 @@ func rewriteValueS390X_OpS390XOR_120(v *Value) bool { return true } // match: (OR s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem)) or:(OR y s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem)))) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -30211,10 +30211,10 @@ func rewriteValueS390X_OpS390XOR_120(v *Value) bool { if mem != x0.Args[2] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -30239,8 +30239,8 @@ func rewriteValueS390X_OpS390XOR_130(v *Value) bool { b := v.Block typ := &b.Func.Config.Types // match: (OR s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem)) or:(OR y s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem)))) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -30286,10 +30286,10 @@ func rewriteValueS390X_OpS390XOR_130(v *Value) bool { if mem != x0.Args[2] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -30309,8 +30309,8 @@ func rewriteValueS390X_OpS390XOR_130(v *Value) bool { return true } // match: (OR s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem)) or:(OR y s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem)))) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -30356,10 +30356,10 @@ func rewriteValueS390X_OpS390XOR_130(v *Value) bool { if mem != x0.Args[2] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -30379,8 +30379,8 @@ func rewriteValueS390X_OpS390XOR_130(v *Value) bool { return true } // match: (OR s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem)) or:(OR y s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem)))) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -30426,10 +30426,10 @@ func rewriteValueS390X_OpS390XOR_130(v *Value) bool { if mem != x0.Args[2] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -30449,8 +30449,8 @@ func rewriteValueS390X_OpS390XOR_130(v *Value) bool { return true } // match: (OR or:(OR s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem)) y) s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem))) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -30495,10 +30495,10 @@ func rewriteValueS390X_OpS390XOR_130(v *Value) bool { if mem != x1.Args[2] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -30518,8 +30518,8 @@ func rewriteValueS390X_OpS390XOR_130(v *Value) bool { return true } // match: (OR or:(OR s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem)) y) s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem))) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -30564,10 +30564,10 @@ func rewriteValueS390X_OpS390XOR_130(v *Value) bool { if mem != x1.Args[2] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -30587,8 +30587,8 @@ func rewriteValueS390X_OpS390XOR_130(v *Value) bool { return true } // match: (OR or:(OR y s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem))) s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem))) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -30634,10 +30634,10 @@ func rewriteValueS390X_OpS390XOR_130(v *Value) bool { if mem != x1.Args[2] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -30657,8 +30657,8 @@ func rewriteValueS390X_OpS390XOR_130(v *Value) bool { return true } // match: (OR or:(OR y s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem))) s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem))) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -30704,10 +30704,10 @@ func rewriteValueS390X_OpS390XOR_130(v *Value) bool { if mem != x1.Args[2] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -30727,8 +30727,8 @@ func rewriteValueS390X_OpS390XOR_130(v *Value) bool { return true } // match: (OR or:(OR s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem)) y) s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem))) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -30773,10 +30773,10 @@ func rewriteValueS390X_OpS390XOR_130(v *Value) bool { if mem != x1.Args[2] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -30796,8 +30796,8 @@ func rewriteValueS390X_OpS390XOR_130(v *Value) bool { return true } // match: (OR or:(OR s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem)) y) s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem))) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -30842,10 +30842,10 @@ func rewriteValueS390X_OpS390XOR_130(v *Value) bool { if mem != x1.Args[2] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -30865,8 +30865,8 @@ func rewriteValueS390X_OpS390XOR_130(v *Value) bool { return true } // match: (OR or:(OR y s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem))) s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem))) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -30912,10 +30912,10 @@ func rewriteValueS390X_OpS390XOR_130(v *Value) bool { if mem != x1.Args[2] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -30940,8 +30940,8 @@ func rewriteValueS390X_OpS390XOR_140(v *Value) bool { b := v.Block typ := &b.Func.Config.Types // match: (OR or:(OR y s0:(SLDconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem))) s1:(SLDconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem))) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -30987,10 +30987,10 @@ func rewriteValueS390X_OpS390XOR_140(v *Value) bool { if mem != x1.Args[2] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -31010,8 +31010,8 @@ func rewriteValueS390X_OpS390XOR_140(v *Value) bool { return true } // match: (OR s1:(SLDconst [j1] r1:(MOVHZreg x1:(MOVHBRloadidx [i1] {s} p idx mem))) or:(OR s0:(SLDconst [j0] r0:(MOVHZreg x0:(MOVHBRloadidx [i0] {s} p idx mem))) y)) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -31064,10 +31064,10 @@ func rewriteValueS390X_OpS390XOR_140(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -31087,8 +31087,8 @@ func rewriteValueS390X_OpS390XOR_140(v *Value) bool { return true } // match: (OR s1:(SLDconst [j1] r1:(MOVHZreg x1:(MOVHBRloadidx [i1] {s} idx p mem))) or:(OR s0:(SLDconst [j0] r0:(MOVHZreg x0:(MOVHBRloadidx [i0] {s} p idx mem))) y)) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -31141,10 +31141,10 @@ func rewriteValueS390X_OpS390XOR_140(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -31164,8 +31164,8 @@ func rewriteValueS390X_OpS390XOR_140(v *Value) bool { return true } // match: (OR s1:(SLDconst [j1] r1:(MOVHZreg x1:(MOVHBRloadidx [i1] {s} p idx mem))) or:(OR s0:(SLDconst [j0] r0:(MOVHZreg x0:(MOVHBRloadidx [i0] {s} idx p mem))) y)) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -31218,10 +31218,10 @@ func rewriteValueS390X_OpS390XOR_140(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -31241,8 +31241,8 @@ func rewriteValueS390X_OpS390XOR_140(v *Value) bool { return true } // match: (OR s1:(SLDconst [j1] r1:(MOVHZreg x1:(MOVHBRloadidx [i1] {s} idx p mem))) or:(OR s0:(SLDconst [j0] r0:(MOVHZreg x0:(MOVHBRloadidx [i0] {s} idx p mem))) y)) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -31295,10 +31295,10 @@ func rewriteValueS390X_OpS390XOR_140(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -31318,8 +31318,8 @@ func rewriteValueS390X_OpS390XOR_140(v *Value) bool { return true } // match: (OR s1:(SLDconst [j1] r1:(MOVHZreg x1:(MOVHBRloadidx [i1] {s} p idx mem))) or:(OR y s0:(SLDconst [j0] r0:(MOVHZreg x0:(MOVHBRloadidx [i0] {s} p idx mem))))) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -31373,10 +31373,10 @@ func rewriteValueS390X_OpS390XOR_140(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -31396,8 +31396,8 @@ func rewriteValueS390X_OpS390XOR_140(v *Value) bool { return true } // match: (OR s1:(SLDconst [j1] r1:(MOVHZreg x1:(MOVHBRloadidx [i1] {s} idx p mem))) or:(OR y s0:(SLDconst [j0] r0:(MOVHZreg x0:(MOVHBRloadidx [i0] {s} p idx mem))))) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -31451,10 +31451,10 @@ func rewriteValueS390X_OpS390XOR_140(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -31474,8 +31474,8 @@ func rewriteValueS390X_OpS390XOR_140(v *Value) bool { return true } // match: (OR s1:(SLDconst [j1] r1:(MOVHZreg x1:(MOVHBRloadidx [i1] {s} p idx mem))) or:(OR y s0:(SLDconst [j0] r0:(MOVHZreg x0:(MOVHBRloadidx [i0] {s} idx p mem))))) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -31529,10 +31529,10 @@ func rewriteValueS390X_OpS390XOR_140(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -31552,8 +31552,8 @@ func rewriteValueS390X_OpS390XOR_140(v *Value) bool { return true } // match: (OR s1:(SLDconst [j1] r1:(MOVHZreg x1:(MOVHBRloadidx [i1] {s} idx p mem))) or:(OR y s0:(SLDconst [j0] r0:(MOVHZreg x0:(MOVHBRloadidx [i0] {s} idx p mem))))) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -31607,10 +31607,10 @@ func rewriteValueS390X_OpS390XOR_140(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -31630,8 +31630,8 @@ func rewriteValueS390X_OpS390XOR_140(v *Value) bool { return true } // match: (OR or:(OR s0:(SLDconst [j0] r0:(MOVHZreg x0:(MOVHBRloadidx [i0] {s} p idx mem))) y) s1:(SLDconst [j1] r1:(MOVHZreg x1:(MOVHBRloadidx [i1] {s} p idx mem)))) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -31684,10 +31684,10 @@ func rewriteValueS390X_OpS390XOR_140(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -31712,8 +31712,8 @@ func rewriteValueS390X_OpS390XOR_150(v *Value) bool { b := v.Block typ := &b.Func.Config.Types // match: (OR or:(OR s0:(SLDconst [j0] r0:(MOVHZreg x0:(MOVHBRloadidx [i0] {s} idx p mem))) y) s1:(SLDconst [j1] r1:(MOVHZreg x1:(MOVHBRloadidx [i1] {s} p idx mem)))) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -31766,10 +31766,10 @@ func rewriteValueS390X_OpS390XOR_150(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -31789,8 +31789,8 @@ func rewriteValueS390X_OpS390XOR_150(v *Value) bool { return true } // match: (OR or:(OR y s0:(SLDconst [j0] r0:(MOVHZreg x0:(MOVHBRloadidx [i0] {s} p idx mem)))) s1:(SLDconst [j1] r1:(MOVHZreg x1:(MOVHBRloadidx [i1] {s} p idx mem)))) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -31844,10 +31844,10 @@ func rewriteValueS390X_OpS390XOR_150(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -31867,8 +31867,8 @@ func rewriteValueS390X_OpS390XOR_150(v *Value) bool { return true } // match: (OR or:(OR y s0:(SLDconst [j0] r0:(MOVHZreg x0:(MOVHBRloadidx [i0] {s} idx p mem)))) s1:(SLDconst [j1] r1:(MOVHZreg x1:(MOVHBRloadidx [i1] {s} p idx mem)))) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -31922,10 +31922,10 @@ func rewriteValueS390X_OpS390XOR_150(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -31945,8 +31945,8 @@ func rewriteValueS390X_OpS390XOR_150(v *Value) bool { return true } // match: (OR or:(OR s0:(SLDconst [j0] r0:(MOVHZreg x0:(MOVHBRloadidx [i0] {s} p idx mem))) y) s1:(SLDconst [j1] r1:(MOVHZreg x1:(MOVHBRloadidx [i1] {s} idx p mem)))) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -31999,10 +31999,10 @@ func rewriteValueS390X_OpS390XOR_150(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -32022,8 +32022,8 @@ func rewriteValueS390X_OpS390XOR_150(v *Value) bool { return true } // match: (OR or:(OR s0:(SLDconst [j0] r0:(MOVHZreg x0:(MOVHBRloadidx [i0] {s} idx p mem))) y) s1:(SLDconst [j1] r1:(MOVHZreg x1:(MOVHBRloadidx [i1] {s} idx p mem)))) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -32076,10 +32076,10 @@ func rewriteValueS390X_OpS390XOR_150(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -32099,8 +32099,8 @@ func rewriteValueS390X_OpS390XOR_150(v *Value) bool { return true } // match: (OR or:(OR y s0:(SLDconst [j0] r0:(MOVHZreg x0:(MOVHBRloadidx [i0] {s} p idx mem)))) s1:(SLDconst [j1] r1:(MOVHZreg x1:(MOVHBRloadidx [i1] {s} idx p mem)))) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -32154,10 +32154,10 @@ func rewriteValueS390X_OpS390XOR_150(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -32177,8 +32177,8 @@ func rewriteValueS390X_OpS390XOR_150(v *Value) bool { return true } // match: (OR or:(OR y s0:(SLDconst [j0] r0:(MOVHZreg x0:(MOVHBRloadidx [i0] {s} idx p mem)))) s1:(SLDconst [j1] r1:(MOVHZreg x1:(MOVHBRloadidx [i1] {s} idx p mem)))) - // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) + // cond: i1 == i0+2 && j1 == j0+16 && j0 % 32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (OR (SLDconst [j0] (MOVWZreg (MOVWBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -32232,10 +32232,10 @@ func rewriteValueS390X_OpS390XOR_150(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+2 && j1 == j0+16 && j0%32 == 0 && x0.Uses == 1 && x1.Uses == 1 && r0.Uses == 1 && r1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(r0) && clobber(r1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XOR, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -32765,8 +32765,8 @@ func rewriteValueS390X_OpS390XORW_10(v *Value) bool { return true } // match: (ORW s0:(SLWconst [j0] x0:(MOVBZload [i0] {s} p mem)) or:(ORW s1:(SLWconst [j1] x1:(MOVBZload [i1] {s} p mem)) y)) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j1] (MOVHZload [i0] {s} p mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j1] (MOVHZload [i0] {s} p mem)) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -32807,10 +32807,10 @@ func rewriteValueS390X_OpS390XORW_10(v *Value) bool { if mem != x1.Args[1] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x1.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -32827,8 +32827,8 @@ func rewriteValueS390X_OpS390XORW_10(v *Value) bool { return true } // match: (ORW s0:(SLWconst [j0] x0:(MOVBZload [i0] {s} p mem)) or:(ORW y s1:(SLWconst [j1] x1:(MOVBZload [i1] {s} p mem)))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j1] (MOVHZload [i0] {s} p mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j1] (MOVHZload [i0] {s} p mem)) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -32870,10 +32870,10 @@ func rewriteValueS390X_OpS390XORW_10(v *Value) bool { if mem != x1.Args[1] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x1.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -32890,8 +32890,8 @@ func rewriteValueS390X_OpS390XORW_10(v *Value) bool { return true } // match: (ORW or:(ORW s1:(SLWconst [j1] x1:(MOVBZload [i1] {s} p mem)) y) s0:(SLWconst [j0] x0:(MOVBZload [i0] {s} p mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j1] (MOVHZload [i0] {s} p mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j1] (MOVHZload [i0] {s} p mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -32932,10 +32932,10 @@ func rewriteValueS390X_OpS390XORW_10(v *Value) bool { if mem != x0.Args[1] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x0.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -32957,8 +32957,8 @@ func rewriteValueS390X_OpS390XORW_20(v *Value) bool { b := v.Block typ := &b.Func.Config.Types // match: (ORW or:(ORW y s1:(SLWconst [j1] x1:(MOVBZload [i1] {s} p mem))) s0:(SLWconst [j0] x0:(MOVBZload [i0] {s} p mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j1] (MOVHZload [i0] {s} p mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j1] (MOVHZload [i0] {s} p mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -33000,10 +33000,10 @@ func rewriteValueS390X_OpS390XORW_20(v *Value) bool { if mem != x0.Args[1] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x0.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -33873,8 +33873,8 @@ func rewriteValueS390X_OpS390XORW_30(v *Value) bool { return true } // match: (ORW s0:(SLWconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem)) or:(ORW s1:(SLWconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem)) y)) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -33919,10 +33919,10 @@ func rewriteValueS390X_OpS390XORW_30(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -33940,8 +33940,8 @@ func rewriteValueS390X_OpS390XORW_30(v *Value) bool { return true } // match: (ORW s0:(SLWconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem)) or:(ORW s1:(SLWconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem)) y)) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -33986,10 +33986,10 @@ func rewriteValueS390X_OpS390XORW_30(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -34007,8 +34007,8 @@ func rewriteValueS390X_OpS390XORW_30(v *Value) bool { return true } // match: (ORW s0:(SLWconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem)) or:(ORW s1:(SLWconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem)) y)) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -34053,10 +34053,10 @@ func rewriteValueS390X_OpS390XORW_30(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -34079,8 +34079,8 @@ func rewriteValueS390X_OpS390XORW_40(v *Value) bool { b := v.Block typ := &b.Func.Config.Types // match: (ORW s0:(SLWconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem)) or:(ORW s1:(SLWconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem)) y)) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -34125,10 +34125,10 @@ func rewriteValueS390X_OpS390XORW_40(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -34146,8 +34146,8 @@ func rewriteValueS390X_OpS390XORW_40(v *Value) bool { return true } // match: (ORW s0:(SLWconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem)) or:(ORW y s1:(SLWconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem)))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -34193,10 +34193,10 @@ func rewriteValueS390X_OpS390XORW_40(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -34214,8 +34214,8 @@ func rewriteValueS390X_OpS390XORW_40(v *Value) bool { return true } // match: (ORW s0:(SLWconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem)) or:(ORW y s1:(SLWconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem)))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -34261,10 +34261,10 @@ func rewriteValueS390X_OpS390XORW_40(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -34282,8 +34282,8 @@ func rewriteValueS390X_OpS390XORW_40(v *Value) bool { return true } // match: (ORW s0:(SLWconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem)) or:(ORW y s1:(SLWconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem)))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -34329,10 +34329,10 @@ func rewriteValueS390X_OpS390XORW_40(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -34350,8 +34350,8 @@ func rewriteValueS390X_OpS390XORW_40(v *Value) bool { return true } // match: (ORW s0:(SLWconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem)) or:(ORW y s1:(SLWconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem)))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] s0 := v.Args[0] @@ -34397,10 +34397,10 @@ func rewriteValueS390X_OpS390XORW_40(v *Value) bool { if mem != x1.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -34418,8 +34418,8 @@ func rewriteValueS390X_OpS390XORW_40(v *Value) bool { return true } // match: (ORW or:(ORW s1:(SLWconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem)) y) s0:(SLWconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -34464,10 +34464,10 @@ func rewriteValueS390X_OpS390XORW_40(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -34485,8 +34485,8 @@ func rewriteValueS390X_OpS390XORW_40(v *Value) bool { return true } // match: (ORW or:(ORW s1:(SLWconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem)) y) s0:(SLWconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -34531,10 +34531,10 @@ func rewriteValueS390X_OpS390XORW_40(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -34552,8 +34552,8 @@ func rewriteValueS390X_OpS390XORW_40(v *Value) bool { return true } // match: (ORW or:(ORW y s1:(SLWconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem))) s0:(SLWconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -34599,10 +34599,10 @@ func rewriteValueS390X_OpS390XORW_40(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -34620,8 +34620,8 @@ func rewriteValueS390X_OpS390XORW_40(v *Value) bool { return true } // match: (ORW or:(ORW y s1:(SLWconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem))) s0:(SLWconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -34667,10 +34667,10 @@ func rewriteValueS390X_OpS390XORW_40(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -34688,8 +34688,8 @@ func rewriteValueS390X_OpS390XORW_40(v *Value) bool { return true } // match: (ORW or:(ORW s1:(SLWconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem)) y) s0:(SLWconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -34734,10 +34734,10 @@ func rewriteValueS390X_OpS390XORW_40(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -34760,8 +34760,8 @@ func rewriteValueS390X_OpS390XORW_50(v *Value) bool { b := v.Block typ := &b.Func.Config.Types // match: (ORW or:(ORW s1:(SLWconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem)) y) s0:(SLWconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -34806,10 +34806,10 @@ func rewriteValueS390X_OpS390XORW_50(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -34827,8 +34827,8 @@ func rewriteValueS390X_OpS390XORW_50(v *Value) bool { return true } // match: (ORW or:(ORW y s1:(SLWconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem))) s0:(SLWconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -34874,10 +34874,10 @@ func rewriteValueS390X_OpS390XORW_50(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -34895,8 +34895,8 @@ func rewriteValueS390X_OpS390XORW_50(v *Value) bool { return true } // match: (ORW or:(ORW y s1:(SLWconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem))) s0:(SLWconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem))) - // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) + // cond: i1 == i0+1 && j1 == j0-8 && j1 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j1] (MOVHZloadidx [i0] {s} p idx mem)) y) for { _ = v.Args[1] or := v.Args[0] @@ -34942,10 +34942,10 @@ func rewriteValueS390X_OpS390XORW_50(v *Value) bool { if mem != x0.Args[2] { break } - if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(i1 == i0+1 && j1 == j0-8 && j1%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -35175,8 +35175,8 @@ func rewriteValueS390X_OpS390XORW_50(v *Value) bool { return true } // match: (ORW s1:(SLWconst [j1] x1:(MOVBZload [i1] {s} p mem)) or:(ORW s0:(SLWconst [j0] x0:(MOVBZload [i0] {s} p mem)) y)) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRload [i0] {s} p mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRload [i0] {s} p mem))) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -35217,10 +35217,10 @@ func rewriteValueS390X_OpS390XORW_50(v *Value) bool { if mem != x0.Args[1] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x0.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -35239,8 +35239,8 @@ func rewriteValueS390X_OpS390XORW_50(v *Value) bool { return true } // match: (ORW s1:(SLWconst [j1] x1:(MOVBZload [i1] {s} p mem)) or:(ORW y s0:(SLWconst [j0] x0:(MOVBZload [i0] {s} p mem)))) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRload [i0] {s} p mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRload [i0] {s} p mem))) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -35282,10 +35282,10 @@ func rewriteValueS390X_OpS390XORW_50(v *Value) bool { if mem != x0.Args[1] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x0.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -35304,8 +35304,8 @@ func rewriteValueS390X_OpS390XORW_50(v *Value) bool { return true } // match: (ORW or:(ORW s0:(SLWconst [j0] x0:(MOVBZload [i0] {s} p mem)) y) s1:(SLWconst [j1] x1:(MOVBZload [i1] {s} p mem))) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRload [i0] {s} p mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRload [i0] {s} p mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -35346,10 +35346,10 @@ func rewriteValueS390X_OpS390XORW_50(v *Value) bool { if mem != x1.Args[1] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x1.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -35373,8 +35373,8 @@ func rewriteValueS390X_OpS390XORW_60(v *Value) bool { b := v.Block typ := &b.Func.Config.Types // match: (ORW or:(ORW y s0:(SLWconst [j0] x0:(MOVBZload [i0] {s} p mem))) s1:(SLWconst [j1] x1:(MOVBZload [i1] {s} p mem))) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRload [i0] {s} p mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRload [i0] {s} p mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -35416,10 +35416,10 @@ func rewriteValueS390X_OpS390XORW_60(v *Value) bool { if mem != x1.Args[1] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(x1.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -36371,8 +36371,8 @@ func rewriteValueS390X_OpS390XORW_70(v *Value) bool { return true } // match: (ORW s1:(SLWconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem)) or:(ORW s0:(SLWconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem)) y)) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -36417,10 +36417,10 @@ func rewriteValueS390X_OpS390XORW_70(v *Value) bool { if mem != x0.Args[2] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -36440,8 +36440,8 @@ func rewriteValueS390X_OpS390XORW_70(v *Value) bool { return true } // match: (ORW s1:(SLWconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem)) or:(ORW s0:(SLWconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem)) y)) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -36486,10 +36486,10 @@ func rewriteValueS390X_OpS390XORW_70(v *Value) bool { if mem != x0.Args[2] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -36509,8 +36509,8 @@ func rewriteValueS390X_OpS390XORW_70(v *Value) bool { return true } // match: (ORW s1:(SLWconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem)) or:(ORW s0:(SLWconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem)) y)) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -36555,10 +36555,10 @@ func rewriteValueS390X_OpS390XORW_70(v *Value) bool { if mem != x0.Args[2] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -36583,8 +36583,8 @@ func rewriteValueS390X_OpS390XORW_80(v *Value) bool { b := v.Block typ := &b.Func.Config.Types // match: (ORW s1:(SLWconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem)) or:(ORW s0:(SLWconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem)) y)) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -36629,10 +36629,10 @@ func rewriteValueS390X_OpS390XORW_80(v *Value) bool { if mem != x0.Args[2] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -36652,8 +36652,8 @@ func rewriteValueS390X_OpS390XORW_80(v *Value) bool { return true } // match: (ORW s1:(SLWconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem)) or:(ORW y s0:(SLWconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem)))) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -36699,10 +36699,10 @@ func rewriteValueS390X_OpS390XORW_80(v *Value) bool { if mem != x0.Args[2] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -36722,8 +36722,8 @@ func rewriteValueS390X_OpS390XORW_80(v *Value) bool { return true } // match: (ORW s1:(SLWconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem)) or:(ORW y s0:(SLWconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem)))) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -36769,10 +36769,10 @@ func rewriteValueS390X_OpS390XORW_80(v *Value) bool { if mem != x0.Args[2] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -36792,8 +36792,8 @@ func rewriteValueS390X_OpS390XORW_80(v *Value) bool { return true } // match: (ORW s1:(SLWconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem)) or:(ORW y s0:(SLWconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem)))) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -36839,10 +36839,10 @@ func rewriteValueS390X_OpS390XORW_80(v *Value) bool { if mem != x0.Args[2] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -36862,8 +36862,8 @@ func rewriteValueS390X_OpS390XORW_80(v *Value) bool { return true } // match: (ORW s1:(SLWconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem)) or:(ORW y s0:(SLWconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem)))) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] s1 := v.Args[0] @@ -36909,10 +36909,10 @@ func rewriteValueS390X_OpS390XORW_80(v *Value) bool { if mem != x0.Args[2] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -36932,8 +36932,8 @@ func rewriteValueS390X_OpS390XORW_80(v *Value) bool { return true } // match: (ORW or:(ORW s0:(SLWconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem)) y) s1:(SLWconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem))) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -36978,10 +36978,10 @@ func rewriteValueS390X_OpS390XORW_80(v *Value) bool { if mem != x1.Args[2] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -37001,8 +37001,8 @@ func rewriteValueS390X_OpS390XORW_80(v *Value) bool { return true } // match: (ORW or:(ORW s0:(SLWconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem)) y) s1:(SLWconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem))) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -37047,10 +37047,10 @@ func rewriteValueS390X_OpS390XORW_80(v *Value) bool { if mem != x1.Args[2] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -37070,8 +37070,8 @@ func rewriteValueS390X_OpS390XORW_80(v *Value) bool { return true } // match: (ORW or:(ORW y s0:(SLWconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem))) s1:(SLWconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem))) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -37117,10 +37117,10 @@ func rewriteValueS390X_OpS390XORW_80(v *Value) bool { if mem != x1.Args[2] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -37140,8 +37140,8 @@ func rewriteValueS390X_OpS390XORW_80(v *Value) bool { return true } // match: (ORW or:(ORW y s0:(SLWconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem))) s1:(SLWconst [j1] x1:(MOVBZloadidx [i1] {s} p idx mem))) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -37187,10 +37187,10 @@ func rewriteValueS390X_OpS390XORW_80(v *Value) bool { if mem != x1.Args[2] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -37210,8 +37210,8 @@ func rewriteValueS390X_OpS390XORW_80(v *Value) bool { return true } // match: (ORW or:(ORW s0:(SLWconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem)) y) s1:(SLWconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem))) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -37256,10 +37256,10 @@ func rewriteValueS390X_OpS390XORW_80(v *Value) bool { if mem != x1.Args[2] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -37284,8 +37284,8 @@ func rewriteValueS390X_OpS390XORW_90(v *Value) bool { b := v.Block typ := &b.Func.Config.Types // match: (ORW or:(ORW s0:(SLWconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem)) y) s1:(SLWconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem))) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -37330,10 +37330,10 @@ func rewriteValueS390X_OpS390XORW_90(v *Value) bool { if mem != x1.Args[2] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -37353,8 +37353,8 @@ func rewriteValueS390X_OpS390XORW_90(v *Value) bool { return true } // match: (ORW or:(ORW y s0:(SLWconst [j0] x0:(MOVBZloadidx [i0] {s} p idx mem))) s1:(SLWconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem))) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -37400,10 +37400,10 @@ func rewriteValueS390X_OpS390XORW_90(v *Value) bool { if mem != x1.Args[2] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) @@ -37423,8 +37423,8 @@ func rewriteValueS390X_OpS390XORW_90(v *Value) bool { return true } // match: (ORW or:(ORW y s0:(SLWconst [j0] x0:(MOVBZloadidx [i0] {s} idx p mem))) s1:(SLWconst [j1] x1:(MOVBZloadidx [i1] {s} idx p mem))) - // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) - // result: @mergePoint(b,x0,x1) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) + // cond: p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0 % 16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b,x0,x1,y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or) + // result: @mergePoint(b,x0,x1,y) (ORW (SLWconst [j0] (MOVHZreg (MOVHBRloadidx [i0] {s} p idx mem))) y) for { _ = v.Args[1] or := v.Args[0] @@ -37470,10 +37470,10 @@ func rewriteValueS390X_OpS390XORW_90(v *Value) bool { if mem != x1.Args[2] { break } - if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { + if !(p.Op != OpSB && i1 == i0+1 && j1 == j0+8 && j0%16 == 0 && x0.Uses == 1 && x1.Uses == 1 && s0.Uses == 1 && s1.Uses == 1 && or.Uses == 1 && mergePoint(b, x0, x1, y) != nil && clobber(x0) && clobber(x1) && clobber(s0) && clobber(s1) && clobber(or)) { break } - b = mergePoint(b, x0, x1) + b = mergePoint(b, x0, x1, y) v0 := b.NewValue0(v.Pos, OpS390XORW, v.Type) v.reset(OpCopy) v.AddArg(v0) diff --git a/test/fixedbugs/issue32680.go b/test/fixedbugs/issue32680.go new file mode 100644 index 0000000000..27cba6bf78 --- /dev/null +++ b/test/fixedbugs/issue32680.go @@ -0,0 +1,23 @@ +// run -gcflags=-d=ssa/check/on + +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// As of 2019-06, bug affects/ed amd64 and s390x. + +package main + +var foo = []byte{105, 57, 172, 152} + +func main() { + for i := 0; i < len(foo); i += 4 { + // Requires inlining and non-constant i + // Note the bug/fix also apply to different widths, but was unable to reproduce for those. + println(readLittleEndian32_2(foo[i], foo[i+1], foo[i+2], foo[i+3])) + } +} + +func readLittleEndian32_2(a, b, c, d byte) uint32 { + return uint32(a) | (uint32(b) << 8) | (uint32(c) << 16) | (uint32(d) << 24) +} diff --git a/test/fixedbugs/issue32680.out b/test/fixedbugs/issue32680.out new file mode 100644 index 0000000000..4d60a97392 --- /dev/null +++ b/test/fixedbugs/issue32680.out @@ -0,0 +1 @@ +2561423721 From 8456b07099a89bab05e60ba1df8e6572c3c6bd81 Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Sun, 2 Jun 2019 00:51:46 +0200 Subject: [PATCH 004/255] cmd/go/internal/imports: match solaris files for illumos Like the android/linux pair, match files with GOOS=solaris if GOOS=illumos Follow-up for CL 174457 Fixes #32370 Updates #20603 Change-Id: Id01de8bb3990d7bbb22f735a4abed2b3cf8b4062 Reviewed-on: https://go-review.googlesource.com/c/go/+/179997 Run-TryBot: Tobias Klauser TryBot-Result: Gobot Gobot Reviewed-by: Benny Siegert Reviewed-by: Bryan C. Mills --- src/cmd/go/internal/imports/build.go | 7 ++++++- src/cmd/go/internal/imports/testdata/illumos/a_illumos.go | 3 +++ .../internal/imports/testdata/illumos/b_illumos_amd64.go | 3 +++ src/cmd/go/internal/imports/testdata/illumos/c_solaris.go | 3 +++ .../internal/imports/testdata/illumos/d_solaris_amd64.go | 3 +++ src/cmd/go/internal/imports/testdata/illumos/e.go | 5 +++++ src/cmd/go/internal/imports/testdata/illumos/f.go | 5 +++++ src/cmd/go/internal/imports/testdata/illumos/g.go | 5 +++++ src/cmd/go/internal/imports/testdata/illumos/tags.txt | 1 + src/cmd/go/internal/imports/testdata/illumos/want.txt | 6 ++++++ 10 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 src/cmd/go/internal/imports/testdata/illumos/a_illumos.go create mode 100644 src/cmd/go/internal/imports/testdata/illumos/b_illumos_amd64.go create mode 100644 src/cmd/go/internal/imports/testdata/illumos/c_solaris.go create mode 100644 src/cmd/go/internal/imports/testdata/illumos/d_solaris_amd64.go create mode 100644 src/cmd/go/internal/imports/testdata/illumos/e.go create mode 100644 src/cmd/go/internal/imports/testdata/illumos/f.go create mode 100644 src/cmd/go/internal/imports/testdata/illumos/g.go create mode 100644 src/cmd/go/internal/imports/testdata/illumos/tags.txt create mode 100644 src/cmd/go/internal/imports/testdata/illumos/want.txt diff --git a/src/cmd/go/internal/imports/build.go b/src/cmd/go/internal/imports/build.go index 1e44a83c72..3e9fe357e0 100644 --- a/src/cmd/go/internal/imports/build.go +++ b/src/cmd/go/internal/imports/build.go @@ -138,6 +138,9 @@ func matchTag(name string, tags map[string]bool, want bool) bool { if name == "linux" { have = have || tags["android"] } + if name == "solaris" { + have = have || tags["illumos"] + } return have == want } @@ -152,7 +155,9 @@ func matchTag(name string, tags map[string]bool, want bool) bool { // name_$(GOARCH)_test.* // name_$(GOOS)_$(GOARCH)_test.* // -// An exception: if GOOS=android, then files with GOOS=linux are also matched. +// Exceptions: +// if GOOS=android, then files with GOOS=linux are also matched. +// if GOOS=illumos, then files with GOOS=solaris are also matched. // // If tags["*"] is true, then MatchFile will consider all possible // GOOS and GOARCH to be available and will consequently diff --git a/src/cmd/go/internal/imports/testdata/illumos/a_illumos.go b/src/cmd/go/internal/imports/testdata/illumos/a_illumos.go new file mode 100644 index 0000000000..2e6cb50805 --- /dev/null +++ b/src/cmd/go/internal/imports/testdata/illumos/a_illumos.go @@ -0,0 +1,3 @@ +package illumos + +import _ "a" diff --git a/src/cmd/go/internal/imports/testdata/illumos/b_illumos_amd64.go b/src/cmd/go/internal/imports/testdata/illumos/b_illumos_amd64.go new file mode 100644 index 0000000000..2834d80660 --- /dev/null +++ b/src/cmd/go/internal/imports/testdata/illumos/b_illumos_amd64.go @@ -0,0 +1,3 @@ +package illumos + +import _ "b" diff --git a/src/cmd/go/internal/imports/testdata/illumos/c_solaris.go b/src/cmd/go/internal/imports/testdata/illumos/c_solaris.go new file mode 100644 index 0000000000..d7f9462f15 --- /dev/null +++ b/src/cmd/go/internal/imports/testdata/illumos/c_solaris.go @@ -0,0 +1,3 @@ +package illumos + +import _ "c" diff --git a/src/cmd/go/internal/imports/testdata/illumos/d_solaris_amd64.go b/src/cmd/go/internal/imports/testdata/illumos/d_solaris_amd64.go new file mode 100644 index 0000000000..0f52c2bb48 --- /dev/null +++ b/src/cmd/go/internal/imports/testdata/illumos/d_solaris_amd64.go @@ -0,0 +1,3 @@ +package illumos + +import _ "d" diff --git a/src/cmd/go/internal/imports/testdata/illumos/e.go b/src/cmd/go/internal/imports/testdata/illumos/e.go new file mode 100644 index 0000000000..5e1ed3cb9d --- /dev/null +++ b/src/cmd/go/internal/imports/testdata/illumos/e.go @@ -0,0 +1,5 @@ +// +build illumos + +package illumos + +import _ "e" diff --git a/src/cmd/go/internal/imports/testdata/illumos/f.go b/src/cmd/go/internal/imports/testdata/illumos/f.go new file mode 100644 index 0000000000..f3e3f728bc --- /dev/null +++ b/src/cmd/go/internal/imports/testdata/illumos/f.go @@ -0,0 +1,5 @@ +// +build solaris + +package illumos + +import _ "f" diff --git a/src/cmd/go/internal/imports/testdata/illumos/g.go b/src/cmd/go/internal/imports/testdata/illumos/g.go new file mode 100644 index 0000000000..b30f1eb403 --- /dev/null +++ b/src/cmd/go/internal/imports/testdata/illumos/g.go @@ -0,0 +1,5 @@ +// +build !illumos + +package illumos + +import _ "g" diff --git a/src/cmd/go/internal/imports/testdata/illumos/tags.txt b/src/cmd/go/internal/imports/testdata/illumos/tags.txt new file mode 100644 index 0000000000..b6386a3260 --- /dev/null +++ b/src/cmd/go/internal/imports/testdata/illumos/tags.txt @@ -0,0 +1 @@ +illumos amd64 diff --git a/src/cmd/go/internal/imports/testdata/illumos/want.txt b/src/cmd/go/internal/imports/testdata/illumos/want.txt new file mode 100644 index 0000000000..0fdf397db0 --- /dev/null +++ b/src/cmd/go/internal/imports/testdata/illumos/want.txt @@ -0,0 +1,6 @@ +a +b +c +d +e +f From bc81f52e93b5f8200876bf0cf7ae5a61c96a4783 Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Wed, 19 Jun 2019 15:50:06 -0700 Subject: [PATCH 005/255] text/scanner: rename AllowNumberbars to AllowDigitSeparators Fixes #32661. Change-Id: I32dc4e7b276b95ac2e87a384caa6c48702368d05 Reviewed-on: https://go-review.googlesource.com/c/go/+/183077 Reviewed-by: Andrew Bonventre --- src/text/scanner/scanner.go | 30 +++++++++++++++--------------- src/text/scanner/scanner_test.go | 2 +- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/text/scanner/scanner.go b/src/text/scanner/scanner.go index 8db0ed28d3..fa5a0cd70d 100644 --- a/src/text/scanner/scanner.go +++ b/src/text/scanner/scanner.go @@ -59,16 +59,16 @@ func (pos Position) String() string { // "foo" is scanned as the token sequence '"' Ident '"'. // const ( - ScanIdents = 1 << -Ident - ScanInts = 1 << -Int - ScanFloats = 1 << -Float // includes Ints and hexadecimal floats - ScanChars = 1 << -Char - ScanStrings = 1 << -String - ScanRawStrings = 1 << -RawString - ScanComments = 1 << -Comment - SkipComments = 1 << -skipComment // if set with ScanComments, comments become white space - AllowNumberbars = 1 << -allowNumberbars // if set, number literals may contain underbars as digit separators - GoTokens = ScanIdents | ScanFloats | ScanChars | ScanStrings | ScanRawStrings | ScanComments | SkipComments | AllowNumberbars + ScanIdents = 1 << -Ident + ScanInts = 1 << -Int + ScanFloats = 1 << -Float // includes Ints and hexadecimal floats + ScanChars = 1 << -Char + ScanStrings = 1 << -String + ScanRawStrings = 1 << -RawString + ScanComments = 1 << -Comment + SkipComments = 1 << -skipComment // if set with ScanComments, comments become white space + AllowDigitSeparators = 1 << -allowDigitSeparators // if set, number literals may contain underscores as digit separators + GoTokens = ScanIdents | ScanFloats | ScanChars | ScanStrings | ScanRawStrings | ScanComments | SkipComments | AllowDigitSeparators ) // The result of Scan is one of these tokens or a Unicode character. @@ -84,7 +84,7 @@ const ( // internal use only skipComment - allowNumberbars + allowDigitSeparators ) var tokenString = map[rune]string{ @@ -363,8 +363,8 @@ func lower(ch rune) rune { return ('a' - 'A') | ch } // returns lower-case c func isDecimal(ch rune) bool { return '0' <= ch && ch <= '9' } func isHex(ch rune) bool { return '0' <= ch && ch <= '9' || 'a' <= lower(ch) && lower(ch) <= 'f' } -// digits accepts the sequence { digit } (if AllowNumberbars is not set) -// or { digit | '_' } (if AllowNumberbars is set), starting with ch0. +// digits accepts the sequence { digit } (if AllowDigitSeparators is not set) +// or { digit | '_' } (if AllowDigitSeparators is set), starting with ch0. // If base <= 10, digits accepts any decimal digit but records // the first invalid digit >= base in *invalid if *invalid == 0. // digits returns the first rune that is not part of the sequence @@ -374,7 +374,7 @@ func (s *Scanner) digits(ch0 rune, base int, invalid *rune) (ch rune, digsep int ch = ch0 if base <= 10 { max := rune('0' + base) - for isDecimal(ch) || ch == '_' && s.Mode&AllowNumberbars != 0 { + for isDecimal(ch) || ch == '_' && s.Mode&AllowDigitSeparators != 0 { ds := 1 if ch == '_' { ds = 2 @@ -385,7 +385,7 @@ func (s *Scanner) digits(ch0 rune, base int, invalid *rune) (ch rune, digsep int ch = s.next() } } else { - for isHex(ch) || ch == '_' && s.Mode&AllowNumberbars != 0 { + for isHex(ch) || ch == '_' && s.Mode&AllowDigitSeparators != 0 { ds := 1 if ch == '_' { ds = 2 diff --git a/src/text/scanner/scanner_test.go b/src/text/scanner/scanner_test.go index 6ae8fd9a08..fb68106c16 100644 --- a/src/text/scanner/scanner_test.go +++ b/src/text/scanner/scanner_test.go @@ -887,7 +887,7 @@ func TestIssue30320(t *testing.T) { {"foo0/12/0/5.67", "0 12 0 5 67", ScanInts}, {"xxx1e0yyy", "1 0", ScanInts}, {"1_2", "1 2", ScanInts}, // don't consume _ as part of a number if not explicitly enabled - {"1_2", "1_2", ScanInts | AllowNumberbars}, + {"1_2", "1_2", ScanInts | AllowDigitSeparators}, {"xxx1.0yyy2e3ee", "1 0 2 3", ScanInts}, {"xxx1.0yyy2e3ee", "1.0 2e3", ScanFloats}, } { From 0884bca05a278e7f8783be3545a88a26b14dd4e4 Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Wed, 19 Jun 2019 17:07:26 -0400 Subject: [PATCH 006/255] crypto/tls: move shared code and resources to handshake_test.go Removed cross-dependencies between handshake_server_test.go and handshake_client_test.go; moved all initialization to TestMain; replaced SSLKEYLOGFILE environment variable with -keylog flag. Change-Id: Ida6712daa44e01a2c00658e8a1896087ee88bcb0 Reviewed-on: https://go-review.googlesource.com/c/go/+/183057 Run-TryBot: Filippo Valsorda TryBot-Result: Gobot Gobot Reviewed-by: Adam Langley --- src/crypto/tls/handshake_client_test.go | 14 -- src/crypto/tls/handshake_server_test.go | 223 --------------------- src/crypto/tls/handshake_test.go | 252 +++++++++++++++++++++--- 3 files changed, 228 insertions(+), 261 deletions(-) diff --git a/src/crypto/tls/handshake_client_test.go b/src/crypto/tls/handshake_client_test.go index da17fdfa4f..1b6b9a1074 100644 --- a/src/crypto/tls/handshake_client_test.go +++ b/src/crypto/tls/handshake_client_test.go @@ -25,18 +25,6 @@ import ( "time" ) -func init() { - // TLS 1.3 cipher suites preferences are not configurable and change based - // on the architecture. Force them to the version with AES acceleration for - // test consistency. - once.Do(initDefaultCipherSuites) - varDefaultCipherSuitesTLS13 = []uint16{ - TLS_AES_128_GCM_SHA256, - TLS_CHACHA20_POLY1305_SHA256, - TLS_AES_256_GCM_SHA384, - } -} - // Note: see comment in handshake_test.go for details of how the reference // tests work. @@ -287,8 +275,6 @@ func (test *clientTest) loadData() (flows [][]byte, err error) { } func (test *clientTest) run(t *testing.T, write bool) { - checkOpenSSLVersion(t) - var clientConn, serverConn net.Conn var recordingConn *recordingConn var childProcess *exec.Cmd diff --git a/src/crypto/tls/handshake_server_test.go b/src/crypto/tls/handshake_server_test.go index 6884dff154..22b126fa22 100644 --- a/src/crypto/tls/handshake_server_test.go +++ b/src/crypto/tls/handshake_server_test.go @@ -7,18 +7,11 @@ package tls import ( "bytes" "crypto" - "crypto/ecdsa" - "crypto/ed25519" "crypto/elliptic" - "crypto/rsa" - "crypto/x509" - "encoding/hex" "encoding/pem" "errors" "fmt" "io" - "io/ioutil" - "math/big" "net" "os" "os/exec" @@ -28,52 +21,6 @@ import ( "time" ) -// zeroSource is an io.Reader that returns an unlimited number of zero bytes. -type zeroSource struct{} - -func (zeroSource) Read(b []byte) (n int, err error) { - for i := range b { - b[i] = 0 - } - - return len(b), nil -} - -var testConfig *Config - -func allCipherSuites() []uint16 { - ids := make([]uint16, len(cipherSuites)) - for i, suite := range cipherSuites { - ids[i] = suite.id - } - - return ids -} - -func init() { - testConfig = &Config{ - Time: func() time.Time { return time.Unix(0, 0) }, - Rand: zeroSource{}, - Certificates: make([]Certificate, 2), - InsecureSkipVerify: true, - MinVersion: VersionSSL30, - MaxVersion: VersionTLS13, - CipherSuites: allCipherSuites(), - } - testConfig.Certificates[0].Certificate = [][]byte{testRSACertificate} - testConfig.Certificates[0].PrivateKey = testRSAPrivateKey - testConfig.Certificates[1].Certificate = [][]byte{testSNICertificate} - testConfig.Certificates[1].PrivateKey = testRSAPrivateKey - testConfig.BuildNameToCertificate() - if keyFile := os.Getenv("SSLKEYLOGFILE"); keyFile != "" { - f, err := os.OpenFile(keyFile, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) - if err != nil { - panic("failed to open SSLKEYLOGFILE: " + err.Error()) - } - testConfig.KeyLogWriter = f - } -} - func testClientHello(t *testing.T, serverConfig *Config, m handshakeMessage) { testClientHelloFailure(t, serverConfig, m, "") } @@ -348,46 +295,6 @@ func TestClose(t *testing.T) { } } -func testHandshake(t *testing.T, clientConfig, serverConfig *Config) (serverState, clientState ConnectionState, err error) { - c, s := localPipe(t) - errChan := make(chan error) - go func() { - cli := Client(c, clientConfig) - err := cli.Handshake() - if err != nil { - errChan <- fmt.Errorf("client: %v", err) - c.Close() - return - } - defer cli.Close() - clientState = cli.ConnectionState() - buf, err := ioutil.ReadAll(cli) - if err != nil { - t.Errorf("failed to call cli.Read: %v", err) - } - if got := string(buf); got != opensslSentinel { - t.Errorf("read %q from TLS connection, but expected %q", got, opensslSentinel) - } - errChan <- nil - }() - server := Server(s, serverConfig) - err = server.Handshake() - if err == nil { - serverState = server.ConnectionState() - if _, err := io.WriteString(server, opensslSentinel); err != nil { - t.Errorf("failed to call server.Write: %v", err) - } - if err := server.Close(); err != nil { - t.Errorf("failed to call server.Close: %v", err) - } - err = <-errChan - } else { - s.Close() - <-errChan - } - return -} - func TestVersion(t *testing.T) { serverConfig := &Config{ Certificates: testConfig.Certificates, @@ -633,8 +540,6 @@ func (test *serverTest) loadData() (flows [][]byte, err error) { } func (test *serverTest) run(t *testing.T, write bool) { - checkOpenSSLVersion(t) - var clientConn, serverConn net.Conn var recordingConn *recordingConn var childProcess *exec.Cmd @@ -1350,81 +1255,6 @@ func BenchmarkHandshakeServer(b *testing.B) { }) } -const clientCertificatePEM = ` ------BEGIN CERTIFICATE----- -MIIB7zCCAVigAwIBAgIQXBnBiWWDVW/cC8m5k5/pvDANBgkqhkiG9w0BAQsFADAS -MRAwDgYDVQQKEwdBY21lIENvMB4XDTE2MDgxNzIxNTIzMVoXDTE3MDgxNzIxNTIz -MVowEjEQMA4GA1UEChMHQWNtZSBDbzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC -gYEAum+qhr3Pv5/y71yUYHhv6BPy0ZZvzdkybiI3zkH5yl0prOEn2mGi7oHLEMff -NFiVhuk9GeZcJ3NgyI14AvQdpJgJoxlwaTwlYmYqqyIjxXuFOE8uCXMyp70+m63K -hAfmDzr/d8WdQYUAirab7rCkPy1MTOZCPrtRyN1IVPQMjkcCAwEAAaNGMEQwDgYD -VR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMAwGA1UdEwEB/wQCMAAw -DwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOBgQBGq0Si+yhU+Fpn+GKU -8ZqyGJ7ysd4dfm92lam6512oFmyc9wnTN+RLKzZ8Aa1B0jLYw9KT+RBrjpW5LBeK -o0RIvFkTgxYEiKSBXCUNmAysEbEoVr4dzWFihAm/1oDGRY2CLLTYg5vbySK3KhIR -e/oCO8HJ/+rJnahJ05XX1Q7lNQ== ------END CERTIFICATE-----` - -var clientKeyPEM = testingKey(` ------BEGIN RSA TESTING KEY----- -MIICXQIBAAKBgQC6b6qGvc+/n/LvXJRgeG/oE/LRlm/N2TJuIjfOQfnKXSms4Sfa -YaLugcsQx980WJWG6T0Z5lwnc2DIjXgC9B2kmAmjGXBpPCViZiqrIiPFe4U4Ty4J -czKnvT6brcqEB+YPOv93xZ1BhQCKtpvusKQ/LUxM5kI+u1HI3UhU9AyORwIDAQAB -AoGAEJZ03q4uuMb7b26WSQsOMeDsftdatT747LGgs3pNRkMJvTb/O7/qJjxoG+Mc -qeSj0TAZXp+PXXc3ikCECAc+R8rVMfWdmp903XgO/qYtmZGCorxAHEmR80SrfMXv -PJnznLQWc8U9nphQErR+tTESg7xWEzmFcPKwnZd1xg8ERYkCQQDTGtrFczlB2b/Z -9TjNMqUlMnTLIk/a/rPE2fLLmAYhK5sHnJdvDURaH2mF4nso0EGtENnTsh6LATnY -dkrxXGm9AkEA4hXHG2q3MnhgK1Z5hjv+Fnqd+8bcbII9WW4flFs15EKoMgS1w/PJ -zbsySaSy5IVS8XeShmT9+3lrleed4sy+UwJBAJOOAbxhfXP5r4+5R6ql66jES75w -jUCVJzJA5ORJrn8g64u2eGK28z/LFQbv9wXgCwfc72R468BdawFSLa/m2EECQGbZ -rWiFla26IVXV0xcD98VWJsTBZMlgPnSOqoMdM1kSEd4fUmlAYI/dFzV1XYSkOmVr -FhdZnklmpVDeu27P4c0CQQCuCOup0FlJSBpWY1TTfun/KMBkBatMz0VMA3d7FKIU -csPezl677Yjo8u1r/KzeI6zLg87Z8E6r6ZWNc9wBSZK6 ------END RSA TESTING KEY-----`) - -const clientECDSACertificatePEM = ` ------BEGIN CERTIFICATE----- -MIIB/DCCAV4CCQCaMIRsJjXZFzAJBgcqhkjOPQQBMEUxCzAJBgNVBAYTAkFVMRMw -EQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0 -eSBMdGQwHhcNMTIxMTE0MTMyNTUzWhcNMjIxMTEyMTMyNTUzWjBBMQswCQYDVQQG -EwJBVTEMMAoGA1UECBMDTlNXMRAwDgYDVQQHEwdQeXJtb250MRIwEAYDVQQDEwlK -b2VsIFNpbmcwgZswEAYHKoZIzj0CAQYFK4EEACMDgYYABACVjJF1FMBexFe01MNv -ja5oHt1vzobhfm6ySD6B5U7ixohLZNz1MLvT/2XMW/TdtWo+PtAd3kfDdq0Z9kUs -jLzYHQFMH3CQRnZIi4+DzEpcj0B22uCJ7B0rxE4wdihBsmKo+1vx+U56jb0JuK7q -ixgnTy5w/hOWusPTQBbNZU6sER7m8TAJBgcqhkjOPQQBA4GMADCBiAJCAOAUxGBg -C3JosDJdYUoCdFzCgbkWqD8pyDbHgf9stlvZcPE4O1BIKJTLCRpS8V3ujfK58PDa -2RU6+b0DeoeiIzXsAkIBo9SKeDUcSpoj0gq+KxAxnZxfvuiRs9oa9V2jI/Umi0Vw -jWVim34BmT0Y9hCaOGGbLlfk+syxis7iI6CH8OFnUes= ------END CERTIFICATE-----` - -var clientECDSAKeyPEM = testingKey(` ------BEGIN EC PARAMETERS----- -BgUrgQQAIw== ------END EC PARAMETERS----- ------BEGIN EC TESTING KEY----- -MIHcAgEBBEIBkJN9X4IqZIguiEVKMqeBUP5xtRsEv4HJEtOpOGLELwO53SD78Ew8 -k+wLWoqizS3NpQyMtrU8JFdWfj+C57UNkOugBwYFK4EEACOhgYkDgYYABACVjJF1 -FMBexFe01MNvja5oHt1vzobhfm6ySD6B5U7ixohLZNz1MLvT/2XMW/TdtWo+PtAd -3kfDdq0Z9kUsjLzYHQFMH3CQRnZIi4+DzEpcj0B22uCJ7B0rxE4wdihBsmKo+1vx -+U56jb0JuK7qixgnTy5w/hOWusPTQBbNZU6sER7m8Q== ------END EC TESTING KEY-----`) - -const clientEd25519CertificatePEM = ` ------BEGIN CERTIFICATE----- -MIIBLjCB4aADAgECAhAX0YGTviqMISAQJRXoNCNPMAUGAytlcDASMRAwDgYDVQQK -EwdBY21lIENvMB4XDTE5MDUxNjIxNTQyNloXDTIwMDUxNTIxNTQyNlowEjEQMA4G -A1UEChMHQWNtZSBDbzAqMAUGAytlcAMhAAvgtWC14nkwPb7jHuBQsQTIbcd4bGkv -xRStmmNveRKRo00wSzAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUH -AwIwDAYDVR0TAQH/BAIwADAWBgNVHREEDzANggtleGFtcGxlLmNvbTAFBgMrZXAD -QQD8GRcqlKUx+inILn9boF2KTjRAOdazENwZ/qAicbP1j6FYDc308YUkv+Y9FN/f -7Q7hF9gRomDQijcjKsJGqjoI ------END CERTIFICATE-----` - -var clientEd25519KeyPEM = testingKey(` ------BEGIN TESTING KEY----- -MC4CAQAwBQYDK2VwBCIEINifzf07d9qx3d44e0FSbV4mC/xQxT644RRbpgNpin7I ------END TESTING KEY-----`) - func TestClientAuth(t *testing.T) { var certPath, keyPath, ecdsaCertPath, ecdsaKeyPath, ed25519CertPath, ed25519KeyPath string @@ -1688,59 +1518,6 @@ func TestGetConfigForClient(t *testing.T) { } } -func bigFromString(s string) *big.Int { - ret := new(big.Int) - ret.SetString(s, 10) - return ret -} - -func fromHex(s string) []byte { - b, _ := hex.DecodeString(s) - return b -} - -var testRSACertificate = fromHex("3082024b308201b4a003020102020900e8f09d3fe25beaa6300d06092a864886f70d01010b0500301f310b3009060355040a1302476f3110300e06035504031307476f20526f6f74301e170d3136303130313030303030305a170d3235303130313030303030305a301a310b3009060355040a1302476f310b300906035504031302476f30819f300d06092a864886f70d010101050003818d0030818902818100db467d932e12270648bc062821ab7ec4b6a25dfe1e5245887a3647a5080d92425bc281c0be97799840fb4f6d14fd2b138bc2a52e67d8d4099ed62238b74a0b74732bc234f1d193e596d9747bf3589f6c613cc0b041d4d92b2b2423775b1c3bbd755dce2054cfa163871d1e24c4f31d1a508baab61443ed97a77562f414c852d70203010001a38193308190300e0603551d0f0101ff0404030205a0301d0603551d250416301406082b0601050507030106082b06010505070302300c0603551d130101ff0402300030190603551d0e041204109f91161f43433e49a6de6db680d79f60301b0603551d230414301280104813494d137e1631bba301d5acab6e7b30190603551d1104123010820e6578616d706c652e676f6c616e67300d06092a864886f70d01010b0500038181009d30cc402b5b50a061cbbae55358e1ed8328a9581aa938a495a1ac315a1a84663d43d32dd90bf297dfd320643892243a00bccf9c7db74020015faad3166109a276fd13c3cce10c5ceeb18782f16c04ed73bbb343778d0c1cf10fa1d8408361c94c722b9daedb4606064df4c1b33ec0d1bd42d4dbfe3d1360845c21d33be9fae7") - -var testRSACertificateIssuer = fromHex("3082021930820182a003020102020900ca5e4e811a965964300d06092a864886f70d01010b0500301f310b3009060355040a1302476f3110300e06035504031307476f20526f6f74301e170d3136303130313030303030305a170d3235303130313030303030305a301f310b3009060355040a1302476f3110300e06035504031307476f20526f6f7430819f300d06092a864886f70d010101050003818d0030818902818100d667b378bb22f34143b6cd2008236abefaf2852adf3ab05e01329e2c14834f5105df3f3073f99dab5442d45ee5f8f57b0111c8cb682fbb719a86944eebfffef3406206d898b8c1b1887797c9c5006547bb8f00e694b7a063f10839f269f2c34fff7a1f4b21fbcd6bfdfb13ac792d1d11f277b5c5b48600992203059f2a8f8cc50203010001a35d305b300e0603551d0f0101ff040403020204301d0603551d250416301406082b0601050507030106082b06010505070302300f0603551d130101ff040530030101ff30190603551d0e041204104813494d137e1631bba301d5acab6e7b300d06092a864886f70d01010b050003818100c1154b4bab5266221f293766ae4138899bd4c5e36b13cee670ceeaa4cbdf4f6679017e2fe649765af545749fe4249418a56bd38a04b81e261f5ce86b8d5c65413156a50d12449554748c59a30c515bc36a59d38bddf51173e899820b282e40aa78c806526fd184fb6b4cf186ec728edffa585440d2b3225325f7ab580e87dd76") - -// testRSAPSSCertificate has signatureAlgorithm rsassaPss, but subjectPublicKeyInfo -// algorithm rsaEncryption, for use with the rsa_pss_rsae_* SignatureSchemes. -// See also TestRSAPSSKeyError. testRSAPSSCertificate is self-signed. -var testRSAPSSCertificate = fromHex("308202583082018da003020102021100f29926eb87ea8a0db9fcc247347c11b0304106092a864886f70d01010a3034a00f300d06096086480165030402010500a11c301a06092a864886f70d010108300d06096086480165030402010500a20302012030123110300e060355040a130741636d6520436f301e170d3137313132333136313631305a170d3138313132333136313631305a30123110300e060355040a130741636d6520436f30819f300d06092a864886f70d010101050003818d0030818902818100db467d932e12270648bc062821ab7ec4b6a25dfe1e5245887a3647a5080d92425bc281c0be97799840fb4f6d14fd2b138bc2a52e67d8d4099ed62238b74a0b74732bc234f1d193e596d9747bf3589f6c613cc0b041d4d92b2b2423775b1c3bbd755dce2054cfa163871d1e24c4f31d1a508baab61443ed97a77562f414c852d70203010001a3463044300e0603551d0f0101ff0404030205a030130603551d25040c300a06082b06010505070301300c0603551d130101ff04023000300f0603551d110408300687047f000001304106092a864886f70d01010a3034a00f300d06096086480165030402010500a11c301a06092a864886f70d010108300d06096086480165030402010500a20302012003818100cdac4ef2ce5f8d79881042707f7cbf1b5a8a00ef19154b40151771006cd41626e5496d56da0c1a139fd84695593cb67f87765e18aa03ea067522dd78d2a589b8c92364e12838ce346c6e067b51f1a7e6f4b37ffab13f1411896679d18e880e0ba09e302ac067efca460288e9538122692297ad8093d4f7dd701424d7700a46a1") - -var testECDSACertificate = fromHex("3082020030820162020900b8bf2d47a0d2ebf4300906072a8648ce3d04013045310b3009060355040613024155311330110603550408130a536f6d652d53746174653121301f060355040a1318496e7465726e6574205769646769747320507479204c7464301e170d3132313132323135303633325a170d3232313132303135303633325a3045310b3009060355040613024155311330110603550408130a536f6d652d53746174653121301f060355040a1318496e7465726e6574205769646769747320507479204c746430819b301006072a8648ce3d020106052b81040023038186000400c4a1edbe98f90b4873367ec316561122f23d53c33b4d213dcd6b75e6f6b0dc9adf26c1bcb287f072327cb3642f1c90bcea6823107efee325c0483a69e0286dd33700ef0462dd0da09c706283d881d36431aa9e9731bd96b068c09b23de76643f1a5c7fe9120e5858b65f70dd9bd8ead5d7f5d5ccb9b69f30665b669a20e227e5bffe3b300906072a8648ce3d040103818c0030818802420188a24febe245c5487d1bacf5ed989dae4770c05e1bb62fbdf1b64db76140d311a2ceee0b7e927eff769dc33b7ea53fcefa10e259ec472d7cacda4e970e15a06fd00242014dfcbe67139c2d050ebd3fa38c25c13313830d9406bbd4377af6ec7ac9862eddd711697f857c56defb31782be4c7780daecbbe9e4e3624317b6a0f399512078f2a") - -var testEd25519Certificate = fromHex("3082012e3081e1a00302010202100f431c425793941de987e4f1ad15005d300506032b657030123110300e060355040a130741636d6520436f301e170d3139303531363231333830315a170d3230303531353231333830315a30123110300e060355040a130741636d6520436f302a300506032b65700321003fe2152ee6e3ef3f4e854a7577a3649eede0bf842ccc92268ffa6f3483aaec8fa34d304b300e0603551d0f0101ff0404030205a030130603551d25040c300a06082b06010505070301300c0603551d130101ff0402300030160603551d11040f300d820b6578616d706c652e636f6d300506032b65700341006344ed9cc4be5324539fd2108d9fe82108909539e50dc155ff2c16b71dfcab7d4dd4e09313d0a942e0b66bfe5d6748d79f50bc6ccd4b03837cf20858cdaccf0c") - -var testSNICertificate = fromHex("0441883421114c81480804c430820237308201a0a003020102020900e8f09d3fe25beaa6300d06092a864886f70d01010b0500301f310b3009060355040a1302476f3110300e06035504031307476f20526f6f74301e170d3136303130313030303030305a170d3235303130313030303030305a3023310b3009060355040a1302476f311430120603550403130b736e69746573742e636f6d30819f300d06092a864886f70d010101050003818d0030818902818100db467d932e12270648bc062821ab7ec4b6a25dfe1e5245887a3647a5080d92425bc281c0be97799840fb4f6d14fd2b138bc2a52e67d8d4099ed62238b74a0b74732bc234f1d193e596d9747bf3589f6c613cc0b041d4d92b2b2423775b1c3bbd755dce2054cfa163871d1e24c4f31d1a508baab61443ed97a77562f414c852d70203010001a3773075300e0603551d0f0101ff0404030205a0301d0603551d250416301406082b0601050507030106082b06010505070302300c0603551d130101ff0402300030190603551d0e041204109f91161f43433e49a6de6db680d79f60301b0603551d230414301280104813494d137e1631bba301d5acab6e7b300d06092a864886f70d01010b0500038181007beeecff0230dbb2e7a334af65430b7116e09f327c3bbf918107fc9c66cb497493207ae9b4dbb045cb63d605ec1b5dd485bb69124d68fa298dc776699b47632fd6d73cab57042acb26f083c4087459bc5a3bb3ca4d878d7fe31016b7bc9a627438666566e3389bfaeebe6becc9a0093ceed18d0f9ac79d56f3a73f18188988ed") - -var testP256Certificate = fromHex("308201693082010ea00302010202105012dc24e1124ade4f3e153326ff27bf300a06082a8648ce3d04030230123110300e060355040a130741636d6520436f301e170d3137303533313232343934375a170d3138303533313232343934375a30123110300e060355040a130741636d6520436f3059301306072a8648ce3d020106082a8648ce3d03010703420004c02c61c9b16283bbcc14956d886d79b358aa614596975f78cece787146abf74c2d5dc578c0992b4f3c631373479ebf3892efe53d21c4f4f1cc9a11c3536b7f75a3463044300e0603551d0f0101ff0404030205a030130603551d25040c300a06082b06010505070301300c0603551d130101ff04023000300f0603551d1104083006820474657374300a06082a8648ce3d0403020349003046022100963712d6226c7b2bef41512d47e1434131aaca3ba585d666c924df71ac0448b3022100f4d05c725064741aef125f243cdbccaa2a5d485927831f221c43023bd5ae471a") - -var testRSAPrivateKey = &rsa.PrivateKey{ - PublicKey: rsa.PublicKey{ - N: bigFromString("153980389784927331788354528594524332344709972855165340650588877572729725338415474372475094155672066328274535240275856844648695200875763869073572078279316458648124537905600131008790701752441155668003033945258023841165089852359980273279085783159654751552359397986180318708491098942831252291841441726305535546071"), - E: 65537, - }, - D: bigFromString("7746362285745539358014631136245887418412633787074173796862711588221766398229333338511838891484974940633857861775630560092874987828057333663969469797013996401149696897591265769095952887917296740109742927689053276850469671231961384712725169432413343763989564437170644270643461665184965150423819594083121075825"), - Primes: []*big.Int{ - bigFromString("13299275414352936908236095374926261633419699590839189494995965049151460173257838079863316944311313904000258169883815802963543635820059341150014695560313417"), - bigFromString("11578103692682951732111718237224894755352163854919244905974423810539077224889290605729035287537520656160688625383765857517518932447378594964220731750802463"), - }, -} - -var testECDSAPrivateKey = &ecdsa.PrivateKey{ - PublicKey: ecdsa.PublicKey{ - Curve: elliptic.P521(), - X: bigFromString("2636411247892461147287360222306590634450676461695221912739908880441342231985950069527906976759812296359387337367668045707086543273113073382714101597903639351"), - Y: bigFromString("3204695818431246682253994090650952614555094516658732116404513121125038617915183037601737180082382202488628239201196033284060130040574800684774115478859677243"), - }, - D: bigFromString("5477294338614160138026852784385529180817726002953041720191098180813046231640184669647735805135001309477695746518160084669446643325196003346204701381388769751"), -} - -var testP256PrivateKey, _ = x509.ParseECPrivateKey(fromHex("30770201010420012f3b52bc54c36ba3577ad45034e2e8efe1e6999851284cb848725cfe029991a00a06082a8648ce3d030107a14403420004c02c61c9b16283bbcc14956d886d79b358aa614596975f78cece787146abf74c2d5dc578c0992b4f3c631373479ebf3892efe53d21c4f4f1cc9a11c3536b7f75")) - -var testEd25519PrivateKey = ed25519.PrivateKey(fromHex("3a884965e76b3f55e5faf9615458a92354894234de3ec9f684d46d55cebf3dc63fe2152ee6e3ef3f4e854a7577a3649eede0bf842ccc92268ffa6f3483aaec8f")) - func TestCloseServerConnectionOnIdleClient(t *testing.T) { clientConn, serverConn := localPipe(t) server := Server(serverConn, testConfig.Clone()) diff --git a/src/crypto/tls/handshake_test.go b/src/crypto/tls/handshake_test.go index 718e30a5d8..35c1fe8bf5 100644 --- a/src/crypto/tls/handshake_test.go +++ b/src/crypto/tls/handshake_test.go @@ -6,6 +6,8 @@ package tls import ( "bufio" + "crypto/ed25519" + "crypto/x509" "encoding/hex" "errors" "flag" @@ -19,6 +21,7 @@ import ( "strings" "sync" "testing" + "time" ) // TLS reference tests run a connection against a reference implementation @@ -39,38 +42,27 @@ import ( // the reference connection will always change. var ( - update = flag.Bool("update", false, "update golden files on disk") - fast = flag.Bool("fast", false, "impose a quick, possibly flaky timeout on recorded tests") - - opensslVersionTestOnce sync.Once - opensslVersionTestErr error + update = flag.Bool("update", false, "update golden files on disk") + fast = flag.Bool("fast", false, "impose a quick, possibly flaky timeout on recorded tests") + keyFile = flag.String("keylog", "", "destination file for KeyLogWriter") ) -func checkOpenSSLVersion(t *testing.T) { - opensslVersionTestOnce.Do(testOpenSSLVersion) - if opensslVersionTestErr != nil { - t.Fatal(opensslVersionTestErr) - } -} - -func testOpenSSLVersion() { - // This test ensures that the version of OpenSSL looks reasonable - // before updating the test data. - +// checkOpenSSLVersion ensures that the version of OpenSSL looks reasonable +// before updating the test data. +func checkOpenSSLVersion() error { if !*update { - return + return nil } openssl := exec.Command("openssl", "version") output, err := openssl.CombinedOutput() if err != nil { - opensslVersionTestErr = err - return + return err } version := string(output) if strings.HasPrefix(version, "OpenSSL 1.1.1") { - return + return nil } println("***********************************************") @@ -83,7 +75,7 @@ func testOpenSSLVersion() { println("and then add the apps/ directory at the front of your PATH.") println("***********************************************") - opensslVersionTestErr = errors.New("version of OpenSSL does not appear to be suitable for updating test data") + return errors.New("version of OpenSSL does not appear to be suitable for updating test data") } // recordingConn is a net.Conn that records the traffic that passes through it. @@ -254,7 +246,45 @@ func localPipe(t testing.TB) (net.Conn, net.Conn) { return c1, c2 } +// zeroSource is an io.Reader that returns an unlimited number of zero bytes. +type zeroSource struct{} + +func (zeroSource) Read(b []byte) (n int, err error) { + for i := range b { + b[i] = 0 + } + + return len(b), nil +} + +func allCipherSuites() []uint16 { + ids := make([]uint16, len(cipherSuites)) + for i, suite := range cipherSuites { + ids[i] = suite.id + } + + return ids +} + +var testConfig *Config + func TestMain(m *testing.M) { + flag.Parse() + os.Exit(runMain(m)) +} + +func runMain(m *testing.M) int { + // TLS 1.3 cipher suites preferences are not configurable and change based + // on the architecture. Force them to the version with AES acceleration for + // test consistency. + once.Do(initDefaultCipherSuites) + varDefaultCipherSuitesTLS13 = []uint16{ + TLS_AES_128_GCM_SHA256, + TLS_CHACHA20_POLY1305_SHA256, + TLS_AES_256_GCM_SHA384, + } + + // Set up localPipe. l, err := net.Listen("tcp", "127.0.0.1:0") if err != nil { l, err = net.Listen("tcp6", "[::1]:0") @@ -264,7 +294,181 @@ func TestMain(m *testing.M) { os.Exit(1) } localListener.Listener = l - exitCode := m.Run() - localListener.Close() - os.Exit(exitCode) + defer localListener.Close() + + if err := checkOpenSSLVersion(); err != nil { + fmt.Fprintf(os.Stderr, "Error: %v", err) + os.Exit(1) + } + + testConfig = &Config{ + Time: func() time.Time { return time.Unix(0, 0) }, + Rand: zeroSource{}, + Certificates: make([]Certificate, 2), + InsecureSkipVerify: true, + MinVersion: VersionSSL30, + MaxVersion: VersionTLS13, + CipherSuites: allCipherSuites(), + } + testConfig.Certificates[0].Certificate = [][]byte{testRSACertificate} + testConfig.Certificates[0].PrivateKey = testRSAPrivateKey + testConfig.Certificates[1].Certificate = [][]byte{testSNICertificate} + testConfig.Certificates[1].PrivateKey = testRSAPrivateKey + testConfig.BuildNameToCertificate() + if *keyFile != "" { + f, err := os.OpenFile(*keyFile, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) + if err != nil { + panic("failed to open -keylog file: " + err.Error()) + } + testConfig.KeyLogWriter = f + defer f.Close() + } + + return m.Run() } + +func testHandshake(t *testing.T, clientConfig, serverConfig *Config) (serverState, clientState ConnectionState, err error) { + const sentinel = "SENTINEL\n" + c, s := localPipe(t) + errChan := make(chan error) + go func() { + cli := Client(c, clientConfig) + err := cli.Handshake() + if err != nil { + errChan <- fmt.Errorf("client: %v", err) + c.Close() + return + } + defer cli.Close() + clientState = cli.ConnectionState() + buf, err := ioutil.ReadAll(cli) + if err != nil { + t.Errorf("failed to call cli.Read: %v", err) + } + if got := string(buf); got != sentinel { + t.Errorf("read %q from TLS connection, but expected %q", got, sentinel) + } + errChan <- nil + }() + server := Server(s, serverConfig) + err = server.Handshake() + if err == nil { + serverState = server.ConnectionState() + if _, err := io.WriteString(server, sentinel); err != nil { + t.Errorf("failed to call server.Write: %v", err) + } + if err := server.Close(); err != nil { + t.Errorf("failed to call server.Close: %v", err) + } + err = <-errChan + } else { + s.Close() + <-errChan + } + return +} + +func fromHex(s string) []byte { + b, _ := hex.DecodeString(s) + return b +} + +var testRSACertificate = fromHex("3082024b308201b4a003020102020900e8f09d3fe25beaa6300d06092a864886f70d01010b0500301f310b3009060355040a1302476f3110300e06035504031307476f20526f6f74301e170d3136303130313030303030305a170d3235303130313030303030305a301a310b3009060355040a1302476f310b300906035504031302476f30819f300d06092a864886f70d010101050003818d0030818902818100db467d932e12270648bc062821ab7ec4b6a25dfe1e5245887a3647a5080d92425bc281c0be97799840fb4f6d14fd2b138bc2a52e67d8d4099ed62238b74a0b74732bc234f1d193e596d9747bf3589f6c613cc0b041d4d92b2b2423775b1c3bbd755dce2054cfa163871d1e24c4f31d1a508baab61443ed97a77562f414c852d70203010001a38193308190300e0603551d0f0101ff0404030205a0301d0603551d250416301406082b0601050507030106082b06010505070302300c0603551d130101ff0402300030190603551d0e041204109f91161f43433e49a6de6db680d79f60301b0603551d230414301280104813494d137e1631bba301d5acab6e7b30190603551d1104123010820e6578616d706c652e676f6c616e67300d06092a864886f70d01010b0500038181009d30cc402b5b50a061cbbae55358e1ed8328a9581aa938a495a1ac315a1a84663d43d32dd90bf297dfd320643892243a00bccf9c7db74020015faad3166109a276fd13c3cce10c5ceeb18782f16c04ed73bbb343778d0c1cf10fa1d8408361c94c722b9daedb4606064df4c1b33ec0d1bd42d4dbfe3d1360845c21d33be9fae7") + +var testRSACertificateIssuer = fromHex("3082021930820182a003020102020900ca5e4e811a965964300d06092a864886f70d01010b0500301f310b3009060355040a1302476f3110300e06035504031307476f20526f6f74301e170d3136303130313030303030305a170d3235303130313030303030305a301f310b3009060355040a1302476f3110300e06035504031307476f20526f6f7430819f300d06092a864886f70d010101050003818d0030818902818100d667b378bb22f34143b6cd2008236abefaf2852adf3ab05e01329e2c14834f5105df3f3073f99dab5442d45ee5f8f57b0111c8cb682fbb719a86944eebfffef3406206d898b8c1b1887797c9c5006547bb8f00e694b7a063f10839f269f2c34fff7a1f4b21fbcd6bfdfb13ac792d1d11f277b5c5b48600992203059f2a8f8cc50203010001a35d305b300e0603551d0f0101ff040403020204301d0603551d250416301406082b0601050507030106082b06010505070302300f0603551d130101ff040530030101ff30190603551d0e041204104813494d137e1631bba301d5acab6e7b300d06092a864886f70d01010b050003818100c1154b4bab5266221f293766ae4138899bd4c5e36b13cee670ceeaa4cbdf4f6679017e2fe649765af545749fe4249418a56bd38a04b81e261f5ce86b8d5c65413156a50d12449554748c59a30c515bc36a59d38bddf51173e899820b282e40aa78c806526fd184fb6b4cf186ec728edffa585440d2b3225325f7ab580e87dd76") + +// testRSAPSSCertificate has signatureAlgorithm rsassaPss, but subjectPublicKeyInfo +// algorithm rsaEncryption, for use with the rsa_pss_rsae_* SignatureSchemes. +// See also TestRSAPSSKeyError. testRSAPSSCertificate is self-signed. +var testRSAPSSCertificate = fromHex("308202583082018da003020102021100f29926eb87ea8a0db9fcc247347c11b0304106092a864886f70d01010a3034a00f300d06096086480165030402010500a11c301a06092a864886f70d010108300d06096086480165030402010500a20302012030123110300e060355040a130741636d6520436f301e170d3137313132333136313631305a170d3138313132333136313631305a30123110300e060355040a130741636d6520436f30819f300d06092a864886f70d010101050003818d0030818902818100db467d932e12270648bc062821ab7ec4b6a25dfe1e5245887a3647a5080d92425bc281c0be97799840fb4f6d14fd2b138bc2a52e67d8d4099ed62238b74a0b74732bc234f1d193e596d9747bf3589f6c613cc0b041d4d92b2b2423775b1c3bbd755dce2054cfa163871d1e24c4f31d1a508baab61443ed97a77562f414c852d70203010001a3463044300e0603551d0f0101ff0404030205a030130603551d25040c300a06082b06010505070301300c0603551d130101ff04023000300f0603551d110408300687047f000001304106092a864886f70d01010a3034a00f300d06096086480165030402010500a11c301a06092a864886f70d010108300d06096086480165030402010500a20302012003818100cdac4ef2ce5f8d79881042707f7cbf1b5a8a00ef19154b40151771006cd41626e5496d56da0c1a139fd84695593cb67f87765e18aa03ea067522dd78d2a589b8c92364e12838ce346c6e067b51f1a7e6f4b37ffab13f1411896679d18e880e0ba09e302ac067efca460288e9538122692297ad8093d4f7dd701424d7700a46a1") + +var testECDSACertificate = fromHex("3082020030820162020900b8bf2d47a0d2ebf4300906072a8648ce3d04013045310b3009060355040613024155311330110603550408130a536f6d652d53746174653121301f060355040a1318496e7465726e6574205769646769747320507479204c7464301e170d3132313132323135303633325a170d3232313132303135303633325a3045310b3009060355040613024155311330110603550408130a536f6d652d53746174653121301f060355040a1318496e7465726e6574205769646769747320507479204c746430819b301006072a8648ce3d020106052b81040023038186000400c4a1edbe98f90b4873367ec316561122f23d53c33b4d213dcd6b75e6f6b0dc9adf26c1bcb287f072327cb3642f1c90bcea6823107efee325c0483a69e0286dd33700ef0462dd0da09c706283d881d36431aa9e9731bd96b068c09b23de76643f1a5c7fe9120e5858b65f70dd9bd8ead5d7f5d5ccb9b69f30665b669a20e227e5bffe3b300906072a8648ce3d040103818c0030818802420188a24febe245c5487d1bacf5ed989dae4770c05e1bb62fbdf1b64db76140d311a2ceee0b7e927eff769dc33b7ea53fcefa10e259ec472d7cacda4e970e15a06fd00242014dfcbe67139c2d050ebd3fa38c25c13313830d9406bbd4377af6ec7ac9862eddd711697f857c56defb31782be4c7780daecbbe9e4e3624317b6a0f399512078f2a") + +var testEd25519Certificate = fromHex("3082012e3081e1a00302010202100f431c425793941de987e4f1ad15005d300506032b657030123110300e060355040a130741636d6520436f301e170d3139303531363231333830315a170d3230303531353231333830315a30123110300e060355040a130741636d6520436f302a300506032b65700321003fe2152ee6e3ef3f4e854a7577a3649eede0bf842ccc92268ffa6f3483aaec8fa34d304b300e0603551d0f0101ff0404030205a030130603551d25040c300a06082b06010505070301300c0603551d130101ff0402300030160603551d11040f300d820b6578616d706c652e636f6d300506032b65700341006344ed9cc4be5324539fd2108d9fe82108909539e50dc155ff2c16b71dfcab7d4dd4e09313d0a942e0b66bfe5d6748d79f50bc6ccd4b03837cf20858cdaccf0c") + +var testSNICertificate = fromHex("0441883421114c81480804c430820237308201a0a003020102020900e8f09d3fe25beaa6300d06092a864886f70d01010b0500301f310b3009060355040a1302476f3110300e06035504031307476f20526f6f74301e170d3136303130313030303030305a170d3235303130313030303030305a3023310b3009060355040a1302476f311430120603550403130b736e69746573742e636f6d30819f300d06092a864886f70d010101050003818d0030818902818100db467d932e12270648bc062821ab7ec4b6a25dfe1e5245887a3647a5080d92425bc281c0be97799840fb4f6d14fd2b138bc2a52e67d8d4099ed62238b74a0b74732bc234f1d193e596d9747bf3589f6c613cc0b041d4d92b2b2423775b1c3bbd755dce2054cfa163871d1e24c4f31d1a508baab61443ed97a77562f414c852d70203010001a3773075300e0603551d0f0101ff0404030205a0301d0603551d250416301406082b0601050507030106082b06010505070302300c0603551d130101ff0402300030190603551d0e041204109f91161f43433e49a6de6db680d79f60301b0603551d230414301280104813494d137e1631bba301d5acab6e7b300d06092a864886f70d01010b0500038181007beeecff0230dbb2e7a334af65430b7116e09f327c3bbf918107fc9c66cb497493207ae9b4dbb045cb63d605ec1b5dd485bb69124d68fa298dc776699b47632fd6d73cab57042acb26f083c4087459bc5a3bb3ca4d878d7fe31016b7bc9a627438666566e3389bfaeebe6becc9a0093ceed18d0f9ac79d56f3a73f18188988ed") + +var testP256Certificate = fromHex("308201693082010ea00302010202105012dc24e1124ade4f3e153326ff27bf300a06082a8648ce3d04030230123110300e060355040a130741636d6520436f301e170d3137303533313232343934375a170d3138303533313232343934375a30123110300e060355040a130741636d6520436f3059301306072a8648ce3d020106082a8648ce3d03010703420004c02c61c9b16283bbcc14956d886d79b358aa614596975f78cece787146abf74c2d5dc578c0992b4f3c631373479ebf3892efe53d21c4f4f1cc9a11c3536b7f75a3463044300e0603551d0f0101ff0404030205a030130603551d25040c300a06082b06010505070301300c0603551d130101ff04023000300f0603551d1104083006820474657374300a06082a8648ce3d0403020349003046022100963712d6226c7b2bef41512d47e1434131aaca3ba585d666c924df71ac0448b3022100f4d05c725064741aef125f243cdbccaa2a5d485927831f221c43023bd5ae471a") + +var testRSAPrivateKey, _ = x509.ParsePKCS1PrivateKey(fromHex("3082025b02010002818100db467d932e12270648bc062821ab7ec4b6a25dfe1e5245887a3647a5080d92425bc281c0be97799840fb4f6d14fd2b138bc2a52e67d8d4099ed62238b74a0b74732bc234f1d193e596d9747bf3589f6c613cc0b041d4d92b2b2423775b1c3bbd755dce2054cfa163871d1e24c4f31d1a508baab61443ed97a77562f414c852d702030100010281800b07fbcf48b50f1388db34b016298b8217f2092a7c9a04f77db6775a3d1279b62ee9951f7e371e9de33f015aea80660760b3951dc589a9f925ed7de13e8f520e1ccbc7498ce78e7fab6d59582c2386cc07ed688212a576ff37833bd5943483b5554d15a0b9b4010ed9bf09f207e7e9805f649240ed6c1256ed75ab7cd56d9671024100fded810da442775f5923debae4ac758390a032a16598d62f059bb2e781a9c2f41bfa015c209f966513fe3bf5a58717cbdb385100de914f88d649b7d15309fa49024100dd10978c623463a1802c52f012cfa72ff5d901f25a2292446552c2568b1840e49a312e127217c2186615aae4fb6602a4f6ebf3f3d160f3b3ad04c592f65ae41f02400c69062ca781841a09de41ed7a6d9f54adc5d693a2c6847949d9e1358555c9ac6a8d9e71653ac77beb2d3abaf7bb1183aa14278956575dbebf525d0482fd72d90240560fe1900ba36dae3022115fd952f2399fb28e2975a1c3e3d0b679660bdcb356cc189d611cfdd6d87cd5aea45aa30a2082e8b51e94c2f3dd5d5c6036a8a615ed0240143993d80ece56f877cb80048335701eb0e608cc0c1ca8c2227b52edf8f1ac99c562f2541b5ce81f0515af1c5b4770dba53383964b4b725ff46fdec3d08907df")) + +var testECDSAPrivateKey, _ = x509.ParseECPrivateKey(fromHex("3081dc0201010442019883e909ad0ac9ea3d33f9eae661f1785206970f8ca9a91672f1eedca7a8ef12bd6561bb246dda5df4b4d5e7e3a92649bc5d83a0bf92972e00e62067d0c7bd99d7a00706052b81040023a18189038186000400c4a1edbe98f90b4873367ec316561122f23d53c33b4d213dcd6b75e6f6b0dc9adf26c1bcb287f072327cb3642f1c90bcea6823107efee325c0483a69e0286dd33700ef0462dd0da09c706283d881d36431aa9e9731bd96b068c09b23de76643f1a5c7fe9120e5858b65f70dd9bd8ead5d7f5d5ccb9b69f30665b669a20e227e5bffe3b")) + +var testP256PrivateKey, _ = x509.ParseECPrivateKey(fromHex("30770201010420012f3b52bc54c36ba3577ad45034e2e8efe1e6999851284cb848725cfe029991a00a06082a8648ce3d030107a14403420004c02c61c9b16283bbcc14956d886d79b358aa614596975f78cece787146abf74c2d5dc578c0992b4f3c631373479ebf3892efe53d21c4f4f1cc9a11c3536b7f75")) + +var testEd25519PrivateKey = ed25519.PrivateKey(fromHex("3a884965e76b3f55e5faf9615458a92354894234de3ec9f684d46d55cebf3dc63fe2152ee6e3ef3f4e854a7577a3649eede0bf842ccc92268ffa6f3483aaec8f")) + +const clientCertificatePEM = ` +-----BEGIN CERTIFICATE----- +MIIB7zCCAVigAwIBAgIQXBnBiWWDVW/cC8m5k5/pvDANBgkqhkiG9w0BAQsFADAS +MRAwDgYDVQQKEwdBY21lIENvMB4XDTE2MDgxNzIxNTIzMVoXDTE3MDgxNzIxNTIz +MVowEjEQMA4GA1UEChMHQWNtZSBDbzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC +gYEAum+qhr3Pv5/y71yUYHhv6BPy0ZZvzdkybiI3zkH5yl0prOEn2mGi7oHLEMff +NFiVhuk9GeZcJ3NgyI14AvQdpJgJoxlwaTwlYmYqqyIjxXuFOE8uCXMyp70+m63K +hAfmDzr/d8WdQYUAirab7rCkPy1MTOZCPrtRyN1IVPQMjkcCAwEAAaNGMEQwDgYD +VR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMAwGA1UdEwEB/wQCMAAw +DwYDVR0RBAgwBocEfwAAATANBgkqhkiG9w0BAQsFAAOBgQBGq0Si+yhU+Fpn+GKU +8ZqyGJ7ysd4dfm92lam6512oFmyc9wnTN+RLKzZ8Aa1B0jLYw9KT+RBrjpW5LBeK +o0RIvFkTgxYEiKSBXCUNmAysEbEoVr4dzWFihAm/1oDGRY2CLLTYg5vbySK3KhIR +e/oCO8HJ/+rJnahJ05XX1Q7lNQ== +-----END CERTIFICATE-----` + +var clientKeyPEM = testingKey(` +-----BEGIN RSA TESTING KEY----- +MIICXQIBAAKBgQC6b6qGvc+/n/LvXJRgeG/oE/LRlm/N2TJuIjfOQfnKXSms4Sfa +YaLugcsQx980WJWG6T0Z5lwnc2DIjXgC9B2kmAmjGXBpPCViZiqrIiPFe4U4Ty4J +czKnvT6brcqEB+YPOv93xZ1BhQCKtpvusKQ/LUxM5kI+u1HI3UhU9AyORwIDAQAB +AoGAEJZ03q4uuMb7b26WSQsOMeDsftdatT747LGgs3pNRkMJvTb/O7/qJjxoG+Mc +qeSj0TAZXp+PXXc3ikCECAc+R8rVMfWdmp903XgO/qYtmZGCorxAHEmR80SrfMXv +PJnznLQWc8U9nphQErR+tTESg7xWEzmFcPKwnZd1xg8ERYkCQQDTGtrFczlB2b/Z +9TjNMqUlMnTLIk/a/rPE2fLLmAYhK5sHnJdvDURaH2mF4nso0EGtENnTsh6LATnY +dkrxXGm9AkEA4hXHG2q3MnhgK1Z5hjv+Fnqd+8bcbII9WW4flFs15EKoMgS1w/PJ +zbsySaSy5IVS8XeShmT9+3lrleed4sy+UwJBAJOOAbxhfXP5r4+5R6ql66jES75w +jUCVJzJA5ORJrn8g64u2eGK28z/LFQbv9wXgCwfc72R468BdawFSLa/m2EECQGbZ +rWiFla26IVXV0xcD98VWJsTBZMlgPnSOqoMdM1kSEd4fUmlAYI/dFzV1XYSkOmVr +FhdZnklmpVDeu27P4c0CQQCuCOup0FlJSBpWY1TTfun/KMBkBatMz0VMA3d7FKIU +csPezl677Yjo8u1r/KzeI6zLg87Z8E6r6ZWNc9wBSZK6 +-----END RSA TESTING KEY-----`) + +const clientECDSACertificatePEM = ` +-----BEGIN CERTIFICATE----- +MIIB/DCCAV4CCQCaMIRsJjXZFzAJBgcqhkjOPQQBMEUxCzAJBgNVBAYTAkFVMRMw +EQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0 +eSBMdGQwHhcNMTIxMTE0MTMyNTUzWhcNMjIxMTEyMTMyNTUzWjBBMQswCQYDVQQG +EwJBVTEMMAoGA1UECBMDTlNXMRAwDgYDVQQHEwdQeXJtb250MRIwEAYDVQQDEwlK +b2VsIFNpbmcwgZswEAYHKoZIzj0CAQYFK4EEACMDgYYABACVjJF1FMBexFe01MNv +ja5oHt1vzobhfm6ySD6B5U7ixohLZNz1MLvT/2XMW/TdtWo+PtAd3kfDdq0Z9kUs +jLzYHQFMH3CQRnZIi4+DzEpcj0B22uCJ7B0rxE4wdihBsmKo+1vx+U56jb0JuK7q +ixgnTy5w/hOWusPTQBbNZU6sER7m8TAJBgcqhkjOPQQBA4GMADCBiAJCAOAUxGBg +C3JosDJdYUoCdFzCgbkWqD8pyDbHgf9stlvZcPE4O1BIKJTLCRpS8V3ujfK58PDa +2RU6+b0DeoeiIzXsAkIBo9SKeDUcSpoj0gq+KxAxnZxfvuiRs9oa9V2jI/Umi0Vw +jWVim34BmT0Y9hCaOGGbLlfk+syxis7iI6CH8OFnUes= +-----END CERTIFICATE-----` + +var clientECDSAKeyPEM = testingKey(` +-----BEGIN EC PARAMETERS----- +BgUrgQQAIw== +-----END EC PARAMETERS----- +-----BEGIN EC TESTING KEY----- +MIHcAgEBBEIBkJN9X4IqZIguiEVKMqeBUP5xtRsEv4HJEtOpOGLELwO53SD78Ew8 +k+wLWoqizS3NpQyMtrU8JFdWfj+C57UNkOugBwYFK4EEACOhgYkDgYYABACVjJF1 +FMBexFe01MNvja5oHt1vzobhfm6ySD6B5U7ixohLZNz1MLvT/2XMW/TdtWo+PtAd +3kfDdq0Z9kUsjLzYHQFMH3CQRnZIi4+DzEpcj0B22uCJ7B0rxE4wdihBsmKo+1vx ++U56jb0JuK7qixgnTy5w/hOWusPTQBbNZU6sER7m8Q== +-----END EC TESTING KEY-----`) + +const clientEd25519CertificatePEM = ` +-----BEGIN CERTIFICATE----- +MIIBLjCB4aADAgECAhAX0YGTviqMISAQJRXoNCNPMAUGAytlcDASMRAwDgYDVQQK +EwdBY21lIENvMB4XDTE5MDUxNjIxNTQyNloXDTIwMDUxNTIxNTQyNlowEjEQMA4G +A1UEChMHQWNtZSBDbzAqMAUGAytlcAMhAAvgtWC14nkwPb7jHuBQsQTIbcd4bGkv +xRStmmNveRKRo00wSzAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUH +AwIwDAYDVR0TAQH/BAIwADAWBgNVHREEDzANggtleGFtcGxlLmNvbTAFBgMrZXAD +QQD8GRcqlKUx+inILn9boF2KTjRAOdazENwZ/qAicbP1j6FYDc308YUkv+Y9FN/f +7Q7hF9gRomDQijcjKsJGqjoI +-----END CERTIFICATE-----` + +var clientEd25519KeyPEM = testingKey(` +-----BEGIN TESTING KEY----- +MC4CAQAwBQYDK2VwBCIEINifzf07d9qx3d44e0FSbV4mC/xQxT644RRbpgNpin7I +-----END TESTING KEY-----`) From ee63782fd6bde490b31db9fbb00677ac4094bdc4 Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Wed, 19 Jun 2019 18:31:43 -0400 Subject: [PATCH 007/255] crypto/tls: reject low-order Curve25519 points The RFC recommends checking the X25519 output to ensure it's not the zero value, to guard against peers trying to remove contributory behavior. In TLS there should be enough transcript involvement to mitigate any attack, and the RSA key exchange would suffer from the same issues by design, so not proposing a backport. See #31846 Change-Id: I8e657f8ee8aa72c3f8ca3b124555202638c53f5e Reviewed-on: https://go-review.googlesource.com/c/go/+/183039 Run-TryBot: Filippo Valsorda TryBot-Result: Gobot Gobot Reviewed-by: Adam Langley --- src/crypto/tls/key_schedule.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/crypto/tls/key_schedule.go b/src/crypto/tls/key_schedule.go index 3cd6e8297a..83e5480fc5 100644 --- a/src/crypto/tls/key_schedule.go +++ b/src/crypto/tls/key_schedule.go @@ -7,6 +7,7 @@ package tls import ( "crypto/elliptic" "crypto/hmac" + "crypto/subtle" "errors" "golang.org/x/crypto/cryptobyte" "golang.org/x/crypto/curve25519" @@ -193,8 +194,16 @@ func (p *x25519Parameters) SharedKey(peerPublicKey []byte) []byte { if len(peerPublicKey) != 32 { return nil } + var theirPublicKey, sharedKey [32]byte copy(theirPublicKey[:], peerPublicKey) curve25519.ScalarMult(&sharedKey, &p.privateKey, &theirPublicKey) + + // Check for low-order inputs. See RFC 8422, Section 5.11. + var allZeroes [32]byte + if subtle.ConstantTimeCompare(allZeroes[:], sharedKey[:]) == 1 { + return nil + } + return sharedKey[:] } From 94aa15543208c6f2e914539bfeddc3dd1e62a32b Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Wed, 19 Jun 2019 21:13:20 -0400 Subject: [PATCH 008/255] crypto/x509: normalize and expand docs of Parse and Marshal functions Change-Id: I8f0e109053bbbd8bde4fa64059fd070d8f4acef2 Reviewed-on: https://go-review.googlesource.com/c/go/+/183117 Reviewed-by: Adam Langley --- src/crypto/x509/pkcs1.go | 16 +++++++++++++--- src/crypto/x509/pkcs8.go | 19 ++++++++++++------- src/crypto/x509/sec1.go | 10 ++++++++-- src/crypto/x509/x509.go | 17 ++++++++++------- 4 files changed, 43 insertions(+), 19 deletions(-) diff --git a/src/crypto/x509/pkcs1.go b/src/crypto/x509/pkcs1.go index 5857c17a45..a48c6f9d64 100644 --- a/src/crypto/x509/pkcs1.go +++ b/src/crypto/x509/pkcs1.go @@ -41,7 +41,9 @@ type pkcs1PublicKey struct { E int } -// ParsePKCS1PrivateKey returns an RSA private key from its ASN.1 PKCS#1 DER encoded form. +// ParsePKCS1PrivateKey parses an RSA private key in PKCS#1, ASN.1 DER form. +// +// This kind of key is commonly encoded in PEM blocks of type "RSA PRIVATE KEY". func ParsePKCS1PrivateKey(der []byte) (*rsa.PrivateKey, error) { var priv pkcs1PrivateKey rest, err := asn1.Unmarshal(der, &priv) @@ -94,7 +96,11 @@ func ParsePKCS1PrivateKey(der []byte) (*rsa.PrivateKey, error) { return key, nil } -// MarshalPKCS1PrivateKey converts a private key to ASN.1 DER encoded form. +// MarshalPKCS1PrivateKey converts an RSA private key to PKCS#1, ASN.1 DER form. +// +// This kind of key is commonly encoded in PEM blocks of type "RSA PRIVATE KEY". +// For a more flexible key format which is not RSA specific, use +// MarshalPKCS8PrivateKey. func MarshalPKCS1PrivateKey(key *rsa.PrivateKey) []byte { key.Precompute() @@ -126,7 +132,9 @@ func MarshalPKCS1PrivateKey(key *rsa.PrivateKey) []byte { return b } -// ParsePKCS1PublicKey parses a PKCS#1 public key in ASN.1 DER form. +// ParsePKCS1PublicKey parses an RSA public key in PKCS#1, ASN.1 DER form. +// +// This kind of key is commonly encoded in PEM blocks of type "RSA PUBLIC KEY". func ParsePKCS1PublicKey(der []byte) (*rsa.PublicKey, error) { var pub pkcs1PublicKey rest, err := asn1.Unmarshal(der, &pub) @@ -154,6 +162,8 @@ func ParsePKCS1PublicKey(der []byte) (*rsa.PublicKey, error) { } // MarshalPKCS1PublicKey converts an RSA public key to PKCS#1, ASN.1 DER form. +// +// This kind of key is commonly encoded in PEM blocks of type "RSA PUBLIC KEY". func MarshalPKCS1PublicKey(key *rsa.PublicKey) []byte { derBytes, _ := asn1.Marshal(pkcs1PublicKey{ N: key.N, diff --git a/src/crypto/x509/pkcs8.go b/src/crypto/x509/pkcs8.go index fa1847e5e7..d37fc9e1b3 100644 --- a/src/crypto/x509/pkcs8.go +++ b/src/crypto/x509/pkcs8.go @@ -24,9 +24,12 @@ type pkcs8 struct { // optional attributes omitted. } -// ParsePKCS8PrivateKey parses an unencrypted, PKCS#8 private key. It returns a -// *rsa.PrivateKey, a *ecdsa.PrivateKey, or a ed25519.PrivateKey. More types -// might be supported in future versions. See RFC 5208 and RFC 8410. +// ParsePKCS8PrivateKey parses an unencrypted private key in PKCS#8, ASN.1 DER form. +// +// It returns a *rsa.PrivateKey, a *ecdsa.PrivateKey, or a ed25519.PrivateKey. +// More types might be supported in the future. +// +// This kind of key is commonly encoded in PEM blocks of type "PRIVATE KEY". func ParsePKCS8PrivateKey(der []byte) (key interface{}, err error) { var privKey pkcs8 if _, err := asn1.Unmarshal(der, &privKey); err != nil { @@ -76,10 +79,12 @@ func ParsePKCS8PrivateKey(der []byte) (key interface{}, err error) { } } -// MarshalPKCS8PrivateKey converts a private key to PKCS#8 encoded form. -// The following key types are currently supported: *rsa.PrivateKey, -// *ecdsa.PrivateKey and ed25519.PrivateKey. Unsupported key types result in an -// error. See RFC 5208 and RFC 8410. +// MarshalPKCS8PrivateKey converts an RSA private key to PKCS#8, ASN.1 DER form. +// +// The following key types are currently supported: *rsa.PrivateKey, *ecdsa.PrivateKey +// and ed25519.PrivateKey. Unsupported key types result in an error. +// +// This kind of key is commonly encoded in PEM blocks of type "PRIVATE KEY". func MarshalPKCS8PrivateKey(key interface{}) ([]byte, error) { var privKey pkcs8 diff --git a/src/crypto/x509/sec1.go b/src/crypto/x509/sec1.go index faba9dbe5d..6cffa59d0e 100644 --- a/src/crypto/x509/sec1.go +++ b/src/crypto/x509/sec1.go @@ -28,12 +28,18 @@ type ecPrivateKey struct { PublicKey asn1.BitString `asn1:"optional,explicit,tag:1"` } -// ParseECPrivateKey parses an ASN.1 Elliptic Curve Private Key Structure. +// ParseECPrivateKey parses an EC public key in SEC 1, ASN.1 DER form. +// +// This kind of key is commonly encoded in PEM blocks of type "EC PUBLIC KEY". func ParseECPrivateKey(der []byte) (*ecdsa.PrivateKey, error) { return parseECPrivateKey(nil, der) } -// MarshalECPrivateKey marshals an EC private key into ASN.1, DER format. +// MarshalECPrivateKey converts an EC private key to SEC 1, ASN.1 DER form. +// +// This kind of key is commonly encoded in PEM blocks of type "EC PRIVATE KEY". +// For a more flexible key format which is not EC specific, use +// MarshalPKCS8PrivateKey. func MarshalECPrivateKey(key *ecdsa.PrivateKey) ([]byte, error) { oid, ok := oidFromNamedCurve(key.Curve) if !ok { diff --git a/src/crypto/x509/x509.go b/src/crypto/x509/x509.go index 16c0526196..1cd8fdeb33 100644 --- a/src/crypto/x509/x509.go +++ b/src/crypto/x509/x509.go @@ -44,14 +44,12 @@ type pkixPublicKey struct { BitString asn1.BitString } -// ParsePKIXPublicKey parses a DER encoded public key. These values are -// typically found in PEM blocks with "BEGIN PUBLIC KEY". +// ParsePKIXPublicKey parses a public key in PKIX, ASN.1 DER form. // -// Supported key types include RSA, DSA, and ECDSA. Unknown key -// types result in an error. +// It returns a *rsa.PublicKey, *dsa.PublicKey, *ecdsa.PublicKey, or +// ed25519.PublicKey. More types might be supported in the future. // -// On success, pub will be of type *rsa.PublicKey, *dsa.PublicKey, -// *ecdsa.PublicKey, or ed25519.PublicKey. +// This kind of key is commonly encoded in PEM blocks of type "PUBLIC KEY". func ParsePKIXPublicKey(derBytes []byte) (pub interface{}, err error) { var pki publicKeyInfo if rest, err := asn1.Unmarshal(derBytes, &pki); err != nil { @@ -106,7 +104,12 @@ func marshalPublicKey(pub interface{}) (publicKeyBytes []byte, publicKeyAlgorith return publicKeyBytes, publicKeyAlgorithm, nil } -// MarshalPKIXPublicKey serialises a public key to DER-encoded PKIX format. +// MarshalPKIXPublicKey converts a public key to PKIX, ASN.1 DER form. +// +// The following key types are currently supported: *rsa.PublicKey, *ecdsa.PublicKey +// and ed25519.PublicKey. Unsupported key types result in an error. +// +// This kind of key is commonly encoded in PEM blocks of type "PUBLIC KEY". func MarshalPKIXPublicKey(pub interface{}) ([]byte, error) { var publicKeyBytes []byte var publicKeyAlgorithm pkix.AlgorithmIdentifier From 3ed5a53f9d1c9713c7d2748f7744534e404b80de Mon Sep 17 00:00:00 2001 From: Daniel Cormier Date: Wed, 19 Jun 2019 12:32:30 -0400 Subject: [PATCH 009/255] bufio: Reader.Read may return io.EOF even when it has data buffered If reading 0 bytes, don't return the error from the underlying io.Reader if there is still data buffered. Fixes #32693 Change-Id: I12a97bd6003c638c15d41028942f27edf88340e2 Reviewed-on: https://go-review.googlesource.com/c/go/+/182997 Run-TryBot: Robert Griesemer TryBot-Result: Gobot Gobot Reviewed-by: Robert Griesemer --- src/bufio/bufio.go | 3 +++ src/bufio/bufio_test.go | 54 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) diff --git a/src/bufio/bufio.go b/src/bufio/bufio.go index 0125d729d1..0f05d3b322 100644 --- a/src/bufio/bufio.go +++ b/src/bufio/bufio.go @@ -197,6 +197,9 @@ func (b *Reader) Discard(n int) (discarded int, err error) { func (b *Reader) Read(p []byte) (n int, err error) { n = len(p) if n == 0 { + if b.Buffered() > 0 { + return 0, nil + } return 0, b.readErr() } if b.r == b.w { diff --git a/src/bufio/bufio_test.go b/src/bufio/bufio_test.go index f7a0682e70..782ca2149a 100644 --- a/src/bufio/bufio_test.go +++ b/src/bufio/bufio_test.go @@ -1481,6 +1481,60 @@ func newScriptedReader(steps ...func(p []byte) (n int, err error)) io.Reader { return &sr } +// eofReader returns the number of bytes read and io.EOF for the read that consumes the last of the content. +type eofReader struct { + buf []byte +} + +func (r *eofReader) Read(p []byte) (int, error) { + read := copy(p, r.buf) + r.buf = r.buf[read:] + + switch read { + case 0, len(r.buf): + // As allowed in the documentation, this will return io.EOF + // in the same call that consumes the last of the data. + // https://godoc.org/io#Reader + return read, io.EOF + } + + return read, nil +} + +func TestPartialReadEOF(t *testing.T) { + src := make([]byte, 10) + eofR := &eofReader{buf: src} + r := NewReader(eofR) + + // Start by reading 5 of the 10 available bytes. + dest := make([]byte, 5) + read, err := r.Read(dest) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if n := len(dest); read != n { + t.Fatalf("read %d bytes; wanted %d bytes", read, n) + } + + // The Reader should have buffered all the content from the io.Reader. + if n := len(eofR.buf); n != 0 { + t.Fatalf("got %d bytes left in bufio.Reader source; want 0 bytes", n) + } + // To prove the point, check that there are still 5 bytes available to read. + if n := r.Buffered(); n != 5 { + t.Fatalf("got %d bytes buffered in bufio.Reader; want 5 bytes", n) + } + + // This is the second read of 0 bytes. + read, err = r.Read([]byte{}) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if read != 0 { + t.Fatalf("read %d bytes; want 0 bytes", read) + } +} + func BenchmarkReaderCopyOptimal(b *testing.B) { // Optimal case is where the underlying reader implements io.WriterTo srcBuf := bytes.NewBuffer(make([]byte, 8192)) From b5a8dcb0d2e8e2a58f0fdd9743eae9b3a2b39786 Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Thu, 20 Jun 2019 16:50:48 -0700 Subject: [PATCH 010/255] doc/go1.13: document changes to gofmt, go/* libs, and fix entry for text/scanner Change-Id: I2230a97c681406f248b7f2fff45dd80a4b54a4b3 Reviewed-on: https://go-review.googlesource.com/c/go/+/183357 Reviewed-by: Ian Lance Taylor --- doc/go1.13.html | 55 ++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 48 insertions(+), 7 deletions(-) diff --git a/doc/go1.13.html b/doc/go1.13.html index 5655b06d6c..e2099ce2d6 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -91,9 +91,9 @@ TODO

These language changes were implemented by changes to the compiler, and corresponding internal changes to the library - packages go/scanner and - text/scanner (number literals), - and go/types (signed shift counts). + packages go/scanner and + text/scanner (number literals), + and go/types (signed shift counts).

@@ -191,6 +191,22 @@ TODO introduced in ARM v8.1.

+

gofmt

+ +

+ gofmt (and with that go fmt) now canonicalizes + number literal prefixes and exponents to use lower-case letters, but + leaves hexadecimal digits alone. This improves readability when using the new octal prefix + (0O becomes 0o), and the rewrite is applied consistently. + gofmt now also removes unnecessary leading zeroes from a decimal integer + imaginary literal. (For backwards-compatibility, an integer imaginary literal + starting with 0 is considered a decimal, not an octal number. + Removing superfluous leading zeroes avoids potential confusion.) + For instance, 0B1010, 0XabcDEF, 0O660, + 1.2E3, and 01i become 0b1010, 0xabcDEF, + 0o660, 1.2e3, and 1i after applying gofmt. +

+

Runtime

@@ -338,7 +354,28 @@ TODO type attribute, code will now be interperted as JavaScript module script.

- + + +
go/scanner
+
+

+ The scanner has been updated to recognize the new Go number literals, specifically + binary literals with 0b/0B prefix, octal literals with 0o/0O prefix, + and floating-point numbers with hexadecimal mantissa. The imaginary suffix i may now be used with any number + literal, and underscores may used as digit separators for grouping. + See the Changes to the language for details. +

+ +
+ +
go/types
+
+

+ The type-checker has been updated to follow the new rules for integer shifts. + See the Changes to the language for details. +

+ +
log
@@ -537,9 +574,13 @@ TODO
text/scanner
-

- The new AllowNumberbars - mode allows number literals to contain underbars as digit separators. +

+ The scanner has been updated to recognize the new Go number literals, specifically + binary literals with 0b/0B prefix, octal literals with 0o/0O prefix, + and floating-point numbers with hexadecimal mantissa. + Also, the new AllowDigitSeparators + mode allows number literals to contain underscores as digit separators (off by default for backwards-compatibility). + See the Changes to the language for details.

From 1130cc745d45bc7248a2e133a609732a14486f01 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Wed, 19 Jun 2019 17:48:33 +0000 Subject: [PATCH 011/255] Revert "runtime: use dispatch semaphores on Darwin" This reverts https://golang.org/cl/182258. The new code caused unpredictable crashes that are not understood. The old code was occasionally flaky but still better than this approach. Fixes #32655 Updates #31264 Change-Id: I2e9d27d6052e84bf75106d8b844549ba4f571695 Reviewed-on: https://go-review.googlesource.com/c/go/+/182880 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Katie Hockman Reviewed-by: Keith Randall --- src/runtime/os_darwin.go | 60 ++++++++++++----- src/runtime/sys_darwin.go | 58 +++++++++++----- src/runtime/sys_darwin_386.s | 117 +++++++++++++++++++++------------ src/runtime/sys_darwin_amd64.s | 62 +++++++++++------ src/runtime/sys_darwin_arm.s | 54 ++++++++------- src/runtime/sys_darwin_arm64.s | 53 +++++++++------ 6 files changed, 265 insertions(+), 139 deletions(-) diff --git a/src/runtime/os_darwin.go b/src/runtime/os_darwin.go index 4b6dbf6427..819aaaca70 100644 --- a/src/runtime/os_darwin.go +++ b/src/runtime/os_darwin.go @@ -7,7 +7,10 @@ package runtime import "unsafe" type mOS struct { - sema uintptr + initialized bool + mutex pthreadmutex + cond pthreadcond + count int } func unimplemented(name string) { @@ -17,32 +20,59 @@ func unimplemented(name string) { //go:nosplit func semacreate(mp *m) { - if mp.sema == 0 { - mp.sema = dispatch_semaphore_create(0) + if mp.initialized { + return + } + mp.initialized = true + if err := pthread_mutex_init(&mp.mutex, nil); err != 0 { + throw("pthread_mutex_init") + } + if err := pthread_cond_init(&mp.cond, nil); err != 0 { + throw("pthread_cond_init") } } -const ( - _DISPATCH_TIME_NOW = uint64(0) - _DISPATCH_TIME_FOREVER = ^uint64(0) -) - //go:nosplit func semasleep(ns int64) int32 { - mp := getg().m - t := _DISPATCH_TIME_FOREVER + var start int64 if ns >= 0 { - t = dispatch_time(_DISPATCH_TIME_NOW, ns) + start = nanotime() } - if dispatch_semaphore_wait(mp.sema, t) != 0 { - return -1 + mp := getg().m + pthread_mutex_lock(&mp.mutex) + for { + if mp.count > 0 { + mp.count-- + pthread_mutex_unlock(&mp.mutex) + return 0 + } + if ns >= 0 { + spent := nanotime() - start + if spent >= ns { + pthread_mutex_unlock(&mp.mutex) + return -1 + } + var t timespec + t.setNsec(ns - spent) + err := pthread_cond_timedwait_relative_np(&mp.cond, &mp.mutex, &t) + if err == _ETIMEDOUT { + pthread_mutex_unlock(&mp.mutex) + return -1 + } + } else { + pthread_cond_wait(&mp.cond, &mp.mutex) + } } - return 0 } //go:nosplit func semawakeup(mp *m) { - dispatch_semaphore_signal(mp.sema) + pthread_mutex_lock(&mp.mutex) + mp.count++ + if mp.count > 0 { + pthread_cond_signal(&mp.cond) + } + pthread_mutex_unlock(&mp.mutex) } // BSD interface for threading. diff --git a/src/runtime/sys_darwin.go b/src/runtime/sys_darwin.go index 2aaa0f8546..b50d441d92 100644 --- a/src/runtime/sys_darwin.go +++ b/src/runtime/sys_darwin.go @@ -339,33 +339,52 @@ func kevent_trampoline() //go:nosplit //go:cgo_unsafe_args -func dispatch_semaphore_create(val int) (sema uintptr) { - libcCall(unsafe.Pointer(funcPC(dispatch_semaphore_create_trampoline)), unsafe.Pointer(&val)) - return +func pthread_mutex_init(m *pthreadmutex, attr *pthreadmutexattr) int32 { + return libcCall(unsafe.Pointer(funcPC(pthread_mutex_init_trampoline)), unsafe.Pointer(&m)) } -func dispatch_semaphore_create_trampoline() +func pthread_mutex_init_trampoline() //go:nosplit //go:cgo_unsafe_args -func dispatch_semaphore_wait(sema uintptr, t uint64) int32 { - return libcCall(unsafe.Pointer(funcPC(dispatch_semaphore_wait_trampoline)), unsafe.Pointer(&sema)) +func pthread_mutex_lock(m *pthreadmutex) int32 { + return libcCall(unsafe.Pointer(funcPC(pthread_mutex_lock_trampoline)), unsafe.Pointer(&m)) } -func dispatch_semaphore_wait_trampoline() +func pthread_mutex_lock_trampoline() //go:nosplit //go:cgo_unsafe_args -func dispatch_semaphore_signal(sema uintptr) { - libcCall(unsafe.Pointer(funcPC(dispatch_semaphore_signal_trampoline)), unsafe.Pointer(&sema)) +func pthread_mutex_unlock(m *pthreadmutex) int32 { + return libcCall(unsafe.Pointer(funcPC(pthread_mutex_unlock_trampoline)), unsafe.Pointer(&m)) } -func dispatch_semaphore_signal_trampoline() +func pthread_mutex_unlock_trampoline() //go:nosplit //go:cgo_unsafe_args -func dispatch_time(base uint64, delta int64) (result uint64) { - libcCall(unsafe.Pointer(funcPC(dispatch_time_trampoline)), unsafe.Pointer(&base)) - return +func pthread_cond_init(c *pthreadcond, attr *pthreadcondattr) int32 { + return libcCall(unsafe.Pointer(funcPC(pthread_cond_init_trampoline)), unsafe.Pointer(&c)) } -func dispatch_time_trampoline() +func pthread_cond_init_trampoline() + +//go:nosplit +//go:cgo_unsafe_args +func pthread_cond_wait(c *pthreadcond, m *pthreadmutex) int32 { + return libcCall(unsafe.Pointer(funcPC(pthread_cond_wait_trampoline)), unsafe.Pointer(&c)) +} +func pthread_cond_wait_trampoline() + +//go:nosplit +//go:cgo_unsafe_args +func pthread_cond_timedwait_relative_np(c *pthreadcond, m *pthreadmutex, t *timespec) int32 { + return libcCall(unsafe.Pointer(funcPC(pthread_cond_timedwait_relative_np_trampoline)), unsafe.Pointer(&c)) +} +func pthread_cond_timedwait_relative_np_trampoline() + +//go:nosplit +//go:cgo_unsafe_args +func pthread_cond_signal(c *pthreadcond) int32 { + return libcCall(unsafe.Pointer(funcPC(pthread_cond_signal_trampoline)), unsafe.Pointer(&c)) +} +func pthread_cond_signal_trampoline() // Not used on Darwin, but must be defined. func exitThread(wait *uint32) { @@ -411,10 +430,13 @@ func closeonexec(fd int32) { //go:cgo_import_dynamic libc_kqueue kqueue "/usr/lib/libSystem.B.dylib" //go:cgo_import_dynamic libc_kevent kevent "/usr/lib/libSystem.B.dylib" -//go:cgo_import_dynamic libc_dispatch_semaphore_create dispatch_semaphore_create "/usr/lib/libSystem.B.dylib" -//go:cgo_import_dynamic libc_dispatch_semaphore_wait dispatch_semaphore_wait "/usr/lib/libSystem.B.dylib" -//go:cgo_import_dynamic libc_dispatch_semaphore_signal dispatch_semaphore_signal "/usr/lib/libSystem.B.dylib" -//go:cgo_import_dynamic libc_dispatch_time dispatch_time "/usr/lib/libSystem.B.dylib" +//go:cgo_import_dynamic libc_pthread_mutex_init pthread_mutex_init "/usr/lib/libSystem.B.dylib" +//go:cgo_import_dynamic libc_pthread_mutex_lock pthread_mutex_lock "/usr/lib/libSystem.B.dylib" +//go:cgo_import_dynamic libc_pthread_mutex_unlock pthread_mutex_unlock "/usr/lib/libSystem.B.dylib" +//go:cgo_import_dynamic libc_pthread_cond_init pthread_cond_init "/usr/lib/libSystem.B.dylib" +//go:cgo_import_dynamic libc_pthread_cond_wait pthread_cond_wait "/usr/lib/libSystem.B.dylib" +//go:cgo_import_dynamic libc_pthread_cond_timedwait_relative_np pthread_cond_timedwait_relative_np "/usr/lib/libSystem.B.dylib" +//go:cgo_import_dynamic libc_pthread_cond_signal pthread_cond_signal "/usr/lib/libSystem.B.dylib" // Magic incantation to get libSystem actually dynamically linked. // TODO: Why does the code require this? See cmd/link/internal/ld/go.go diff --git a/src/runtime/sys_darwin_386.s b/src/runtime/sys_darwin_386.s index 0c54d13b02..9a0b3607c2 100644 --- a/src/runtime/sys_darwin_386.s +++ b/src/runtime/sys_darwin_386.s @@ -532,63 +532,96 @@ TEXT runtime·raise_trampoline(SB),NOSPLIT,$0 POPL BP RET -TEXT runtime·dispatch_semaphore_create_trampoline(SB),NOSPLIT,$0 - PUSHL BP - MOVL SP, BP - SUBL $8, SP - MOVL 16(SP), BX - MOVL 0(BX), AX // arg 1 value - MOVL AX, 0(SP) - CALL libc_dispatch_semaphore_create(SB) - MOVL AX, 4(BX) // result sema - MOVL BP, SP - POPL BP - RET - -TEXT runtime·dispatch_semaphore_wait_trampoline(SB),NOSPLIT,$0 - PUSHL BP - MOVL SP, BP - SUBL $24, SP - MOVL 32(SP), CX - MOVL 0(CX), AX // arg 1 sema - MOVL AX, 0(SP) - MOVL 4(CX), AX // arg 2 timeout/0 - MOVL AX, 4(SP) - MOVL 8(CX), AX // arg 2 timeout/1 - MOVL AX, 8(SP) - CALL libc_dispatch_semaphore_wait(SB) - MOVL BP, SP - POPL BP - RET - -TEXT runtime·dispatch_semaphore_signal_trampoline(SB),NOSPLIT,$0 +TEXT runtime·pthread_mutex_init_trampoline(SB),NOSPLIT,$0 PUSHL BP MOVL SP, BP SUBL $8, SP MOVL 16(SP), CX - MOVL 0(CX), AX // arg 1 sema + MOVL 0(CX), AX // arg 1 mutex MOVL AX, 0(SP) - CALL libc_dispatch_semaphore_signal(SB) + MOVL 4(CX), AX // arg 2 attr + MOVL AX, 4(SP) + CALL libc_pthread_mutex_init(SB) MOVL BP, SP POPL BP RET -TEXT runtime·dispatch_time_trampoline(SB),NOSPLIT,$0 +TEXT runtime·pthread_mutex_lock_trampoline(SB),NOSPLIT,$0 + PUSHL BP + MOVL SP, BP + SUBL $8, SP + MOVL 16(SP), CX + MOVL 0(CX), AX // arg 1 mutex + MOVL AX, 0(SP) + CALL libc_pthread_mutex_lock(SB) + MOVL BP, SP + POPL BP + RET + +TEXT runtime·pthread_mutex_unlock_trampoline(SB),NOSPLIT,$0 + PUSHL BP + MOVL SP, BP + SUBL $8, SP + MOVL 16(SP), CX + MOVL 0(CX), AX // arg 1 mutex + MOVL AX, 0(SP) + CALL libc_pthread_mutex_unlock(SB) + MOVL BP, SP + POPL BP + RET + +TEXT runtime·pthread_cond_init_trampoline(SB),NOSPLIT,$0 + PUSHL BP + MOVL SP, BP + SUBL $8, SP + MOVL 16(SP), CX + MOVL 0(CX), AX // arg 1 cond + MOVL AX, 0(SP) + MOVL 4(CX), AX // arg 2 attr + MOVL AX, 4(SP) + CALL libc_pthread_cond_init(SB) + MOVL BP, SP + POPL BP + RET + +TEXT runtime·pthread_cond_wait_trampoline(SB),NOSPLIT,$0 + PUSHL BP + MOVL SP, BP + SUBL $8, SP + MOVL 16(SP), CX + MOVL 0(CX), AX // arg 1 cond + MOVL AX, 0(SP) + MOVL 4(CX), AX // arg 2 mutex + MOVL AX, 4(SP) + CALL libc_pthread_cond_wait(SB) + MOVL BP, SP + POPL BP + RET + +TEXT runtime·pthread_cond_timedwait_relative_np_trampoline(SB),NOSPLIT,$0 PUSHL BP MOVL SP, BP SUBL $24, SP - MOVL 32(SP), BX - MOVL 0(BX), AX // arg 1 base/0 + MOVL 32(SP), CX + MOVL 0(CX), AX // arg 1 cond MOVL AX, 0(SP) - MOVL 4(BX), AX // arg 1 base/1 + MOVL 4(CX), AX // arg 2 mutex MOVL AX, 4(SP) - MOVL 8(BX), AX // arg 2 delta/0 + MOVL 8(CX), AX // arg 3 timeout MOVL AX, 8(SP) - MOVL 12(BX), AX // arg 2 delta/1 - MOVL AX, 12(SP) - CALL libc_dispatch_time(SB) - MOVL AX, 16(BX) // result/0 - MOVL DX, 20(BX) // result/1 + CALL libc_pthread_cond_timedwait_relative_np(SB) + MOVL BP, SP + POPL BP + RET + +TEXT runtime·pthread_cond_signal_trampoline(SB),NOSPLIT,$0 + PUSHL BP + MOVL SP, BP + SUBL $8, SP + MOVL 16(SP), CX + MOVL 0(CX), AX // arg 1 cond + MOVL AX, 0(SP) + CALL libc_pthread_cond_signal(SB) MOVL BP, SP POPL BP RET diff --git a/src/runtime/sys_darwin_amd64.s b/src/runtime/sys_darwin_amd64.s index 95ba496cbc..bbe6bc14bf 100644 --- a/src/runtime/sys_darwin_amd64.s +++ b/src/runtime/sys_darwin_amd64.s @@ -482,44 +482,64 @@ TEXT runtime·raise_trampoline(SB),NOSPLIT,$0 POPQ BP RET -TEXT runtime·dispatch_semaphore_create_trampoline(SB),NOSPLIT,$0 +TEXT runtime·pthread_mutex_init_trampoline(SB),NOSPLIT,$0 PUSHQ BP MOVQ SP, BP - MOVQ DI, BX - MOVQ 0(BX), DI // arg 1 value - CALL libc_dispatch_semaphore_create(SB) - MOVQ AX, 8(BX) // result sema + MOVQ 8(DI), SI // arg 2 attr + MOVQ 0(DI), DI // arg 1 mutex + CALL libc_pthread_mutex_init(SB) POPQ BP RET -TEXT runtime·dispatch_semaphore_wait_trampoline(SB),NOSPLIT,$0 +TEXT runtime·pthread_mutex_lock_trampoline(SB),NOSPLIT,$0 PUSHQ BP MOVQ SP, BP - MOVQ 8(DI), SI // arg 2 timeout - MOVQ 0(DI), DI // arg 1 sema - CALL libc_dispatch_semaphore_wait(SB) - TESTQ AX, AX // For safety convert 64-bit result to int32 0 or 1. - JEQ 2(PC) - MOVL $1, AX + MOVQ 0(DI), DI // arg 1 mutex + CALL libc_pthread_mutex_lock(SB) POPQ BP RET -TEXT runtime·dispatch_semaphore_signal_trampoline(SB),NOSPLIT,$0 +TEXT runtime·pthread_mutex_unlock_trampoline(SB),NOSPLIT,$0 PUSHQ BP MOVQ SP, BP - MOVQ 0(DI), DI // arg 1 sema - CALL libc_dispatch_semaphore_signal(SB) + MOVQ 0(DI), DI // arg 1 mutex + CALL libc_pthread_mutex_unlock(SB) POPQ BP RET -TEXT runtime·dispatch_time_trampoline(SB),NOSPLIT,$0 +TEXT runtime·pthread_cond_init_trampoline(SB),NOSPLIT,$0 PUSHQ BP MOVQ SP, BP - MOVQ DI, BX - MOVQ 0(BX), DI // arg 1 base - MOVQ 8(BX), SI // arg 2 delta - CALL libc_dispatch_time(SB) - MOVQ AX, 16(BX) + MOVQ 8(DI), SI // arg 2 attr + MOVQ 0(DI), DI // arg 1 cond + CALL libc_pthread_cond_init(SB) + POPQ BP + RET + +TEXT runtime·pthread_cond_wait_trampoline(SB),NOSPLIT,$0 + PUSHQ BP + MOVQ SP, BP + MOVQ 8(DI), SI // arg 2 mutex + MOVQ 0(DI), DI // arg 1 cond + CALL libc_pthread_cond_wait(SB) + POPQ BP + RET + +TEXT runtime·pthread_cond_timedwait_relative_np_trampoline(SB),NOSPLIT,$0 + PUSHQ BP + MOVQ SP, BP + MOVQ 8(DI), SI // arg 2 mutex + MOVQ 16(DI), DX // arg 3 timeout + MOVQ 0(DI), DI // arg 1 cond + CALL libc_pthread_cond_timedwait_relative_np(SB) + POPQ BP + RET + +TEXT runtime·pthread_cond_signal_trampoline(SB),NOSPLIT,$0 + PUSHQ BP + MOVQ SP, BP + MOVQ 0(DI), DI // arg 1 cond + CALL libc_pthread_cond_signal(SB) POPQ BP RET diff --git a/src/runtime/sys_darwin_arm.s b/src/runtime/sys_darwin_arm.s index bb0832f3af..82470bc4df 100644 --- a/src/runtime/sys_darwin_arm.s +++ b/src/runtime/sys_darwin_arm.s @@ -343,34 +343,44 @@ TEXT runtime·raise_trampoline(SB),NOSPLIT,$0 BL libc_raise(SB) RET -TEXT runtime·dispatch_semaphore_create_trampoline(SB),NOSPLIT,$0 - MOVW R0, R8 - MOVW 0(R8), R0 // arg 1 value - BL libc_dispatch_semaphore_create(SB) - MOVW R0, 4(R8) // result sema +TEXT runtime·pthread_mutex_init_trampoline(SB),NOSPLIT,$0 + MOVW 4(R0), R1 // arg 2 attr + MOVW 0(R0), R0 // arg 1 mutex + BL libc_pthread_mutex_init(SB) RET -TEXT runtime·dispatch_semaphore_wait_trampoline(SB),NOSPLIT,$0 - MOVW 4(R0), R1 // arg 2 timeout/0 - MOVW 8(R0), R2 // arg 2 timeout/1 - MOVW 0(R0), R0 // arg 1 sema - BL libc_dispatch_semaphore_wait(SB) +TEXT runtime·pthread_mutex_lock_trampoline(SB),NOSPLIT,$0 + MOVW 0(R0), R0 // arg 1 mutex + BL libc_pthread_mutex_lock(SB) RET -TEXT runtime·dispatch_semaphore_signal_trampoline(SB),NOSPLIT,$0 - MOVW 0(R0), R0 // arg 1 sema - BL libc_dispatch_semaphore_signal(SB) +TEXT runtime·pthread_mutex_unlock_trampoline(SB),NOSPLIT,$0 + MOVW 0(R0), R0 // arg 1 mutex + BL libc_pthread_mutex_unlock(SB) RET -TEXT runtime·dispatch_time_trampoline(SB),NOSPLIT,$0 - MOVW R0, R8 - MOVW 0(R8), R0 // arg 1 base/0 - MOVW 4(R8), R1 // arg 1 base/1 - MOVW 8(R8), R2 // arg 2 delta/0 - MOVW 12(R8), R3 // arg 2 delta/1 - BL libc_dispatch_time(SB) - MOVW R0, 16(R8) // result/0 - MOVW R1, 20(R8) // result/1 +TEXT runtime·pthread_cond_init_trampoline(SB),NOSPLIT,$0 + MOVW 4(R0), R1 // arg 2 attr + MOVW 0(R0), R0 // arg 1 cond + BL libc_pthread_cond_init(SB) + RET + +TEXT runtime·pthread_cond_wait_trampoline(SB),NOSPLIT,$0 + MOVW 4(R0), R1 // arg 2 mutex + MOVW 0(R0), R0 // arg 1 cond + BL libc_pthread_cond_wait(SB) + RET + +TEXT runtime·pthread_cond_timedwait_relative_np_trampoline(SB),NOSPLIT,$0 + MOVW 4(R0), R1 // arg 2 mutex + MOVW 8(R0), R2 // arg 3 timeout + MOVW 0(R0), R0 // arg 1 cond + BL libc_pthread_cond_timedwait_relative_np(SB) + RET + +TEXT runtime·pthread_cond_signal_trampoline(SB),NOSPLIT,$0 + MOVW 0(R0), R0 // arg 1 cond + BL libc_pthread_cond_signal(SB) RET // syscall calls a function in libc on behalf of the syscall package. diff --git a/src/runtime/sys_darwin_arm64.s b/src/runtime/sys_darwin_arm64.s index 4c81b99336..af03af37bb 100644 --- a/src/runtime/sys_darwin_arm64.s +++ b/src/runtime/sys_darwin_arm64.s @@ -409,33 +409,44 @@ TEXT runtime·raise_trampoline(SB),NOSPLIT,$0 BL libc_raise(SB) RET -TEXT runtime·dispatch_semaphore_create_trampoline(SB),NOSPLIT,$0 - MOVD R0, R19 - MOVD 0(R19), R0 // arg 1 value - BL libc_dispatch_semaphore_create(SB) - MOVD R0, 8(R19) // result sema +TEXT runtime·pthread_mutex_init_trampoline(SB),NOSPLIT,$0 + MOVD 8(R0), R1 // arg 2 attr + MOVD 0(R0), R0 // arg 1 mutex + BL libc_pthread_mutex_init(SB) RET -TEXT runtime·dispatch_semaphore_wait_trampoline(SB),NOSPLIT,$0 - MOVD 8(R0), R1 // arg 2 timeout - MOVD 0(R0), R0 // arg 1 sema - BL libc_dispatch_semaphore_wait(SB) - CMP $0, R0 // For safety convert 64-bit result to int32 0 or 1. - BEQ 2(PC) - MOVW $1, R0 +TEXT runtime·pthread_mutex_lock_trampoline(SB),NOSPLIT,$0 + MOVD 0(R0), R0 // arg 1 mutex + BL libc_pthread_mutex_lock(SB) RET -TEXT runtime·dispatch_semaphore_signal_trampoline(SB),NOSPLIT,$0 - MOVD 0(R0), R0 // arg 1 sema - BL libc_dispatch_semaphore_signal(SB) +TEXT runtime·pthread_mutex_unlock_trampoline(SB),NOSPLIT,$0 + MOVD 0(R0), R0 // arg 1 mutex + BL libc_pthread_mutex_unlock(SB) RET -TEXT runtime·dispatch_time_trampoline(SB),NOSPLIT,$0 - MOVD R0, R19 - MOVD 0(R19), R0 // arg 1 base - MOVD 8(R19), R1 // arg 2 delta - BL libc_dispatch_time(SB) - MOVD R0, 16(R19) // result +TEXT runtime·pthread_cond_init_trampoline(SB),NOSPLIT,$0 + MOVD 8(R0), R1 // arg 2 attr + MOVD 0(R0), R0 // arg 1 cond + BL libc_pthread_cond_init(SB) + RET + +TEXT runtime·pthread_cond_wait_trampoline(SB),NOSPLIT,$0 + MOVD 8(R0), R1 // arg 2 mutex + MOVD 0(R0), R0 // arg 1 cond + BL libc_pthread_cond_wait(SB) + RET + +TEXT runtime·pthread_cond_timedwait_relative_np_trampoline(SB),NOSPLIT,$0 + MOVD 8(R0), R1 // arg 2 mutex + MOVD 16(R0), R2 // arg 3 timeout + MOVD 0(R0), R0 // arg 1 cond + BL libc_pthread_cond_timedwait_relative_np(SB) + RET + +TEXT runtime·pthread_cond_signal_trampoline(SB),NOSPLIT,$0 + MOVD 0(R0), R0 // arg 1 cond + BL libc_pthread_cond_signal(SB) RET // syscall calls a function in libc on behalf of the syscall package. From 44c9354c5a780746b4ebef8ce436a10ee37e01cc Mon Sep 17 00:00:00 2001 From: guitarbum722 Date: Wed, 26 Jul 2017 20:26:18 -0700 Subject: [PATCH 012/255] bufio: add example for Scanner.Bytes Change-Id: I4a5c7573e13dd85531ee9f4dd2a0d1981bf8cdfa Reviewed-on: https://go-review.googlesource.com/c/go/+/51412 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- src/bufio/example_test.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/bufio/example_test.go b/src/bufio/example_test.go index bb57139918..e220e0768f 100644 --- a/src/bufio/example_test.go +++ b/src/bufio/example_test.go @@ -31,6 +31,16 @@ func ExampleScanner_lines() { } } +// Use return the most recent call to Scan as a []byte +func ExampleScanner_Bytes() { + scanner := bufio.NewScanner(strings.NewReader("gopher")) + for scanner.Scan() { + fmt.Println(len(scanner.Bytes()) == 6) + } + // Output: + // true +} + // Use a Scanner to implement a simple word-count utility by scanning the // input as a sequence of space-delimited tokens. func ExampleScanner_words() { From b3399ac5d19c896452548ca8e99176bcdab78781 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Wed, 12 Jun 2019 07:01:04 -0700 Subject: [PATCH 013/255] cmd/go: add more docs for go directive in go.mod file Updates #30791 Change-Id: I67efd7fd3b3a550428b16518bb27a3d81c178d28 Reviewed-on: https://go-review.googlesource.com/c/go/+/181840 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Bryan C. Mills --- src/cmd/go/alldocs.go | 7 +++++++ src/cmd/go/internal/modload/help.go | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/src/cmd/go/alldocs.go b/src/cmd/go/alldocs.go index d2ce578564..40cbaa2331 100644 --- a/src/cmd/go/alldocs.go +++ b/src/cmd/go/alldocs.go @@ -1806,6 +1806,13 @@ // including go build, go get, go install, go list, go test, go mod graph, // go mod tidy, and go mod why. // +// The expected language version, set by the go directive, determines +// which language features are available when compiling the module. +// Language features available in that version will be available for use. +// Language features removed in earlier versions, or added in later versions, +// will not be available. Note that the language version does not affect +// build tags, which are determined by the Go release being used. +// // // GOPATH environment variable // diff --git a/src/cmd/go/internal/modload/help.go b/src/cmd/go/internal/modload/help.go index 9ce8dfb33b..788544c2c8 100644 --- a/src/cmd/go/internal/modload/help.go +++ b/src/cmd/go/internal/modload/help.go @@ -464,5 +464,12 @@ Because the module graph defines the meaning of import statements, any commands that load packages also use and therefore update go.mod, including go build, go get, go install, go list, go test, go mod graph, go mod tidy, and go mod why. + +The expected language version, set by the go directive, determines +which language features are available when compiling the module. +Language features available in that version will be available for use. +Language features removed in earlier versions, or added in later versions, +will not be available. Note that the language version does not affect +build tags, which are determined by the Go release being used. `, } From 3f1422c799edb143303c86c0e875d44c3612df64 Mon Sep 17 00:00:00 2001 From: Than McIntosh Date: Thu, 20 Jun 2019 09:02:05 -0400 Subject: [PATCH 014/255] cmd/link: revise previous __DWARF segment protection fix Tweak the previous fix for issue 32673 (in CL 182958) to work around problems with c-shared build mode that crop up on some of the builders (10.11, 10.12). We now consistently set vmaddr and vmsize to zero for the DWARF segment regardless of build mode. Updates #32673 Change-Id: Id1fc213590ad00c28352925e2d754d760e022b5e Reviewed-on: https://go-review.googlesource.com/c/go/+/183237 Reviewed-by: Cherry Zhang Reviewed-by: David Chase --- .../link/internal/ld/macho_combine_dwarf.go | 34 ++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/src/cmd/link/internal/ld/macho_combine_dwarf.go b/src/cmd/link/internal/ld/macho_combine_dwarf.go index 3c123a092f..72ee8affab 100644 --- a/src/cmd/link/internal/ld/macho_combine_dwarf.go +++ b/src/cmd/link/internal/ld/macho_combine_dwarf.go @@ -245,7 +245,7 @@ func machoCombineDwarf(ctxt *Link, exef *os.File, exem *macho.File, dsym, outexe } } // Do the final update of the DWARF segment's load command. - return machoUpdateDwarfHeader(&reader, ctxt.BuildMode, compressedSects) + return machoUpdateDwarfHeader(&reader, compressedSects, dwarfsize) } // machoCompressSections tries to compress the DWARF segments in dwarfm, @@ -390,7 +390,7 @@ func machoUpdateSections(r loadCmdReader, seg, sect reflect.Value, deltaOffset, } // machoUpdateDwarfHeader updates the DWARF segment load command. -func machoUpdateDwarfHeader(r *loadCmdReader, buildmode BuildMode, compressedSects []*macho.Section) error { +func machoUpdateDwarfHeader(r *loadCmdReader, compressedSects []*macho.Section, dwarfsize uint64) error { var seg, sect interface{} cmd, err := r.Next() if err != nil { @@ -408,8 +408,6 @@ func machoUpdateDwarfHeader(r *loadCmdReader, buildmode BuildMode, compressedSec } segv := reflect.ValueOf(seg).Elem() segv.FieldByName("Offset").SetUint(uint64(dwarfstart)) - segv.FieldByName("Addr").SetUint(uint64(dwarfaddr)) - segv.FieldByName("Prot").SetUint(0) if compressedSects != nil { var segSize uint64 @@ -417,23 +415,27 @@ func machoUpdateDwarfHeader(r *loadCmdReader, buildmode BuildMode, compressedSec segSize += newSect.Size } segv.FieldByName("Filesz").SetUint(segSize) - segv.FieldByName("Memsz").SetUint(uint64(Rnd(int64(segSize), 1< Date: Fri, 21 Jun 2019 09:06:56 -0700 Subject: [PATCH 015/255] cmd/gofmt: fix normalization of imaginary number literals The old code only normalized decimal integer imaginary number literals. But with the generalized imaginary number syntax, the number value may be decimal, binary, octal, or hexadecimal, integer or floating-point. The new code only looks at the number pattern. Only for decimal integer imaginary literals do we need to strip leading zeroes. The remaining normalization code simply ignore the 'i' suffix. As a result, the new code is both simpler and shorter. Fixes #32718. Change-Id: If43fc962a48ed62002e65d5c81fddbb9bd283984 Reviewed-on: https://go-review.googlesource.com/c/go/+/183378 Reviewed-by: Ian Lance Taylor --- src/cmd/gofmt/gofmt.go | 75 +++++++++--------------- src/cmd/gofmt/testdata/go2numbers.golden | 18 +++++- src/cmd/gofmt/testdata/go2numbers.input | 16 +++++ src/math/cmplx/cmath_test.go | 2 +- 4 files changed, 63 insertions(+), 48 deletions(-) diff --git a/src/cmd/gofmt/gofmt.go b/src/cmd/gofmt/gofmt.go index 4bba44489d..d7a77a9682 100644 --- a/src/cmd/gofmt/gofmt.go +++ b/src/cmd/gofmt/gofmt.go @@ -335,66 +335,49 @@ func backupFile(filename string, data []byte, perm os.FileMode) (string, error) // alone. func normalizeNumbers(n ast.Node) bool { lit, _ := n.(*ast.BasicLit) - if lit == nil { + if lit == nil || (lit.Kind != token.INT && lit.Kind != token.FLOAT && lit.Kind != token.IMAG) { return true } if len(lit.Value) < 2 { - return false // only one digit - nothing to do + return false // only one digit (common case) - nothing to do } // len(lit.Value) >= 2 + // We ignore lit.Kind because for lit.Kind == token.IMAG the literal may be an integer + // or floating-point value, decimal or not. Instead, just consider the literal pattern. x := lit.Value - switch lit.Kind { - case token.INT: - switch x[:2] { - case "0X": - lit.Value = "0x" + x[2:] - case "0O": - lit.Value = "0o" + x[2:] - case "0B": - lit.Value = "0b" + x[2:] + switch x[:2] { + default: + // 0-prefix octal, decimal int, or float (possibly with 'i' suffix) + if i := strings.LastIndexByte(x, 'E'); i >= 0 { + x = x[:i] + "e" + x[i+1:] + break } - - case token.FLOAT: - switch lit.Value[:2] { - default: - if i := strings.LastIndexByte(x, 'E'); i >= 0 { - lit.Value = x[:i] + "e" + x[i+1:] - } - case "0x": - if i := strings.LastIndexByte(x, 'P'); i >= 0 { - lit.Value = x[:i] + "p" + x[i+1:] - } - case "0X": - if i := strings.LastIndexByte(x, 'P'); i >= 0 { - lit.Value = "0x" + x[2:i] + "p" + x[i+1:] - } else { - lit.Value = "0x" + x[2:] - } - } - - case token.IMAG: - // Note that integer imaginary literals may contain - // any decimal digit even if they start with zero. - // Imaginary literals should always end in 'i' but be - // conservative and check anyway before proceeding. - if x[0] == '0' && x[len(x)-1] == 'i' && isDecimals(x[1:len(x)-1]) { + // remove leading 0's from integer (but not floating-point) imaginary literals + if x[len(x)-1] == 'i' && strings.IndexByte(x, '.') < 0 && strings.IndexByte(x, 'e') < 0 { x = strings.TrimLeft(x, "0_") if x == "i" { x = "0i" } - lit.Value = x } + case "0X": + x = "0x" + x[2:] + fallthrough + case "0x": + // possibly a hexadecimal float + if i := strings.LastIndexByte(x, 'P'); i >= 0 { + x = x[:i] + "p" + x[i+1:] + } + case "0O": + x = "0o" + x[2:] + case "0o": + // nothing to do + case "0B": + x = "0b" + x[2:] + case "0b": + // nothing to do } + lit.Value = x return false } - -// isDecimals reports whether x consists entirely of decimal digits and underscores. -func isDecimals(x string) bool { - i := 0 - for i < len(x) && ('0' <= x[i] && x[i] <= '9' || x[i] == '_') { - i++ - } - return i == len(x) -} diff --git a/src/cmd/gofmt/testdata/go2numbers.golden b/src/cmd/gofmt/testdata/go2numbers.golden index abefcb6c58..0184aaa6ce 100644 --- a/src/cmd/gofmt/testdata/go2numbers.golden +++ b/src/cmd/gofmt/testdata/go2numbers.golden @@ -163,8 +163,24 @@ const ( _ = 0.i _ = 123.i _ = 0123.i + _ = 000123.i + + _ = 0e0i + _ = 123e0i + _ = 0123e0i + _ = 000123e0i _ = 0.e+1i - _ = 123.E-1_0i + _ = 123.e-1_0i _ = 01_23.e123i + _ = 00_01_23.e123i + + _ = 0b1010i + _ = 0b1010i + _ = 0o660i + _ = 0o660i + _ = 0xabcDEFi + _ = 0xabcDEFi + _ = 0xabcDEFp0i + _ = 0xabcDEFp0i ) diff --git a/src/cmd/gofmt/testdata/go2numbers.input b/src/cmd/gofmt/testdata/go2numbers.input index 51a9f8eaf6..f3e7828d94 100644 --- a/src/cmd/gofmt/testdata/go2numbers.input +++ b/src/cmd/gofmt/testdata/go2numbers.input @@ -163,8 +163,24 @@ const ( _ = 0.i _ = 123.i _ = 0123.i + _ = 000123.i + + _ = 0e0i + _ = 123e0i + _ = 0123E0i + _ = 000123E0i _ = 0.e+1i _ = 123.E-1_0i _ = 01_23.e123i + _ = 00_01_23.e123i + + _ = 0b1010i + _ = 0B1010i + _ = 0o660i + _ = 0O660i + _ = 0xabcDEFi + _ = 0XabcDEFi + _ = 0xabcDEFP0i + _ = 0XabcDEFp0i ) diff --git a/src/math/cmplx/cmath_test.go b/src/math/cmplx/cmath_test.go index fbb49fdd5b..57ba76a767 100644 --- a/src/math/cmplx/cmath_test.go +++ b/src/math/cmplx/cmath_test.go @@ -222,7 +222,7 @@ var pow = []complex128{ (-2.499956739197529585028819e+00 + 1.759751724335650228957144e+00i), (7.357094338218116311191939e+04 - 5.089973412479151648145882e+04i), (1.320777296067768517259592e+01 - 3.165621914333901498921986e+01i), - (-3.123287828297300934072149e-07 - 1.9849567521490553032502223E-7i), + (-3.123287828297300934072149e-07 - 1.9849567521490553032502223e-7i), (8.0622651468477229614813e+04 - 7.80028727944573092944363e+04i), (-1.0268824572103165858577141e+00 - 4.716844738244989776610672e-01i), (-4.35953819012244175753187e+01 + 2.2036445974645306917648585e+02i), From 851616d291160325dc820378671733e46411bd56 Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Fri, 21 Jun 2019 15:03:57 -0400 Subject: [PATCH 016/255] cmd/go/testdata: update addmod.go to work with the mainline go command Updates #32715 Change-Id: I4ea41d7bd1a2daeba8cebb283aaa096b6c3d4533 Reviewed-on: https://go-review.googlesource.com/c/go/+/183401 Run-TryBot: Bryan C. Mills TryBot-Result: Gobot Gobot Reviewed-by: Dmitri Shuralyov --- src/cmd/go/testdata/addmod.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cmd/go/testdata/addmod.go b/src/cmd/go/testdata/addmod.go index 8bb6056a54..d9c3aab9c4 100644 --- a/src/cmd/go/testdata/addmod.go +++ b/src/cmd/go/testdata/addmod.go @@ -29,7 +29,7 @@ import ( "path/filepath" "strings" - "../internal/txtar" + "cmd/go/internal/txtar" ) func usage() { @@ -44,7 +44,7 @@ func fatalf(format string, args ...interface{}) { log.Fatalf(format, args...) } -const goCmd = "vgo" +const goCmd = "go" func main() { flag.Usage = usage From 1803ab1e44c77e3ec9b55b0905596f73bfd73606 Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Tue, 11 Jun 2019 15:49:44 -0400 Subject: [PATCH 017/255] cmd/go: validate pseudo-versions against module paths and revision metadata MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously, most operations involving pseudo-versions allowed any arbitrary combination of version string and date, and would resolve to the underlying revision (typically a Git commit hash) as long as that revision existed. There are a number of problems with that approach: • The pseudo-version participates in minimal version selection. If its version prefix is inaccurate, the pseudo-version may appear to have higher precedence that the releases that follow it, effectively “pinning” the module to that commit. For release tags, module authors are the ones who make the decision about release tagging; they should also have control over the pseudo-version precedence within their module. • The commit date within the pseudo-version provides a total order among pseudo-versions. If it is not accurate, the pseudo-version will sort into the wrong place relative to other commits with the same version prefix. To address those problems, this change restricts the pseudo-versions that the 'go' command accepts, rendering some previously accepted-but-not-canonical versions invalid. A pseudo-version is now valid only if all of: 1. The tag from which the pseudo-version derives points to the named revision or one of its ancestors as reported by the underlying VCS tool, or the pseudo-version is not derived from any tag (that is, has a "vX.0.0-" prefix before the date string and uses the lowest major version appropriate to the module path). 2. The date string within the pseudo-version matches the UTC timestamp of the revision as reported by the underlying VCS tool. 3. The short name of the revision within the pseudo-version (such as a Git hash prefix) is the same as the short name reported by the underlying cmd/go/internal/modfetch/codehost.Repo. Specifically, if the short name is a SHA-1 prefix, it must use the same number of hex digits (12) as codehost.ShortenSHA1. 4. The pseudo-version includes a '+incompatible' suffix only if it is needed for the corresponding major version, and only if the underlying module does not have a go.mod file. We believe that all releases of the 'go' tool have generated pseudo-versions that meet these constraints. However, a few pseudo-versions edited by hand or generated by third-party tools do not. If we discover invalid-but-benign pseudo-versions in widely-used existing dependencies, we may choose to add a whitelist for those specific path/version combinations. ― To work around invalid dependencies in leaf modules, users may add a 'replace' directive from the invalid version to its valid equivalent. Note that the go command's go.mod parser automatically resolves commit hashes found in 'replace' directives to the appropriate pseudo-versions, so in most cases one can write something like: replace github.com/docker/docker v1.14.0-0.20190319215453-e7b5f7dbe98c => github.com/docker/docker e7b5f7dbe98c and then run any 'go' command (such as 'go list' or 'go mod tidy') to resolve it to an appropriate pseudo-version. Note that the invalid version will still be used in minimal version selection, so this use of 'replace' directives is an incomplete workaround. ― One of the common use cases for higher-than-tagged pseudo-versions is for projects that do parallel development on release branches. For example, if a project cuts a 'v1.2' release branch at v1.2.0, they may want future commits on the main branch to show up as pre-releases for v1.3.0 rather than for v1.2.1 — especially if v1.2.1 is already tagged on the release branch. (On the other hand, a backport of a patch to the v1.2 branch should not show up as a pre-release for v1.3.0.) To address this use-case, module authors can make use of our existing support for pseudo-versions derived from pre-release tags: if the author adds an explicit pre-release tag (such as 'v1.3.0-devel') to the first commit after the branch, then the pseudo-versions for that commit and its descendents will be derived from that tag and will sort appropriately in version selection. ― Updates #27171 Fixes #29262 Fixes #27173 Fixes #32662 Fixes #32695 Change-Id: I0d50a538b6fdb0d3080aca9c9c3df1040da1b329 Reviewed-on: https://go-review.googlesource.com/c/go/+/181881 Run-TryBot: Bryan C. Mills Reviewed-by: Jay Conrod --- doc/go1.13.html | 58 +++ src/cmd/go/internal/modconv/convert_test.go | 2 +- src/cmd/go/internal/modfetch/cache.go | 18 +- .../go/internal/modfetch/codehost/codehost.go | 32 +- src/cmd/go/internal/modfetch/codehost/git.go | 107 ++++- src/cmd/go/internal/modfetch/codehost/vcs.go | 14 +- src/cmd/go/internal/modfetch/coderepo.go | 408 +++++++++++++++--- src/cmd/go/internal/modfetch/coderepo_test.go | 16 +- src/cmd/go/internal/modfetch/proxy.go | 14 + src/cmd/go/internal/modfetch/pseudo.go | 148 ++++++- src/cmd/go/internal/modfetch/pseudo_test.go | 73 ++++ src/cmd/go/internal/modfile/rule.go | 69 ++- src/cmd/go/internal/modload/init.go | 14 +- src/cmd/go/internal/modload/load.go | 8 +- src/cmd/go/internal/modload/query.go | 3 + src/cmd/go/internal/modload/query_test.go | 33 +- src/cmd/go/internal/module/module.go | 116 ++++- src/cmd/go/internal/mvs/mvs.go | 16 +- .../go/testdata/script/mod_download_hash.txt | 14 +- .../testdata/script/mod_invalid_version.txt | 220 ++++++++++ 20 files changed, 1176 insertions(+), 207 deletions(-) create mode 100644 src/cmd/go/testdata/script/mod_invalid_version.txt diff --git a/doc/go1.13.html b/doc/go1.13.html index e2099ce2d6..594b75bcfa 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -161,6 +161,64 @@ TODO TODO

+

Modules

+ +

Version validation

+ +

+ When extracting a module from a version control system, the go + command now performs additional validation on the requested version string. +

+ +

+ The +incompatible version annotation bypasses the requirement + of semantic + import versioning for repositories that predate the introduction of + modules. The go command now verifies that such a version does not + include an explicit go.mod file. +

+ +

+ The go command now verifies the mapping + between pseudo-versions and + version-control metadata. Specifically: +

    +
  • The version prefix must be derived from a tag on the named revision or + one of its ancestors, or be of the form vX.0.0.
  • + +
  • The date string must match the UTC timestamp of the revision.
  • + +
  • The short name of the revision must use the same number of characters as + what the go command would generate. (For SHA-1 hashes as used + by git, a 12-digit prefix.)
  • +
+

+ +

+ If the main module directly requires a version that fails the above + validation, a corrected version can be obtained by redacting the version to + just the commit hash and re-running a go command such as go + list -m all or go mod tidy. For example, +

require github.com/docker/docker v1.14.0-0.20190319215453-e7b5f7dbe98c
+ can be redacted to +
require github.com/docker/docker e7b5f7dbe98c
+ which resolves to +
require github.com/docker/docker v0.7.3-0.20190319215453-e7b5f7dbe98c
+

+ +

+ If the main module has a transitive requirement on a version that fails + validation, the invalid version can still be replaced with a valid one through + the use of a replace + directive in the go.mod file of + the main module. + If the replacement is a commit hash, it will be resolved to the appropriate + pseudo-version. For example, +

replace github.com/docker/docker v1.14.0-0.20190319215453-e7b5f7dbe98c => github.com/docker/docker e7b5f7dbe98c
+ resolves to +
replace github.com/docker/docker v1.14.0-0.20190319215453-e7b5f7dbe98c => github.com/docker/docker v0.7.3-0.20190319215453-e7b5f7dbe98c
+

+

Compiler toolchain

diff --git a/src/cmd/go/internal/modconv/convert_test.go b/src/cmd/go/internal/modconv/convert_test.go index 32727e79eb..8ff229bd14 100644 --- a/src/cmd/go/internal/modconv/convert_test.go +++ b/src/cmd/go/internal/modconv/convert_test.go @@ -128,7 +128,7 @@ func TestConvertLegacyConfig(t *testing.T) { { // golang.org/issue/24585 - confusion about v2.0.0 tag in legacy non-v2 module - "github.com/fishy/gcsbucket", "v0.0.0-20150410205453-618d60fe84e0", + "github.com/fishy/gcsbucket", "v0.0.0-20180217031846-618d60fe84e0", `module github.com/fishy/gcsbucket require ( diff --git a/src/cmd/go/internal/modfetch/cache.go b/src/cmd/go/internal/modfetch/cache.go index b23776d874..c0062809d1 100644 --- a/src/cmd/go/internal/modfetch/cache.go +++ b/src/cmd/go/internal/modfetch/cache.go @@ -216,29 +216,21 @@ func (r *cachingRepo) Latest() (*RevInfo, error) { return &info, nil } -func (r *cachingRepo) GoMod(rev string) ([]byte, error) { +func (r *cachingRepo) GoMod(version string) ([]byte, error) { type cached struct { text []byte err error } - c := r.cache.Do("gomod:"+rev, func() interface{} { - file, text, err := readDiskGoMod(r.path, rev) + c := r.cache.Do("gomod:"+version, func() interface{} { + file, text, err := readDiskGoMod(r.path, version) if err == nil { // Note: readDiskGoMod already called checkGoMod. return cached{text, nil} } - // Convert rev to canonical version - // so that we use the right identifier in the go.sum check. - info, err := r.Stat(rev) - if err != nil { - return cached{nil, err} - } - rev = info.Version - - text, err = r.r.GoMod(rev) + text, err = r.r.GoMod(version) if err == nil { - checkGoMod(r.path, rev, text) + checkGoMod(r.path, version, text) if err := writeDiskGoMod(file, text); err != nil { fmt.Fprintf(os.Stderr, "go: writing go.mod cache: %v\n", err) } diff --git a/src/cmd/go/internal/modfetch/codehost/codehost.go b/src/cmd/go/internal/modfetch/codehost/codehost.go index 6c17f7886f..ab9287b541 100644 --- a/src/cmd/go/internal/modfetch/codehost/codehost.go +++ b/src/cmd/go/internal/modfetch/codehost/codehost.go @@ -79,14 +79,16 @@ type Repo interface { // nested in a single top-level directory, whose name is not specified. ReadZip(rev, subdir string, maxSize int64) (zip io.ReadCloser, actualSubdir string, err error) - // RecentTag returns the most recent tag at or before the given rev - // with the given prefix. It should make a best-effort attempt to - // find a tag that is a valid semantic version (following the prefix), - // or else the result is not useful to the caller, but it need not - // incur great expense in doing so. For example, the git implementation - // of RecentTag limits git's search to tags matching the glob expression - // "v[0-9]*.[0-9]*.[0-9]*" (after the prefix). - RecentTag(rev, prefix string) (tag string, err error) + // RecentTag returns the most recent tag on rev or one of its predecessors + // with the given prefix and major version. + // An empty major string matches any major version. + RecentTag(rev, prefix, major string) (tag string, err error) + + // DescendsFrom reports whether rev or any of its ancestors has the given tag. + // + // DescendsFrom must return true for any tag returned by RecentTag for the + // same revision. + DescendsFrom(rev, tag string) (bool, error) } // A Rev describes a single revision in a source code repository. @@ -105,6 +107,20 @@ type FileRev struct { Err error // error if any; os.IsNotExist(Err)==true if rev exists but file does not exist in that rev } +// UnknownRevisionError is an error equivalent to os.ErrNotExist, but for a +// revision rather than a file. +type UnknownRevisionError struct { + Rev string +} + +func (e *UnknownRevisionError) Error() string { + return "unknown revision " + e.Rev +} + +func (e *UnknownRevisionError) Is(err error) bool { + return err == os.ErrNotExist +} + // AllHex reports whether the revision rev is entirely lower-case hexadecimal digits. func AllHex(rev string) bool { for i := 0; i < len(rev); i++ { diff --git a/src/cmd/go/internal/modfetch/codehost/git.go b/src/cmd/go/internal/modfetch/codehost/git.go index a1d451d61a..83e694dfe8 100644 --- a/src/cmd/go/internal/modfetch/codehost/git.go +++ b/src/cmd/go/internal/modfetch/codehost/git.go @@ -10,6 +10,7 @@ import ( "io" "io/ioutil" "os" + "os/exec" "path/filepath" "sort" "strconv" @@ -318,7 +319,7 @@ func (r *gitRepo) stat(rev string) (*RevInfo, error) { hash = rev } } else { - return nil, fmt.Errorf("unknown revision %s", rev) + return nil, &UnknownRevisionError{Rev: rev} } // Protect r.fetchLevel and the "fetch more and more" sequence. @@ -378,19 +379,32 @@ func (r *gitRepo) stat(rev string) (*RevInfo, error) { // Last resort. // Fetch all heads and tags and hope the hash we want is in the history. - if r.fetchLevel < fetchAll { - // TODO(bcmills): should we wait to upgrade fetchLevel until after we check - // err? If there is a temporary server error, we want subsequent fetches to - // try again instead of proceeding with an incomplete repo. - r.fetchLevel = fetchAll - if err := r.fetchUnshallow("refs/heads/*:refs/heads/*", "refs/tags/*:refs/tags/*"); err != nil { - return nil, err - } + if err := r.fetchRefsLocked(); err != nil { + return nil, err } return r.statLocal(rev, rev) } +// fetchRefsLocked fetches all heads and tags from the origin, along with the +// ancestors of those commits. +// +// We only fetch heads and tags, not arbitrary other commits: we don't want to +// pull in off-branch commits (such as rejected GitHub pull requests) that the +// server may be willing to provide. (See the comments within the stat method +// for more detail.) +// +// fetchRefsLocked requires that r.mu remain locked for the duration of the call. +func (r *gitRepo) fetchRefsLocked() error { + if r.fetchLevel < fetchAll { + if err := r.fetchUnshallow("refs/heads/*:refs/heads/*", "refs/tags/*:refs/tags/*"); err != nil { + return err + } + r.fetchLevel = fetchAll + } + return nil +} + func (r *gitRepo) fetchUnshallow(refSpecs ...string) error { // To work around a protocol version 2 bug that breaks --unshallow, // add -c protocol.version=0. @@ -411,7 +425,7 @@ func (r *gitRepo) fetchUnshallow(refSpecs ...string) error { func (r *gitRepo) statLocal(version, rev string) (*RevInfo, error) { out, err := Run(r.dir, "git", "-c", "log.showsignature=false", "log", "-n1", "--format=format:%H %ct %D", rev, "--") if err != nil { - return nil, fmt.Errorf("unknown revision %s", rev) + return nil, &UnknownRevisionError{Rev: rev} } f := strings.Fields(string(out)) if len(f) < 2 { @@ -648,7 +662,7 @@ func (r *gitRepo) readFileRevs(tags []string, file string, fileMap map[string]*F return missing, nil } -func (r *gitRepo) RecentTag(rev, prefix string) (tag string, err error) { +func (r *gitRepo) RecentTag(rev, prefix, major string) (tag string, err error) { info, err := r.Stat(rev) if err != nil { return "", err @@ -681,7 +695,7 @@ func (r *gitRepo) RecentTag(rev, prefix string) (tag string, err error) { semtag := line[len(prefix):] // Consider only tags that are valid and complete (not just major.minor prefixes). - if c := semver.Canonical(semtag); c != "" && strings.HasPrefix(semtag, c) { + if c := semver.Canonical(semtag); c != "" && strings.HasPrefix(semtag, c) && (major == "" || semver.Major(c) == major) { highest = semver.Max(highest, semtag) } } @@ -716,12 +730,8 @@ func (r *gitRepo) RecentTag(rev, prefix string) (tag string, err error) { } defer unlock() - if r.fetchLevel < fetchAll { - // Fetch all heads and tags and see if that gives us enough history. - if err := r.fetchUnshallow("refs/heads/*:refs/heads/*", "refs/tags/*:refs/tags/*"); err != nil { - return "", err - } - r.fetchLevel = fetchAll + if err := r.fetchRefsLocked(); err != nil { + return "", err } // If we've reached this point, we have all of the commits that are reachable @@ -738,6 +748,67 @@ func (r *gitRepo) RecentTag(rev, prefix string) (tag string, err error) { return tag, err } +func (r *gitRepo) DescendsFrom(rev, tag string) (bool, error) { + // The "--is-ancestor" flag was added to "git merge-base" in version 1.8.0, so + // this won't work with Git 1.7.1. According to golang.org/issue/28550, cmd/go + // already doesn't work with Git 1.7.1, so at least it's not a regression. + // + // git merge-base --is-ancestor exits with status 0 if rev is an ancestor, or + // 1 if not. + _, err := Run(r.dir, "git", "merge-base", "--is-ancestor", "--", tag, rev) + + // Git reports "is an ancestor" with exit code 0 and "not an ancestor" with + // exit code 1. + // Unfortunately, if we've already fetched rev with a shallow history, git + // merge-base has been observed to report a false-negative, so don't stop yet + // even if the exit code is 1! + if err == nil { + return true, nil + } + + // See whether the tag and rev even exist. + tags, err := r.Tags(tag) + if err != nil { + return false, err + } + if len(tags) == 0 { + return false, nil + } + + // NOTE: r.stat is very careful not to fetch commits that we shouldn't know + // about, like rejected GitHub pull requests, so don't try to short-circuit + // that here. + if _, err = r.stat(rev); err != nil { + return false, err + } + + // Now fetch history so that git can search for a path. + unlock, err := r.mu.Lock() + if err != nil { + return false, err + } + defer unlock() + + if r.fetchLevel < fetchAll { + // Fetch the complete history for all refs and heads. It would be more + // efficient to only fetch the history from rev to tag, but that's much more + // complicated, and any kind of shallow fetch is fairly likely to trigger + // bugs in JGit servers and/or the go command anyway. + if err := r.fetchRefsLocked(); err != nil { + return false, err + } + } + + _, err = Run(r.dir, "git", "merge-base", "--is-ancestor", "--", tag, rev) + if err == nil { + return true, nil + } + if ee, ok := err.(*RunError).Err.(*exec.ExitError); ok && ee.ExitCode() == 1 { + return false, nil + } + return false, err +} + func (r *gitRepo) ReadZip(rev, subdir string, maxSize int64) (zip io.ReadCloser, actualSubdir string, err error) { // TODO: Use maxSize or drop it. args := []string{} diff --git a/src/cmd/go/internal/modfetch/codehost/vcs.go b/src/cmd/go/internal/modfetch/codehost/vcs.go index 34aeedebc5..b1845f5c65 100644 --- a/src/cmd/go/internal/modfetch/codehost/vcs.go +++ b/src/cmd/go/internal/modfetch/codehost/vcs.go @@ -347,7 +347,7 @@ func (r *vcsRepo) fetch() { func (r *vcsRepo) statLocal(rev string) (*RevInfo, error) { out, err := Run(r.dir, r.cmd.statLocal(rev, r.remote)) if err != nil { - return nil, vcsErrorf("unknown revision %s", rev) + return nil, &UnknownRevisionError{Rev: rev} } return r.cmd.parseStat(rev, string(out)) } @@ -392,7 +392,7 @@ func (r *vcsRepo) ReadFileRevs(revs []string, file string, maxSize int64) (map[s return nil, vcsErrorf("ReadFileRevs not implemented") } -func (r *vcsRepo) RecentTag(rev, prefix string) (tag string, err error) { +func (r *vcsRepo) RecentTag(rev, prefix, major string) (tag string, err error) { // We don't technically need to lock here since we're returning an error // uncondititonally, but doing so anyway will help to avoid baking in // lock-inversion bugs. @@ -405,6 +405,16 @@ func (r *vcsRepo) RecentTag(rev, prefix string) (tag string, err error) { return "", vcsErrorf("RecentTag not implemented") } +func (r *vcsRepo) DescendsFrom(rev, tag string) (bool, error) { + unlock, err := r.mu.Lock() + if err != nil { + return false, err + } + defer unlock() + + return false, vcsErrorf("DescendsFrom not implemented") +} + func (r *vcsRepo) ReadZip(rev, subdir string, maxSize int64) (zip io.ReadCloser, actualSubdir string, err error) { if r.cmd.readZip == nil { return nil, "", vcsErrorf("ReadZip not implemented for %s", r.cmd.vcs) diff --git a/src/cmd/go/internal/modfetch/coderepo.go b/src/cmd/go/internal/modfetch/coderepo.go index 59f2cc70b5..45243681f8 100644 --- a/src/cmd/go/internal/modfetch/coderepo.go +++ b/src/cmd/go/internal/modfetch/coderepo.go @@ -6,12 +6,14 @@ package modfetch import ( "archive/zip" + "errors" "fmt" "io" "io/ioutil" "os" "path" "strings" + "time" "cmd/go/internal/modfetch/codehost" "cmd/go/internal/modfile" @@ -42,12 +44,10 @@ type codeRepo struct { // It is used only for logging. pathPrefix string - // pseudoMajor is the major version prefix to use when generating - // pseudo-versions for this module, derived from the module path. - // - // TODO(golang.org/issue/29262): We can't distinguish v0 from v1 using the - // path alone: we have to compute it by examining the tags at a particular - // revision. + // pseudoMajor is the major version prefix to require when generating + // pseudo-versions for this module, derived from the module path. pseudoMajor + // is empty if the module path does not include a version suffix (that is, + // accepts either v0 or v1). pseudoMajor string } @@ -65,10 +65,7 @@ func newCodeRepo(code codehost.Repo, codeRoot, path string) (Repo, error) { if codeRoot == path { pathPrefix = path } - pseudoMajor := "v0" - if pathMajor != "" { - pseudoMajor = pathMajor[1:] - } + pseudoMajor := module.PathMajorPrefix(pathMajor) // Compute codeDir = bar, the subdirectory within the repo // corresponding to the module root. @@ -159,7 +156,7 @@ func (r *codeRepo) Versions(prefix string) ([]string, error) { if v == "" || v != module.CanonicalVersion(v) || IsPseudoVersion(v) { continue } - if !module.MatchPathMajor(v, r.pathMajor) { + if err := module.MatchPathMajor(v, r.pathMajor); err != nil { if r.codeDir == "" && r.pathMajor == "" && semver.Major(v) > "v1" { incompatible = append(incompatible, v) } @@ -220,79 +217,322 @@ func (r *codeRepo) convert(info *codehost.RevInfo, statVers string) (*RevInfo, e Time: info.Time, } - // Determine version. - if module.CanonicalVersion(statVers) == statVers && module.MatchPathMajor(statVers, r.pathMajor) { - // The original call was repo.Stat(statVers), and requestedVersion is OK, so use it. - info2.Version = statVers - } else { - // Otherwise derive a version from a code repo tag. - // Tag must have a prefix matching codeDir. - p := "" - if r.codeDir != "" { - p = r.codeDir + "/" - } - - // If this is a plain tag (no dir/ prefix) - // and the module path is unversioned, - // and if the underlying file tree has no go.mod, - // then allow using the tag with a +incompatible suffix. - canUseIncompatible := false + // If this is a plain tag (no dir/ prefix) + // and the module path is unversioned, + // and if the underlying file tree has no go.mod, + // then allow using the tag with a +incompatible suffix. + var canUseIncompatible func() bool + canUseIncompatible = func() bool { + var ok bool if r.codeDir == "" && r.pathMajor == "" { _, errGoMod := r.code.ReadFile(info.Name, "go.mod", codehost.MaxGoMod) if errGoMod != nil { - canUseIncompatible = true + ok = true + } + } + canUseIncompatible = func() bool { return ok } + return ok + } + + invalidf := func(format string, args ...interface{}) error { + return &module.ModuleError{ + Path: r.modPath, + Err: &module.InvalidVersionError{ + Version: info2.Version, + Err: fmt.Errorf(format, args...), + }, + } + } + + // checkGoMod verifies that the go.mod file for the module exists or does not + // exist as required by info2.Version and the module path represented by r. + checkGoMod := func() (*RevInfo, error) { + // If r.codeDir is non-empty, then the go.mod file must exist: the module + // author, not the module consumer, gets to decide how to carve up the repo + // into modules. + if r.codeDir != "" { + _, _, _, err := r.findDir(info2.Version) + if err != nil { + // TODO: It would be nice to return an error like "not a module". + // Right now we return "missing go.mod", which is a little confusing. + return nil, err } } - tagToVersion := func(v string) string { - if !strings.HasPrefix(v, p) { - return "" + // If the version is +incompatible, then the go.mod file must not exist: + // +incompatible is not an ongoing opt-out from semantic import versioning. + if strings.HasSuffix(info2.Version, "+incompatible") { + if !canUseIncompatible() { + if r.pathMajor != "" { + return nil, invalidf("+incompatible suffix not allowed: module path includes a major version suffix, so major version must match") + } else { + return nil, invalidf("+incompatible suffix not allowed: module contains a go.mod file, so semantic import versioning is required") + } } - v = v[len(p):] - if module.CanonicalVersion(v) != v || IsPseudoVersion(v) { - return "" + + if err := module.MatchPathMajor(strings.TrimSuffix(info2.Version, "+incompatible"), r.pathMajor); err == nil { + return nil, invalidf("+incompatible suffix not allowed: major version %s is compatible", semver.Major(info2.Version)) } - if module.MatchPathMajor(v, r.pathMajor) { - return v - } - if canUseIncompatible { - return v + "+incompatible" - } - return "" } - // If info.Version is OK, use it. - if v := tagToVersion(info.Version); v != "" { - info2.Version = v - } else { - // Otherwise look through all known tags for latest in semver ordering. - for _, tag := range info.Tags { - if v := tagToVersion(tag); v != "" && semver.Compare(info2.Version, v) < 0 { + return info2, nil + } + + // Determine version. + // + // If statVers is canonical, then the original call was repo.Stat(statVers). + // Since the version is canonical, we must not resolve it to anything but + // itself, possibly with a '+incompatible' annotation: we do not need to do + // the work required to look for an arbitrary pseudo-version. + if statVers != "" && statVers == module.CanonicalVersion(statVers) { + info2.Version = statVers + + if IsPseudoVersion(info2.Version) { + if err := r.validatePseudoVersion(info, info2.Version); err != nil { + return nil, err + } + return checkGoMod() + } + + if err := module.MatchPathMajor(info2.Version, r.pathMajor); err != nil { + if canUseIncompatible() { + info2.Version += "+incompatible" + return checkGoMod() + } else { + if vErr, ok := err.(*module.InvalidVersionError); ok { + // We're going to describe why the version is invalid in more detail, + // so strip out the existing “invalid version” wrapper. + err = vErr.Err + } + return nil, invalidf("module contains a go.mod file, so major version must be compatible: %v", err) + } + } + + return checkGoMod() + } + + // statVers is empty or non-canonical, so we need to resolve it to a canonical + // version or pseudo-version. + + // Derive or verify a version from a code repo tag. + // Tag must have a prefix matching codeDir. + tagPrefix := "" + if r.codeDir != "" { + tagPrefix = r.codeDir + "/" + } + + // tagToVersion returns the version obtained by trimming tagPrefix from tag. + // If the tag is invalid or a pseudo-version, tagToVersion returns an empty + // version. + tagToVersion := func(tag string) (v string, tagIsCanonical bool) { + if !strings.HasPrefix(tag, tagPrefix) { + return "", false + } + trimmed := tag[len(tagPrefix):] + // Tags that look like pseudo-versions would be confusing. Ignore them. + if IsPseudoVersion(tag) { + return "", false + } + + v = semver.Canonical(trimmed) // Not module.Canonical: we don't want to pick up an explicit "+incompatible" suffix from the tag. + if v == "" || !strings.HasPrefix(trimmed, v) { + return "", false // Invalid or incomplete version (just vX or vX.Y). + } + if v == trimmed { + tagIsCanonical = true + } + + if err := module.MatchPathMajor(v, r.pathMajor); err != nil { + if canUseIncompatible() { + return v + "+incompatible", tagIsCanonical + } + return "", false + } + + return v, tagIsCanonical + } + + // If the VCS gave us a valid version, use that. + if v, tagIsCanonical := tagToVersion(info.Version); tagIsCanonical { + info2.Version = v + return checkGoMod() + } + + // Look through the tags on the revision for either a usable canonical version + // or an appropriate base for a pseudo-version. + var pseudoBase string + for _, pathTag := range info.Tags { + v, tagIsCanonical := tagToVersion(pathTag) + if tagIsCanonical { + if statVers != "" && semver.Compare(v, statVers) == 0 { + // The user requested a non-canonical version, but the tag for the + // canonical equivalent refers to the same revision. Use it. + info2.Version = v + return checkGoMod() + } else { + // Save the highest canonical tag for the revision. If we don't find a + // better match, we'll use it as the canonical version. + // + // NOTE: Do not replace this with semver.Max. Despite the name, + // semver.Max *also* canonicalizes its arguments, which uses + // semver.Canonical instead of module.CanonicalVersion and thereby + // strips our "+incompatible" suffix. + if semver.Compare(info2.Version, v) < 0 { info2.Version = v } } - // Otherwise make a pseudo-version. - if info2.Version == "" { - tag, _ := r.code.RecentTag(info.Name, p) - v = tagToVersion(tag) - // TODO: Check that v is OK for r.pseudoMajor or else is OK for incompatible. - info2.Version = PseudoVersion(r.pseudoMajor, v, info.Time, info.Short) + } else if v != "" && semver.Compare(v, statVers) == 0 { + // The user explicitly requested something equivalent to this tag. We + // can't use the version from the tag directly: since the tag is not + // canonical, it could be ambiguous. For example, tags v0.0.1+a and + // v0.0.1+b might both exist and refer to different revisions. + // + // The tag is otherwise valid for the module, so we can at least use it as + // the base of an unambiguous pseudo-version. + // + // If multiple tags match, tagToVersion will canonicalize them to the same + // base version. + pseudoBase = v + } + } + + // If we found any canonical tag for the revision, return it. + // Even if we found a good pseudo-version base, a canonical version is better. + if info2.Version != "" { + return checkGoMod() + } + + if pseudoBase == "" { + var tag string + if r.pseudoMajor != "" || canUseIncompatible() { + tag, _ = r.code.RecentTag(info.Name, tagPrefix, r.pseudoMajor) + } else { + // Allow either v1 or v0, but not incompatible higher versions. + tag, _ = r.code.RecentTag(info.Name, tagPrefix, "v1") + if tag == "" { + tag, _ = r.code.RecentTag(info.Name, tagPrefix, "v0") + } + } + pseudoBase, _ = tagToVersion(tag) // empty if the tag is invalid + } + + info2.Version = PseudoVersion(r.pseudoMajor, pseudoBase, info.Time, info.Short) + return checkGoMod() +} + +// validatePseudoVersion checks that version has a major version compatible with +// r.modPath and encodes a base version and commit metadata that agrees with +// info. +// +// Note that verifying a nontrivial base version in particular may be somewhat +// expensive: in order to do so, r.code.DescendsFrom will need to fetch at least +// enough of the commit history to find a path between version and its base. +// Fortunately, many pseudo-versions — such as those for untagged repositories — +// have trivial bases! +func (r *codeRepo) validatePseudoVersion(info *codehost.RevInfo, version string) (err error) { + defer func() { + if err != nil { + if _, ok := err.(*module.ModuleError); !ok { + if _, ok := err.(*module.InvalidVersionError); !ok { + err = &module.InvalidVersionError{Version: version, Pseudo: true, Err: err} + } + err = &module.ModuleError{Path: r.modPath, Err: err} + } + } + }() + + if err := module.MatchPathMajor(version, r.pathMajor); err != nil { + return err + } + + rev, err := PseudoVersionRev(version) + if err != nil { + return err + } + if rev != info.Short { + switch { + case strings.HasPrefix(rev, info.Short): + return fmt.Errorf("revision is longer than canonical (%s)", info.Short) + case strings.HasPrefix(info.Short, rev): + return fmt.Errorf("revision is shorter than canonical (%s)", info.Short) + default: + return fmt.Errorf("does not match short name of revision (%s)", info.Short) + } + } + + t, err := PseudoVersionTime(version) + if err != nil { + return err + } + if !t.Equal(info.Time.Truncate(time.Second)) { + return fmt.Errorf("does not match version-control timestamp (%s)", info.Time.UTC().Format(time.RFC3339)) + } + + // A pseudo-version should have a precedence just above its parent revisions, + // and no higher. Otherwise, it would be possible for library authors to "pin" + // dependency versions (and bypass the usual minimum version selection) by + // naming an extremely high pseudo-version rather than an accurate one. + // + // Moreover, if we allow a pseudo-version to use any arbitrary pre-release + // tag, we end up with infinitely many possible names for each commit. Each + // name consumes resources in the module cache and proxies, so we want to + // restrict them to a finite set under control of the module author. + // + // We address both of these issues by requiring the tag upon which the + // pseudo-version is based to refer to some ancestor of the revision. We + // prefer the highest such tag when constructing a new pseudo-version, but do + // not enforce that property when resolving existing pseudo-versions: we don't + // know when the parent tags were added, and the highest-tagged parent may not + // have existed when the pseudo-version was first resolved. + base, err := PseudoVersionBase(strings.TrimSuffix(version, "+incompatible")) + if err != nil { + return err + } + if base == "" { + if r.pseudoMajor == "" && semver.Major(version) == "v1" { + return fmt.Errorf("major version without preceding tag must be v0, not v1") + } + return nil + } + + tagPrefix := "" + if r.codeDir != "" { + tagPrefix = r.codeDir + "/" + } + + tags, err := r.code.Tags(tagPrefix + base) + if err != nil { + return err + } + + var lastTag string // Prefer to log some real tag rather than a canonically-equivalent base. + ancestorFound := false + for _, tag := range tags { + versionOnly := strings.TrimPrefix(tag, tagPrefix) + if semver.Compare(versionOnly, base) == 0 { + lastTag = tag + ancestorFound, err = r.code.DescendsFrom(info.Name, tag) + if ancestorFound { + break } } } - // Do not allow a successful stat of a pseudo-version for a subdirectory - // unless the subdirectory actually does have a go.mod. - if IsPseudoVersion(info2.Version) && r.codeDir != "" { - _, _, _, err := r.findDir(info2.Version) - if err != nil { - // TODO: It would be nice to return an error like "not a module". - // Right now we return "missing go.mod", which is a little confusing. - return nil, err - } + if lastTag == "" { + return fmt.Errorf("preceding tag (%s) not found", base) } - return info2, nil + if !ancestorFound { + if err != nil { + return err + } + rev, err := PseudoVersionRev(version) + if err != nil { + return fmt.Errorf("not a descendent of preceding tag (%s)", lastTag) + } + return fmt.Errorf("revision %s is not a descendent of preceding tag (%s)", rev, lastTag) + } + return nil } func (r *codeRepo) revToRev(rev string) string { @@ -314,7 +554,13 @@ func (r *codeRepo) revToRev(rev string) string { func (r *codeRepo) versionToRev(version string) (rev string, err error) { if !semver.IsValid(version) { - return "", fmt.Errorf("malformed semantic version %q", version) + return "", &module.ModuleError{ + Path: r.modPath, + Err: &module.InvalidVersionError{ + Version: version, + Err: errors.New("syntax error"), + }, + } } return r.revToRev(version), nil } @@ -424,6 +670,21 @@ func isMajor(mpath, pathMajor string) bool { } func (r *codeRepo) GoMod(version string) (data []byte, err error) { + if version != module.CanonicalVersion(version) { + return nil, fmt.Errorf("version %s is not canonical", version) + } + + if IsPseudoVersion(version) { + // findDir ignores the metadata encoded in a pseudo-version, + // only using the revision at the end. + // Invoke Stat to verify the metadata explicitly so we don't return + // a bogus file for an invalid version. + _, err := r.Stat(version) + if err != nil { + return nil, err + } + } + rev, dir, gomod, err := r.findDir(version) if err != nil { return nil, err @@ -457,6 +718,21 @@ func (r *codeRepo) modPrefix(rev string) string { } func (r *codeRepo) Zip(dst io.Writer, version string) error { + if version != module.CanonicalVersion(version) { + return fmt.Errorf("version %s is not canonical", version) + } + + if IsPseudoVersion(version) { + // findDir ignores the metadata encoded in a pseudo-version, + // only using the revision at the end. + // Invoke Stat to verify the metadata explicitly so we don't return + // a bogus file for an invalid version. + _, err := r.Stat(version) + if err != nil { + return err + } + } + rev, dir, _, err := r.findDir(version) if err != nil { return err diff --git a/src/cmd/go/internal/modfetch/coderepo_test.go b/src/cmd/go/internal/modfetch/coderepo_test.go index 2cf6f81122..bfb1dff3de 100644 --- a/src/cmd/go/internal/modfetch/coderepo_test.go +++ b/src/cmd/go/internal/modfetch/coderepo_test.go @@ -7,7 +7,6 @@ package modfetch import ( "archive/zip" "internal/testenv" - "io" "io/ioutil" "log" "os" @@ -695,21 +694,10 @@ func TestLatest(t *testing.T) { // fixedTagsRepo is a fake codehost.Repo that returns a fixed list of tags type fixedTagsRepo struct { tags []string + codehost.Repo } -func (ch *fixedTagsRepo) Tags(string) ([]string, error) { return ch.tags, nil } -func (ch *fixedTagsRepo) Latest() (*codehost.RevInfo, error) { panic("not impl") } -func (ch *fixedTagsRepo) ReadFile(string, string, int64) ([]byte, error) { panic("not impl") } -func (ch *fixedTagsRepo) ReadFileRevs([]string, string, int64) (map[string]*codehost.FileRev, error) { - panic("not impl") -} -func (ch *fixedTagsRepo) ReadZip(string, string, int64) (io.ReadCloser, string, error) { - panic("not impl") -} -func (ch *fixedTagsRepo) RecentTag(string, string) (string, error) { - panic("not impl") -} -func (ch *fixedTagsRepo) Stat(string) (*codehost.RevInfo, error) { panic("not impl") } +func (ch *fixedTagsRepo) Tags(string) ([]string, error) { return ch.tags, nil } func TestNonCanonicalSemver(t *testing.T) { root := "golang.org/x/issue24476" diff --git a/src/cmd/go/internal/modfetch/proxy.go b/src/cmd/go/internal/modfetch/proxy.go index ce74e826e1..426499baa9 100644 --- a/src/cmd/go/internal/modfetch/proxy.go +++ b/src/cmd/go/internal/modfetch/proxy.go @@ -281,6 +281,12 @@ func (p *proxyRepo) Stat(rev string) (*RevInfo, error) { if err := json.Unmarshal(data, info); err != nil { return nil, err } + if info.Version != rev && rev == module.CanonicalVersion(rev) && module.Check(p.path, rev) == nil { + // If we request a correct, appropriate version for the module path, the + // proxy must return either exactly that version or an error — not some + // arbitrary other version. + return nil, fmt.Errorf("requested canonical version %s, but proxy returned info for version %s", rev, info.Version) + } return info, nil } @@ -298,6 +304,10 @@ func (p *proxyRepo) Latest() (*RevInfo, error) { } func (p *proxyRepo) GoMod(version string) ([]byte, error) { + if version != module.CanonicalVersion(version) { + return nil, fmt.Errorf("version %s is not canonical", version) + } + encVer, err := module.EncodeVersion(version) if err != nil { return nil, err @@ -310,6 +320,10 @@ func (p *proxyRepo) GoMod(version string) ([]byte, error) { } func (p *proxyRepo) Zip(dst io.Writer, version string) error { + if version != module.CanonicalVersion(version) { + return fmt.Errorf("version %s is not canonical", version) + } + encVer, err := module.EncodeVersion(version) if err != nil { return err diff --git a/src/cmd/go/internal/modfetch/pseudo.go b/src/cmd/go/internal/modfetch/pseudo.go index e13607ac2b..8c063b9107 100644 --- a/src/cmd/go/internal/modfetch/pseudo.go +++ b/src/cmd/go/internal/modfetch/pseudo.go @@ -35,13 +35,18 @@ package modfetch import ( - "cmd/go/internal/semver" + "errors" "fmt" - "internal/lazyregexp" "strings" "time" + + "cmd/go/internal/module" + "cmd/go/internal/semver" + "internal/lazyregexp" ) +var pseudoVersionRE = lazyregexp.New(`^v[0-9]+\.(0\.0-|\d+\.\d+-([^+]*\.)?0\.)\d{14}-[A-Za-z0-9]+(\+[0-9A-Za-z-]+(\.[0-9A-Za-z-]+)*)?$`) + // PseudoVersion returns a pseudo-version for the given major version ("v1") // preexisting older tagged version ("" or "v1.2.3" or "v1.2.3-pre"), revision time, // and revision identifier (usually a 12-byte commit hash prefix). @@ -49,7 +54,6 @@ func PseudoVersion(major, older string, t time.Time, rev string) string { if major == "" { major = "v0" } - major = strings.TrimSuffix(major, "-unstable") // make gopkg.in/macaroon-bakery.v2-unstable use "v2" segment := fmt.Sprintf("%s-%s", t.UTC().Format("20060102150405"), rev) build := semver.Build(older) older = semver.Canonical(older) @@ -65,11 +69,16 @@ func PseudoVersion(major, older string, t time.Time, rev string) string { i := strings.LastIndex(older, ".") + 1 v, patch := older[:i], older[i:] - // Increment PATCH by adding 1 to decimal: - // scan right to left turning 9s to 0s until you find a digit to increment. - // (Number might exceed int64, but math/big is overkill.) - digits := []byte(patch) - for i = len(digits) - 1; i >= 0 && digits[i] == '9'; i-- { + // Reassemble. + return v + incDecimal(patch) + "-0." + segment + build +} + +// incDecimal returns the decimal string incremented by 1. +func incDecimal(decimal string) string { + // Scan right to left turning 9s to 0s until you find a digit to increment. + digits := []byte(decimal) + i := len(digits) - 1 + for ; i >= 0 && digits[i] == '9'; i-- { digits[i] = '0' } if i >= 0 { @@ -79,13 +88,29 @@ func PseudoVersion(major, older string, t time.Time, rev string) string { digits[0] = '1' digits = append(digits, '0') } - patch = string(digits) - - // Reassemble. - return v + patch + "-0." + segment + build + return string(digits) } -var pseudoVersionRE = lazyregexp.New(`^v[0-9]+\.(0\.0-|\d+\.\d+-([^+]*\.)?0\.)\d{14}-[A-Za-z0-9]+(\+incompatible)?$`) +// decDecimal returns the decimal string decremented by 1, or the empty string +// if the decimal is all zeroes. +func decDecimal(decimal string) string { + // Scan right to left turning 0s to 9s until you find a digit to decrement. + digits := []byte(decimal) + i := len(digits) - 1 + for ; i >= 0 && digits[i] == '0'; i-- { + digits[i] = '9' + } + if i < 0 { + // decimal is all zeros + return "" + } + if i == 0 && digits[i] == '1' && len(digits) > 1 { + digits = digits[1:] + } else { + digits[i]-- + } + return string(digits) +} // IsPseudoVersion reports whether v is a pseudo-version. func IsPseudoVersion(v string) bool { @@ -96,13 +121,17 @@ func IsPseudoVersion(v string) bool { // It returns an error if v is not a pseudo-version or if the time stamp // embedded in the pseudo-version is not a valid time. func PseudoVersionTime(v string) (time.Time, error) { - timestamp, _, err := parsePseudoVersion(v) + _, timestamp, _, _, err := parsePseudoVersion(v) if err != nil { return time.Time{}, err } t, err := time.Parse("20060102150405", timestamp) if err != nil { - return time.Time{}, fmt.Errorf("pseudo-version with malformed time %s: %q", timestamp, v) + return time.Time{}, &module.InvalidVersionError{ + Version: v, + Pseudo: true, + Err: fmt.Errorf("malformed time %q", timestamp), + } } return t, nil } @@ -110,22 +139,99 @@ func PseudoVersionTime(v string) (time.Time, error) { // PseudoVersionRev returns the revision identifier of the pseudo-version v. // It returns an error if v is not a pseudo-version. func PseudoVersionRev(v string) (rev string, err error) { - _, rev, err = parsePseudoVersion(v) + _, _, rev, _, err = parsePseudoVersion(v) return } -func parsePseudoVersion(v string) (timestamp, rev string, err error) { - if !IsPseudoVersion(v) { - return "", "", fmt.Errorf("malformed pseudo-version %q", v) +// PseudoVersionBase returns the canonical parent version, if any, upon which +// the pseudo-version v is based. +// +// If v has no parent version (that is, if it is "vX.0.0-[…]"), +// PseudoVersionBase returns the empty string and a nil error. +func PseudoVersionBase(v string) (string, error) { + base, _, _, build, err := parsePseudoVersion(v) + if err != nil { + return "", err } - v = strings.TrimSuffix(v, "+incompatible") + + switch pre := semver.Prerelease(base); pre { + case "": + // vX.0.0-yyyymmddhhmmss-abcdef123456 → "" + if build != "" { + // Pseudo-versions of the form vX.0.0-yyyymmddhhmmss-abcdef123456+incompatible + // are nonsensical: the "vX.0.0-" prefix implies that there is no parent tag, + // but the "+incompatible" suffix implies that the major version of + // the parent tag is not compatible with the module's import path. + // + // There are a few such entries in the index generated by proxy.golang.org, + // but we believe those entries were generated by the proxy itself. + return "", &module.InvalidVersionError{ + Version: v, + Pseudo: true, + Err: fmt.Errorf("lacks base version, but has build metadata %q", build), + } + } + return "", nil + + case "-0": + // vX.Y.(Z+1)-0.yyyymmddhhmmss-abcdef123456 → vX.Y.Z + // vX.Y.(Z+1)-0.yyyymmddhhmmss-abcdef123456+incompatible → vX.Y.Z+incompatible + base = strings.TrimSuffix(base, pre) + i := strings.LastIndexByte(base, '.') + if i < 0 { + panic("base from parsePseudoVersion missing patch number: " + base) + } + patch := decDecimal(base[i+1:]) + if patch == "" { + // vX.0.0-0 is invalid, but has been observed in the wild in the index + // generated by requests to proxy.golang.org. + // + // NOTE(bcmills): I cannot find a historical bug that accounts for + // pseudo-versions of this form, nor have I seen such versions in any + // actual go.mod files. If we find actual examples of this form and a + // reasonable theory of how they came into existence, it seems fine to + // treat them as equivalent to vX.0.0 (especially since the invalid + // pseudo-versions have lower precedence than the real ones). For now, we + // reject them. + return "", &module.InvalidVersionError{ + Version: v, + Pseudo: true, + Err: fmt.Errorf("version before %s would have negative patch number", base), + } + } + return base[:i+1] + patch + build, nil + + default: + // vX.Y.Z-pre.0.yyyymmddhhmmss-abcdef123456 → vX.Y.Z-pre + // vX.Y.Z-pre.0.yyyymmddhhmmss-abcdef123456+incompatible → vX.Y.Z-pre+incompatible + if !strings.HasSuffix(base, ".0") { + panic(`base from parsePseudoVersion missing ".0" before date: ` + base) + } + return strings.TrimSuffix(base, ".0") + build, nil + } +} + +var errPseudoSyntax = errors.New("syntax error") + +func parsePseudoVersion(v string) (base, timestamp, rev, build string, err error) { + if !IsPseudoVersion(v) { + return "", "", "", "", &module.InvalidVersionError{ + Version: v, + Pseudo: true, + Err: errPseudoSyntax, + } + } + build = semver.Build(v) + v = strings.TrimSuffix(v, build) j := strings.LastIndex(v, "-") v, rev = v[:j], v[j+1:] i := strings.LastIndex(v, "-") if j := strings.LastIndex(v, "."); j > i { + base = v[:j] // "vX.Y.Z-pre.0" or "vX.Y.(Z+1)-0" timestamp = v[j+1:] } else { + base = v[:i] // "vX.0.0" timestamp = v[i+1:] } - return timestamp, rev, nil + return base, timestamp, rev, build, nil } diff --git a/src/cmd/go/internal/modfetch/pseudo_test.go b/src/cmd/go/internal/modfetch/pseudo_test.go index d0e800b450..4483f8e962 100644 --- a/src/cmd/go/internal/modfetch/pseudo_test.go +++ b/src/cmd/go/internal/modfetch/pseudo_test.go @@ -23,6 +23,10 @@ var pseudoTests = []struct { {"unused", "v1.2.99999999999999999", "v1.2.100000000000000000-0.20060102150405-hash"}, {"unused", "v1.2.3-pre", "v1.2.3-pre.0.20060102150405-hash"}, {"unused", "v1.3.0-pre", "v1.3.0-pre.0.20060102150405-hash"}, + {"unused", "v0.0.0--", "v0.0.0--.0.20060102150405-hash"}, + {"unused", "v1.0.0+metadata", "v1.0.1-0.20060102150405-hash+metadata"}, + {"unused", "v2.0.0+incompatible", "v2.0.1-0.20060102150405-hash+incompatible"}, + {"unused", "v2.3.0-pre+incompatible", "v2.3.0-pre.0.20060102150405-hash+incompatible"}, } var pseudoTime = time.Date(2006, 1, 2, 15, 4, 5, 0, time.UTC) @@ -79,3 +83,72 @@ func TestPseudoVersionRev(t *testing.T) { } } } + +func TestPseudoVersionBase(t *testing.T) { + for _, tt := range pseudoTests { + base, err := PseudoVersionBase(tt.version) + if err != nil { + t.Errorf("PseudoVersionBase(%q): %v", tt.version, err) + } else if base != tt.older { + t.Errorf("PseudoVersionBase(%q) = %q; want %q", tt.version, base, tt.older) + } + } +} + +func TestInvalidPseudoVersionBase(t *testing.T) { + for _, in := range []string{ + "v0.0.0", + "v0.0.0-", // malformed: empty prerelease + "v0.0.0-0.20060102150405-hash", // Z+1 == 0 + "v0.1.0-0.20060102150405-hash", // Z+1 == 0 + "v1.0.0-0.20060102150405-hash", // Z+1 == 0 + "v0.0.0-20060102150405-hash+incompatible", // "+incompatible without base version + "v0.0.0-20060102150405-hash+metadata", // other metadata without base version + } { + base, err := PseudoVersionBase(in) + if err == nil || base != "" { + t.Errorf(`PseudoVersionBase(%q) = %q, %v; want "", error`, in, base, err) + } + } +} + +func TestIncDecimal(t *testing.T) { + cases := []struct { + in, want string + }{ + {"0", "1"}, + {"1", "2"}, + {"99", "100"}, + {"100", "101"}, + {"101", "102"}, + } + + for _, tc := range cases { + got := incDecimal(tc.in) + if got != tc.want { + t.Fatalf("incDecimal(%q) = %q; want %q", tc.in, tc.want, got) + } + } +} + +func TestDecDecimal(t *testing.T) { + cases := []struct { + in, want string + }{ + {"", ""}, + {"0", ""}, + {"00", ""}, + {"1", "0"}, + {"2", "1"}, + {"99", "98"}, + {"100", "99"}, + {"101", "100"}, + } + + for _, tc := range cases { + got := decDecimal(tc.in) + if got != tc.want { + t.Fatalf("decDecimal(%q) = %q; want %q", tc.in, tc.want, got) + } + } +} diff --git a/src/cmd/go/internal/modfile/rule.go b/src/cmd/go/internal/modfile/rule.go index 8fa4f125a5..6e1a22f3ca 100644 --- a/src/cmd/go/internal/modfile/rule.go +++ b/src/cmd/go/internal/modfile/rule.go @@ -16,7 +16,6 @@ import ( "unicode" "cmd/go/internal/module" - "cmd/go/internal/semver" ) // A File is the parsed, interpreted form of a go.mod file. @@ -214,10 +213,9 @@ func (f *File) add(errs *bytes.Buffer, line *Line, verb string, args []string, f fmt.Fprintf(errs, "%s:%d: invalid quoted string: %v\n", f.Syntax.Name, line.Start.Line, err) return } - old := args[1] - v, err := parseVersion(s, &args[1], fix) + v, err := parseVersion(verb, s, &args[1], fix) if err != nil { - fmt.Fprintf(errs, "%s:%d: invalid module version %q: %v\n", f.Syntax.Name, line.Start.Line, old, err) + fmt.Fprintf(errs, "%s:%d: %v\n", f.Syntax.Name, line.Start.Line, err) return } pathMajor, err := modulePathMajor(s) @@ -225,11 +223,8 @@ func (f *File) add(errs *bytes.Buffer, line *Line, verb string, args []string, f fmt.Fprintf(errs, "%s:%d: %v\n", f.Syntax.Name, line.Start.Line, err) return } - if !module.MatchPathMajor(v, pathMajor) { - if pathMajor == "" { - pathMajor = "v0 or v1" - } - fmt.Fprintf(errs, "%s:%d: invalid module: %s should be %s, not %s (%s)\n", f.Syntax.Name, line.Start.Line, s, pathMajor, semver.Major(v), v) + if err := module.MatchPathMajor(v, pathMajor); err != nil { + fmt.Fprintf(errs, "%s:%d: %v\n", f.Syntax.Name, line.Start.Line, &Error{Verb: verb, ModPath: s, Err: err}) return } if verb == "require" { @@ -265,17 +260,13 @@ func (f *File) add(errs *bytes.Buffer, line *Line, verb string, args []string, f } var v string if arrow == 2 { - old := args[1] - v, err = parseVersion(s, &args[1], fix) + v, err = parseVersion(verb, s, &args[1], fix) if err != nil { - fmt.Fprintf(errs, "%s:%d: invalid module version %v: %v\n", f.Syntax.Name, line.Start.Line, old, err) + fmt.Fprintf(errs, "%s:%d: %v\n", f.Syntax.Name, line.Start.Line, err) return } - if !module.MatchPathMajor(v, pathMajor) { - if pathMajor == "" { - pathMajor = "v0 or v1" - } - fmt.Fprintf(errs, "%s:%d: invalid module: %s should be %s, not %s (%s)\n", f.Syntax.Name, line.Start.Line, s, pathMajor, semver.Major(v), v) + if err := module.MatchPathMajor(v, pathMajor); err != nil { + fmt.Fprintf(errs, "%s:%d: %v\n", f.Syntax.Name, line.Start.Line, &Error{Verb: verb, ModPath: s, Err: err}) return } } @@ -296,10 +287,9 @@ func (f *File) add(errs *bytes.Buffer, line *Line, verb string, args []string, f } } if len(args) == arrow+3 { - old := args[arrow+1] - nv, err = parseVersion(ns, &args[arrow+2], fix) + nv, err = parseVersion(verb, ns, &args[arrow+2], fix) if err != nil { - fmt.Fprintf(errs, "%s:%d: invalid module version %v: %v\n", f.Syntax.Name, line.Start.Line, old, err) + fmt.Fprintf(errs, "%s:%d: %v\n", f.Syntax.Name, line.Start.Line, err) return } if IsDirectoryPath(ns) { @@ -411,15 +401,41 @@ func parseString(s *string) (string, error) { return t, nil } -func parseVersion(path string, s *string, fix VersionFixer) (string, error) { +type Error struct { + Verb string + ModPath string + Err error +} + +func (e *Error) Error() string { + return fmt.Sprintf("%s %s: %v", e.Verb, e.ModPath, e.Err) +} + +func (e *Error) Unwrap() error { return e.Err } + +func parseVersion(verb string, path string, s *string, fix VersionFixer) (string, error) { t, err := parseString(s) if err != nil { - return "", err + return "", &Error{ + Verb: verb, + ModPath: path, + Err: &module.InvalidVersionError{ + Version: *s, + Err: err, + }, + } } if fix != nil { var err error t, err = fix(path, t) if err != nil { + if err, ok := err.(*module.ModuleError); ok { + return "", &Error{ + Verb: verb, + ModPath: path, + Err: err.Err, + } + } return "", err } } @@ -427,7 +443,14 @@ func parseVersion(path string, s *string, fix VersionFixer) (string, error) { *s = v return *s, nil } - return "", fmt.Errorf("version must be of the form v1.2.3") + return "", &Error{ + Verb: verb, + ModPath: path, + Err: &module.InvalidVersionError{ + Version: t, + Err: errors.New("must be of the form v1.2.3"), + }, + } } func modulePathMajor(path string) (string, error) { diff --git a/src/cmd/go/internal/modload/init.go b/src/cmd/go/internal/modload/init.go index a8fd06fa38..75ea131273 100644 --- a/src/cmd/go/internal/modload/init.go +++ b/src/cmd/go/internal/modload/init.go @@ -733,10 +733,18 @@ func fixVersion(path, vers string) (string, error) { // Avoid the query if it looks OK. _, pathMajor, ok := module.SplitPathVersion(path) if !ok { - return "", fmt.Errorf("malformed module path: %s", path) + return "", &module.ModuleError{ + Path: path, + Err: &module.InvalidVersionError{ + Version: vers, + Err: fmt.Errorf("malformed module path %q", path), + }, + } } - if vers != "" && module.CanonicalVersion(vers) == vers && module.MatchPathMajor(vers, pathMajor) { - return vers, nil + if vers != "" && module.CanonicalVersion(vers) == vers { + if err := module.MatchPathMajor(vers, pathMajor); err == nil { + return vers, nil + } } info, err := Query(path, vers, "", nil) diff --git a/src/cmd/go/internal/modload/load.go b/src/cmd/go/internal/modload/load.go index f05975d331..1e9a1a3c35 100644 --- a/src/cmd/go/internal/modload/load.go +++ b/src/cmd/go/internal/modload/load.go @@ -1093,18 +1093,18 @@ func (r *mvsReqs) required(mod module.Version) ([]module.Version, error) { data, err := modfetch.GoMod(mod.Path, mod.Version) if err != nil { - return nil, fmt.Errorf("%s@%s: %v", mod.Path, mod.Version, err) + return nil, err } f, err := modfile.ParseLax("go.mod", data, nil) if err != nil { - return nil, fmt.Errorf("%s@%s: parsing go.mod: %v", mod.Path, mod.Version, err) + return nil, module.VersionError(mod, fmt.Errorf("parsing go.mod: %v", err)) } if f.Module == nil { - return nil, fmt.Errorf("%s@%s: parsing go.mod: missing module line", mod.Path, mod.Version) + return nil, module.VersionError(mod, errors.New("parsing go.mod: missing module line")) } if mpath := f.Module.Mod.Path; mpath != origPath && mpath != mod.Path { - return nil, fmt.Errorf("%s@%s: parsing go.mod: unexpected module path %q", mod.Path, mod.Version, mpath) + return nil, module.VersionError(mod, fmt.Errorf("parsing go.mod: unexpected module path %q", mpath)) } if f.Go != nil { r.versions.LoadOrStore(mod, f.Go.Version) diff --git a/src/cmd/go/internal/modload/query.go b/src/cmd/go/internal/modload/query.go index 614592806d..1e55992777 100644 --- a/src/cmd/go/internal/modload/query.go +++ b/src/cmd/go/internal/modload/query.go @@ -158,6 +158,9 @@ func queryProxy(proxy, path, query, current string, allowed func(module.Version) // semantic versioning defines them to be equivalent. if vers := module.CanonicalVersion(query); vers != "" && vers != query { info, err = modfetch.Stat(proxy, path, vers) + if !errors.Is(err, os.ErrNotExist) { + return info, err + } } if err != nil { return nil, queryErr diff --git a/src/cmd/go/internal/modload/query_test.go b/src/cmd/go/internal/modload/query_test.go index 19c45b02b3..5c0527d40c 100644 --- a/src/cmd/go/internal/modload/query_test.go +++ b/src/cmd/go/internal/modload/query_test.go @@ -106,12 +106,18 @@ var queryTests = []struct { {path: queryRepo, query: "v0.2", err: `no matching versions for query "v0.2"`}, {path: queryRepo, query: "v0.0", vers: "v0.0.3"}, {path: queryRepo, query: "v1.9.10-pre2+metadata", vers: "v1.9.10-pre2.0.20190513201126-42abcb6df8ee"}, + + // golang.org/issue/29262: The major version for for a module without a suffix + // should be based on the most recent tag (v1 as appropriate, not v0 + // unconditionally). + {path: queryRepo, query: "42abcb6df8ee", vers: "v1.9.10-pre2.0.20190513201126-42abcb6df8ee"}, + {path: queryRepo, query: "v1.9.10-pre2+wrongmetadata", err: `unknown revision v1.9.10-pre2+wrongmetadata`}, {path: queryRepo, query: "v1.9.10-pre2", err: `unknown revision v1.9.10-pre2`}, {path: queryRepo, query: "latest", vers: "v1.9.9"}, {path: queryRepo, query: "latest", current: "v1.9.10-pre1", vers: "v1.9.10-pre1"}, {path: queryRepo, query: "latest", current: "v1.9.10-pre2+metadata", vers: "v1.9.10-pre2.0.20190513201126-42abcb6df8ee"}, - {path: queryRepo, query: "latest", current: "v0.0.0-20990101120000-5ba9a4ea6213", vers: "v0.0.0-20990101120000-5ba9a4ea6213"}, + {path: queryRepo, query: "latest", current: "v0.0.0-20190513201126-42abcb6df8ee", vers: "v0.0.0-20190513201126-42abcb6df8ee"}, {path: queryRepo, query: "latest", allow: "NOMATCH", err: `no matching versions for query "latest"`}, {path: queryRepo, query: "latest", current: "v1.9.9", allow: "NOMATCH", err: `no matching versions for query "latest" (current version is v1.9.9)`}, {path: queryRepo, query: "latest", current: "v1.99.99", err: `unknown revision v1.99.99`}, @@ -125,20 +131,35 @@ var queryTests = []struct { {path: queryRepo, query: ">v1.10.0", err: `no matching versions for query ">v1.10.0"`}, {path: queryRepo, query: ">=v1.10.0", err: `no matching versions for query ">=v1.10.0"`}, {path: queryRepo, query: "6cf84eb", vers: "v0.0.2-0.20180704023347-6cf84ebaea54"}, + + // golang.org/issue/27173: A pseudo-version may be based on the highest tag on + // any parent commit, or any existing semantically-lower tag: a given commit + // could have been a pre-release for a backport tag at any point. + {path: queryRepo, query: "3ef0cec634e0", vers: "v0.1.2-0.20180704023347-3ef0cec634e0"}, + {path: queryRepo, query: "v0.1.2-0.20180704023347-3ef0cec634e0", vers: "v0.1.2-0.20180704023347-3ef0cec634e0"}, + {path: queryRepo, query: "v0.1.1-0.20180704023347-3ef0cec634e0", vers: "v0.1.1-0.20180704023347-3ef0cec634e0"}, + {path: queryRepo, query: "v0.0.4-0.20180704023347-3ef0cec634e0", vers: "v0.0.4-0.20180704023347-3ef0cec634e0"}, + + // Invalid tags are tested in cmd/go/testdata/script/mod_pseudo_invalid.txt. + {path: queryRepo, query: "start", vers: "v0.0.0-20180704023101-5e9e31667ddf"}, + {path: queryRepo, query: "5e9e31667ddf", vers: "v0.0.0-20180704023101-5e9e31667ddf"}, + {path: queryRepo, query: "v0.0.0-20180704023101-5e9e31667ddf", vers: "v0.0.0-20180704023101-5e9e31667ddf"}, + {path: queryRepo, query: "7a1b6bf", vers: "v0.1.0"}, {path: queryRepoV2, query: "v0.0.0", vers: "v2.0.0"}, {path: queryRepoV2, query: ">=v0.0.0", vers: "v2.0.0"}, - {path: queryRepoV2, query: "v0.0.1+foo", vers: "v2.0.0-20180704023347-179bc86b1be3"}, + {path: queryRepoV2, query: "v2", vers: "v2.5.5"}, {path: queryRepoV2, query: "v2.5", vers: "v2.5.5"}, {path: queryRepoV2, query: "v2.6", err: `no matching versions for query "v2.6"`}, {path: queryRepoV2, query: "v2.6.0-pre1", vers: "v2.6.0-pre1"}, {path: queryRepoV2, query: "latest", vers: "v2.5.5"}, + {path: queryRepoV3, query: "e0cf3de987e6", vers: "v3.0.0-20180704024501-e0cf3de987e6"}, {path: queryRepoV3, query: "latest", vers: "v3.0.0-20180704024501-e0cf3de987e6"}, {path: emptyRepo, query: "latest", vers: "v0.0.0-20180704023549-7bb914627242"}, @@ -162,10 +183,12 @@ func TestQuery(t *testing.T) { t.Run(strings.ReplaceAll(tt.path, "/", "_")+"/"+tt.query+"/"+tt.current+"/"+allow, func(t *testing.T) { info, err := Query(tt.path, tt.query, tt.current, allowed) if tt.err != "" { - if err != nil && err.Error() == tt.err { - return + if err == nil { + t.Errorf("Query(%q, %q, %v) = %v, want error %q", tt.path, tt.query, allow, info.Version, tt.err) + } else if err.Error() != tt.err { + t.Errorf("Query(%q, %q, %v): %v, want error %q", tt.path, tt.query, allow, err, tt.err) } - t.Fatalf("Query(%q, %q, %v): %v, want error %q", tt.path, tt.query, allow, err, tt.err) + return } if err != nil { t.Fatalf("Query(%q, %q, %v): %v", tt.path, tt.query, allow, err) diff --git a/src/cmd/go/internal/module/module.go b/src/cmd/go/internal/module/module.go index bc76b92b91..4a313f99f9 100644 --- a/src/cmd/go/internal/module/module.go +++ b/src/cmd/go/internal/module/module.go @@ -18,6 +18,7 @@ package module // Changes to the semantics in this file require approval from rsc. import ( + "errors" "fmt" "sort" "strings" @@ -40,6 +41,60 @@ type Version struct { Version string `json:",omitempty"` } +// A ModuleError indicates an error specific to a module. +type ModuleError struct { + Path string + Version string + Err error +} + +// VersionError returns a ModuleError derived from a Version and error. +func VersionError(v Version, err error) error { + return &ModuleError{ + Path: v.Path, + Version: v.Version, + Err: err, + } +} + +func (e *ModuleError) Error() string { + if v, ok := e.Err.(*InvalidVersionError); ok { + return fmt.Sprintf("%s@%s: invalid %s: %v", e.Path, v.Version, v.noun(), v.Err) + } + if e.Version != "" { + return fmt.Sprintf("%s@%s: %v", e.Path, e.Version, e.Err) + } + return fmt.Sprintf("module %s: %v", e.Path, e.Err) +} + +func (e *ModuleError) Unwrap() error { return e.Err } + +// An InvalidVersionError indicates an error specific to a version, with the +// module path unknown or specified externally. +// +// A ModuleError may wrap an InvalidVersionError, but an InvalidVersionError +// must not wrap a ModuleError. +type InvalidVersionError struct { + Version string + Pseudo bool + Err error +} + +// noun returns either "version" or "pseudo-version", depending on whether +// e.Version is a pseudo-version. +func (e *InvalidVersionError) noun() string { + if e.Pseudo { + return "pseudo-version" + } + return "version" +} + +func (e *InvalidVersionError) Error() string { + return fmt.Sprintf("%s %q invalid: %s", e.noun(), e.Version, e.Err) +} + +func (e *InvalidVersionError) Unwrap() error { return e.Err } + // Check checks that a given module path, version pair is valid. // In addition to the path being a valid module path // and the version being a valid semantic version, @@ -51,17 +106,14 @@ func Check(path, version string) error { return err } if !semver.IsValid(version) { - return fmt.Errorf("malformed semantic version %v", version) + return &ModuleError{ + Path: path, + Err: &InvalidVersionError{Version: version, Err: errors.New("not a semantic version")}, + } } _, pathMajor, _ := SplitPathVersion(path) - if !MatchPathMajor(version, pathMajor) { - if pathMajor == "" { - pathMajor = "v0 or v1" - } - if pathMajor[0] == '.' { // .v1 - pathMajor = pathMajor[1:] - } - return fmt.Errorf("mismatched module path %v and version %v (want %v)", path, version, pathMajor) + if err := MatchPathMajor(version, pathMajor); err != nil { + return &ModuleError{Path: path, Err: err} } return nil } @@ -320,22 +372,56 @@ func splitGopkgIn(path string) (prefix, pathMajor string, ok bool) { return prefix, pathMajor, true } -// MatchPathMajor reports whether the semantic version v -// matches the path major version pathMajor. -func MatchPathMajor(v, pathMajor string) bool { +// MatchPathMajor returns a non-nil error if the semantic version v +// does not match the path major version pathMajor. +func MatchPathMajor(v, pathMajor string) error { if strings.HasPrefix(pathMajor, ".v") && strings.HasSuffix(pathMajor, "-unstable") { pathMajor = strings.TrimSuffix(pathMajor, "-unstable") } if strings.HasPrefix(v, "v0.0.0-") && pathMajor == ".v1" { // Allow old bug in pseudo-versions that generated v0.0.0- pseudoversion for gopkg .v1. // For example, gopkg.in/yaml.v2@v2.2.1's go.mod requires gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405. - return true + return nil } m := semver.Major(v) if pathMajor == "" { - return m == "v0" || m == "v1" || semver.Build(v) == "+incompatible" + if m == "v0" || m == "v1" || semver.Build(v) == "+incompatible" { + return nil + } + pathMajor = "v0 or v1" + } else if pathMajor[0] == '/' || pathMajor[0] == '.' { + if m == pathMajor[1:] { + return nil + } + pathMajor = pathMajor[1:] } - return (pathMajor[0] == '/' || pathMajor[0] == '.') && m == pathMajor[1:] + return &InvalidVersionError{ + Version: v, + Err: fmt.Errorf("should be %s, not %s", pathMajor, semver.Major(v)), + } +} + +// PathMajorPrefix returns the major-version tag prefix implied by pathMajor. +// An empty PathMajorPrefix allows either v0 or v1. +// +// Note that MatchPathMajor may accept some versions that do not actually begin +// with this prefix: namely, it accepts a 'v0.0.0-' prefix for a '.v1' +// pathMajor, even though that pathMajor implies 'v1' tagging. +func PathMajorPrefix(pathMajor string) string { + if pathMajor == "" { + return "" + } + if pathMajor[0] != '/' && pathMajor[0] != '.' { + panic("pathMajor suffix " + pathMajor + " passed to PathMajorPrefix lacks separator") + } + if strings.HasPrefix(pathMajor, ".v") && strings.HasSuffix(pathMajor, "-unstable") { + pathMajor = strings.TrimSuffix(pathMajor, "-unstable") + } + m := pathMajor[1:] + if m != semver.Major(m) { + panic("pathMajor suffix " + pathMajor + "passed to PathMajorPrefix is not a valid major version") + } + return m } // CanonicalVersion returns the canonical form of the version string v. diff --git a/src/cmd/go/internal/mvs/mvs.go b/src/cmd/go/internal/mvs/mvs.go index dca909e858..568efbd8b2 100644 --- a/src/cmd/go/internal/mvs/mvs.go +++ b/src/cmd/go/internal/mvs/mvs.go @@ -87,7 +87,6 @@ func (e *BuildListError) Module() module.Version { func (e *BuildListError) Error() string { b := &strings.Builder{} - errMsg := e.Err.Error() stack := e.stack // Don't print modules at the beginning of the chain without a @@ -97,16 +96,19 @@ func (e *BuildListError) Error() string { stack = stack[:len(stack)-1] } - // Don't print the last module if the error message already - // starts with module path and version. - errMentionsLast := len(stack) > 0 && strings.HasPrefix(errMsg, fmt.Sprintf("%s@%s: ", stack[0].m.Path, stack[0].m.Version)) for i := len(stack) - 1; i >= 1; i-- { fmt.Fprintf(b, "%s@%s %s\n\t", stack[i].m.Path, stack[i].m.Version, stack[i].nextReason) } - if errMentionsLast || len(stack) == 0 { - b.WriteString(errMsg) + if len(stack) == 0 { + b.WriteString(e.Err.Error()) } else { - fmt.Fprintf(b, "%s@%s: %s", stack[0].m.Path, stack[0].m.Version, errMsg) + // Ensure that the final module path and version are included as part of the + // error message. + if _, ok := e.Err.(*module.ModuleError); ok { + fmt.Fprintf(b, "%v", e.Err) + } else { + fmt.Fprintf(b, "%v", module.VersionError(stack[0].m, e.Err)) + } } return b.String() } diff --git a/src/cmd/go/testdata/script/mod_download_hash.txt b/src/cmd/go/testdata/script/mod_download_hash.txt index 07ea78a4fd..5a42c4b072 100644 --- a/src/cmd/go/testdata/script/mod_download_hash.txt +++ b/src/cmd/go/testdata/script/mod_download_hash.txt @@ -7,18 +7,18 @@ env GOPROXY=direct env GOSUMDB=off go mod download rsc.io/quote@a91498bed0a73d4bb9c1fb2597925f7883bc40a7 -exists $GOPATH/pkg/mod/cache/download/rsc.io/quote/@v/v0.0.0-20180709162918-a91498bed0a7.info -exists $GOPATH/pkg/mod/cache/download/rsc.io/quote/@v/v0.0.0-20180709162918-a91498bed0a7.mod -exists $GOPATH/pkg/mod/cache/download/rsc.io/quote/@v/v0.0.0-20180709162918-a91498bed0a7.zip +exists $GOPATH/pkg/mod/cache/download/rsc.io/quote/@v/v1.5.3-0.20180709162918-a91498bed0a7.info +exists $GOPATH/pkg/mod/cache/download/rsc.io/quote/@v/v1.5.3-0.20180709162918-a91498bed0a7.mod +exists $GOPATH/pkg/mod/cache/download/rsc.io/quote/@v/v1.5.3-0.20180709162918-a91498bed0a7.zip go mod download rsc.io/quote@master -exists $GOPATH/pkg/mod/cache/download/rsc.io/quote/@v/v0.0.0-20180710144737-5d9f230bcfba.info -exists $GOPATH/pkg/mod/cache/download/rsc.io/quote/@v/v0.0.0-20180710144737-5d9f230bcfba.mod -exists $GOPATH/pkg/mod/cache/download/rsc.io/quote/@v/v0.0.0-20180710144737-5d9f230bcfba.zip +exists $GOPATH/pkg/mod/cache/download/rsc.io/quote/@v/v1.5.3-0.20180709162918-a91498bed0a7.info +exists $GOPATH/pkg/mod/cache/download/rsc.io/quote/@v/v1.5.3-0.20180709162918-a91498bed0a7.mod +exists $GOPATH/pkg/mod/cache/download/rsc.io/quote/@v/v1.5.3-0.20180709162918-a91498bed0a7.zip -- go.mod -- module m -- m.go -- -package m \ No newline at end of file +package m diff --git a/src/cmd/go/testdata/script/mod_invalid_version.txt b/src/cmd/go/testdata/script/mod_invalid_version.txt new file mode 100644 index 0000000000..34cdfe4902 --- /dev/null +++ b/src/cmd/go/testdata/script/mod_invalid_version.txt @@ -0,0 +1,220 @@ +[!net] skip +[!exec:git] skip + +env GO111MODULE=on +env GOPROXY=direct +env GOSUMDB=off + +# Regression test for golang.org/issue/27173: if the user (or go.mod file) +# requests a pseudo-version that does not match both the module path and commit +# metadata, reject it with a helpful error message. +# +# TODO(bcmills): Replace the github.com/pierrec/lz4 examples with something +# equivalent on vcs-test.golang.org. + +# An incomplete commit hash is not a valid semantic version, +# but can appear in the main go.mod file anyway and should be resolved. +cp go.mod.orig go.mod +go mod edit -require golang.org/x/text@14c0d48ead0c +cd outside +! go list -m golang.org/x/text +stderr 'go: example.com@v0.0.0: parsing ../go.mod: '$WORK'/gopath/src/go.mod:5: require golang.org/x/text: version "14c0d48ead0c" invalid: must be of the form v1.2.3' +cd .. +go list -m golang.org/x/text +stdout 'golang.org/x/text v0.1.1-0.20170915032832-14c0d48ead0c' +grep 'golang.org/x/text v0.1.1-0.20170915032832-14c0d48ead0c' go.mod + +# A module path below the repo root that does not contain a go.mod file is invalid. +cp go.mod.orig go.mod +go mod edit -require golang.org/x/text/unicode@v0.0.0-20170915032832-14c0d48ead0c +cd outside +! go list -m golang.org/x/text +stderr 'go: example.com@v0.0.0 requires\n\tgolang.org/x/text/unicode@v0.0.0-20170915032832-14c0d48ead0c: missing golang.org/x/text/unicode/go.mod at revision 14c0d48ead0c' +cd .. +! go list -m golang.org/x/text +stderr 'golang.org/x/text/unicode@v0.0.0-20170915032832-14c0d48ead0c: missing golang.org/x/text/unicode/go.mod at revision 14c0d48ead0c' + +# A major version that does not match the module path is invalid. +cp go.mod.orig go.mod +go mod edit -require golang.org/x/text@v2.1.1-0.20170915032832-14c0d48ead0c +cd outside +! go list -m golang.org/x/text +stderr 'go: example.com@v0.0.0: parsing ../go.mod: '$WORK'/gopath/src/go.mod:5: require golang.org/x/text: version "v2.1.1-0.20170915032832-14c0d48ead0c" invalid: should be v0 or v1, not v2' +cd .. +! go list -m golang.org/x/text +stderr $WORK'/gopath/src/go.mod:5: require golang.org/x/text: version "v2.1.1-0.20170915032832-14c0d48ead0c" invalid: should be v0 or v1, not v2' + +# A pseudo-version with fewer than 12 digits of SHA-1 prefix is invalid. +cp go.mod.orig go.mod +go mod edit -require golang.org/x/text@v0.1.1-0.20170915032832-14c0d48ead0 +cd outside +! go list -m golang.org/x/text +stderr 'go: example.com@v0.0.0 requires\n\tgolang.org/x/text@v0.1.1-0.20170915032832-14c0d48ead0: invalid pseudo-version: revision is shorter than canonical \(14c0d48ead0c\)' +cd .. +! go list -m golang.org/x/text +stderr 'golang.org/x/text@v0.1.1-0.20170915032832-14c0d48ead0: invalid pseudo-version: revision is shorter than canonical \(14c0d48ead0c\)' + +# A pseudo-version with more than 12 digits of SHA-1 prefix is invalid. +cp go.mod.orig go.mod +go mod edit -require golang.org/x/text@v0.1.1-0.20170915032832-14c0d48ead0cd47e3104ada247d91be04afc7a5a +cd outside +! go list -m golang.org/x/text +stderr 'go: example.com@v0.0.0 requires\n\tgolang.org/x/text@v0.1.1-0.20170915032832-14c0d48ead0cd47e3104ada247d91be04afc7a5a: invalid pseudo-version: revision is longer than canonical \(14c0d48ead0c\)' +cd .. +! go list -m golang.org/x/text +stderr 'golang.org/x/text@v0.1.1-0.20170915032832-14c0d48ead0cd47e3104ada247d91be04afc7a5a: invalid pseudo-version: revision is longer than canonical \(14c0d48ead0c\)' + +# A pseudo-version that does not match the commit timestamp is invalid. +cp go.mod.orig go.mod +go mod edit -require golang.org/x/text@v0.1.1-0.20190915032832-14c0d48ead0c +cd outside +! go list -m golang.org/x/text +stderr 'go: example.com@v0.0.0 requires\n\tgolang.org/x/text@v0.1.1-0.20190915032832-14c0d48ead0c: invalid pseudo-version: does not match version-control timestamp \(2017-09-15T03:28:32Z\)' +cd .. +! go list -m golang.org/x/text +stderr 'golang.org/x/text@v0.1.1-0.20190915032832-14c0d48ead0c: invalid pseudo-version: does not match version-control timestamp \(2017-09-15T03:28:32Z\)' + +# A 'replace' directive in the main module can replace an invalid timestamp +# with a valid one. +go mod edit -replace golang.org/x/text@v0.1.1-0.20190915032832-14c0d48ead0c=golang.org/x/text@14c0d48ead0c +cd outside +! go list -m golang.org/x/text +stderr 'go: example.com@v0.0.0 requires\n\tgolang.org/x/text@v0.1.1-0.20190915032832-14c0d48ead0c: invalid pseudo-version: does not match version-control timestamp \(2017-09-15T03:28:32Z\)' +cd .. +go list -m golang.org/x/text +stdout 'golang.org/x/text v0.1.1-0.20190915032832-14c0d48ead0c => golang.org/x/text v0.1.1-0.20170915032832-14c0d48ead0c' + +# A pseudo-version that is not derived from a tag is invalid. +cp go.mod.orig go.mod +go mod edit -require golang.org/x/text@v1.999.999-0.20170915032832-14c0d48ead0c +cd outside +! go list -m golang.org/x/text +stderr 'go: example.com@v0.0.0 requires\n\tgolang.org/x/text@v1.999.999-0.20170915032832-14c0d48ead0c: invalid pseudo-version: preceding tag \(v1.999.998\) not found' +cd .. +! go list -m golang.org/x/text +stderr 'golang.org/x/text@v1.999.999-0.20170915032832-14c0d48ead0c: invalid pseudo-version: preceding tag \(v1.999.998\) not found' + +# A v1.0.0- pseudo-version that is not derived from a tag is invalid: +# v1.0.0- implies no tag, but the correct no-tag prefix for a module path +# without a major-version suffix is v0.0.0-. +cp go.mod.orig go.mod +go mod edit -require golang.org/x/text@v1.0.0-20170915032832-14c0d48ead0c +cd outside +! go list -m golang.org/x/text +stderr 'go: example.com@v0.0.0 requires\n\tgolang.org/x/text@v1.0.0-20170915032832-14c0d48ead0c: invalid pseudo-version: major version without preceding tag must be v0, not v1' +cd .. +! go list -m golang.org/x/text +stderr 'golang.org/x/text@v1.0.0-20170915032832-14c0d48ead0c: invalid pseudo-version: major version without preceding tag must be v0, not v1' + +# A pseudo-version vX.Y.Z+1 cannot have Z+1 == 0, since that would +# imply a base tag with a negative patch field. +cp go.mod.orig go.mod +go mod edit -require golang.org/x/text@v0.0.0-0.20170915032832-14c0d48ead0c +cd outside +! go list -m golang.org/x/text +stderr 'go: example.com@v0.0.0 requires\n\tgolang.org/x/text@v0.0.0-0.20170915032832-14c0d48ead0c: invalid pseudo-version: version before v0.0.0 would have negative patch number' +cd .. +! go list -m golang.org/x/text +stderr 'golang.org/x/text@v0.0.0-0.20170915032832-14c0d48ead0c: invalid pseudo-version: version before v0.0.0 would have negative patch number' + +# A 'replace' directive in the main module can replace an +# invalid pseudo-version base with a valid one. +go mod edit -replace golang.org/x/text@v0.0.0-0.20170915032832-14c0d48ead0c=golang.org/x/text@v0.0.0-20170915032832-14c0d48ead0c +cd outside +! go list -m golang.org/x/text +stderr 'go: example.com@v0.0.0 requires\n\tgolang.org/x/text@v0.0.0-0.20170915032832-14c0d48ead0c: invalid pseudo-version: version before v0.0.0 would have negative patch number' +cd .. +go list -m golang.org/x/text +stdout 'golang.org/x/text v0.0.0-0.20170915032832-14c0d48ead0c => golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c' + +# A pseudo-version derived from a non-ancestor tag is invalid. +cp go.mod.orig go.mod +go mod edit -require golang.org/x/text@v0.2.1-0.20170915032832-14c0d48ead0c +cd outside +! go list -m golang.org/x/text +stderr 'go: example.com@v0.0.0 requires\n\tgolang.org/x/text@v0.2.1-0.20170915032832-14c0d48ead0c: invalid pseudo-version: revision 14c0d48ead0c is not a descendent of preceding tag \(v0.2.0\)' +cd .. +! go list -m golang.org/x/text +stderr 'golang.org/x/text@v0.2.1-0.20170915032832-14c0d48ead0c: invalid pseudo-version: revision 14c0d48ead0c is not a descendent of preceding tag \(v0.2.0\)' + +# A +incompatible suffix is not allowed on a version that is actually compatible. +cp go.mod.orig go.mod +go mod edit -require golang.org/x/text@v0.1.1-0.20170915032832-14c0d48ead0c+incompatible +cd outside +! go list -m golang.org/x/text +stderr 'go: example.com@v0.0.0 requires\n\tgolang.org/x/text@v0.1.1-0.20170915032832-14c0d48ead0c\+incompatible: invalid version: \+incompatible suffix not allowed: major version v0 is compatible' +cd .. +! go list -m golang.org/x/text +stderr 'golang.org/x/text@v0.1.1-0.20170915032832-14c0d48ead0c\+incompatible: invalid version: \+incompatible suffix not allowed: major version v0 is compatible' + +# The pseudo-version for a commit after a tag with a non-matching major version +# should instead be based on the last matching tag. +cp go.mod.orig go.mod +go mod edit -require github.com/pierrec/lz4@473cd7ce01a1 +go list -m github.com/pierrec/lz4 +stdout 'github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1' +cd outside +go list -m github.com/pierrec/lz4 +stdout 'github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1' +cd .. + +# A +incompatible version for a module that has an explicit go.mod file is invalid. +cp go.mod.orig go.mod +go mod edit -require github.com/pierrec/lz4@v2.0.9-0.20190131084431-473cd7ce01a1+incompatible +cd outside +! go list -m github.com/pierrec/lz4 +stderr 'go: example.com@v0.0.0 requires\n\tgithub.com/pierrec/lz4@v2.0.9-0.20190131084431-473cd7ce01a1\+incompatible: invalid version: \+incompatible suffix not allowed: module contains a go.mod file, so semantic import versioning is required' +cd .. +! go list -m github.com/pierrec/lz4 +stderr 'github.com/pierrec/lz4@v2.0.9-0.20190131084431-473cd7ce01a1\+incompatible: invalid version: \+incompatible suffix not allowed: module contains a go.mod file, so semantic import versioning is required' + +# A +incompatible pseudo-version is valid for a revision of the module +# that lacks a go.mod file. +cp go.mod.orig go.mod +go mod edit -require github.com/pierrec/lz4@v2.0.4-0.20180826165652-dbe9298ce099+incompatible +cd outside +go list -m github.com/pierrec/lz4 +stdout 'github.com/pierrec/lz4 v2.0.4-0.20180826165652-dbe9298ce099\+incompatible' +cd .. +go list -m github.com/pierrec/lz4 +stdout 'github.com/pierrec/lz4 v2.0.4-0.20180826165652-dbe9298ce099\+incompatible' + +# 'go get' for a mismatched major version without a go.mod file should resolve +# to the equivalent +incompatible version, not a pseudo-version with a different +# major version. +cp go.mod.orig go.mod +go get -d github.com/pierrec/lz4@v2.0.5 +go list -m github.com/pierrec/lz4 +stdout 'github.com/pierrec/lz4 v2.0.5\+incompatible' + +# 'go get' for a mismatched major version with a go.mod file should error out, +# not resolve to a pseudo-version with a different major version. +cp go.mod.orig go.mod +! go get -d github.com/pierrec/lz4@v2.0.8 +stderr 'go get github.com/pierrec/lz4@v2.0.8: github.com/pierrec/lz4@v2.0.8: invalid version: module contains a go.mod file, so major version must be compatible: should be v0 or v1, not v2' + +# An invalid +incompatible suffix for a canonical version should error out, +# not resolve to a pseudo-version. +# +# TODO(bcmills): The "outside" view for this failure mode is missing its import stack. +# Figure out why and fix it. +cp go.mod.orig go.mod +go mod edit -require github.com/pierrec/lz4@v2.0.8+incompatible +cd outside +! go list -m github.com/pierrec/lz4 +stderr 'github.com/pierrec/lz4@v2.0.8\+incompatible: invalid version: \+incompatible suffix not allowed: module contains a go.mod file, so semantic import versioning is required' +cd .. +! go list -m github.com/pierrec/lz4 +stderr 'github.com/pierrec/lz4@v2.0.8\+incompatible: invalid version: \+incompatible suffix not allowed: module contains a go.mod file, so semantic import versioning is required' + +-- go.mod.orig -- +module example.com + +go 1.13 +-- outside/go.mod -- +module example.com/outside + +go 1.13 + +require example.com v0.0.0 +replace example.com v0.0.0 => ./.. From c11f6c4929efff3ef02aff9a3de9c0f4799bc276 Mon Sep 17 00:00:00 2001 From: Dmitri Shuralyov Date: Mon, 17 Jun 2019 16:28:18 -0400 Subject: [PATCH 018/255] doc: add release notes for godoc and go doc Updates #30029 Updates #31457 Change-Id: I08414a544615e74afb47f7a10a00f1e22adfd40c Reviewed-on: https://go-review.googlesource.com/c/go/+/182619 Reviewed-by: Katie Hockman --- doc/go1.13.html | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/doc/go1.13.html b/doc/go1.13.html index 594b75bcfa..d8ef6db073 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -265,6 +265,25 @@ TODO 0o660, 1.2e3, and 1i after applying gofmt.

+

godoc and go doc

+ +

+ The godoc webserver is no longer included in the main binary distribution. + To run the godoc webserver locally, manually install it first: +

+go get golang.org/x/tools/cmd/godoc
+godoc
+
+

+ +

+ The + go doc + command now always includes the package clause in its output, except for + commands. This replaces the previous behavior where a heuristic was used, + causing the package clause to be omitted under certain conditions. +

+

Runtime

@@ -333,7 +352,6 @@ TODO

- From 295419d0b446bd8e7310966be561c9196d92dc5a Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Fri, 21 Jun 2019 11:50:25 -0700 Subject: [PATCH 019/255] runtime/cgo: on Solaris link against -lxnet Fixes #32205 Change-Id: If5b1d32a5e19ff5d9337862c07fb77890d19d69f Reviewed-on: https://go-review.googlesource.com/c/go/+/183379 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Tobias Klauser --- src/runtime/cgo/cgo.go | 1 + 1 file changed, 1 insertion(+) diff --git a/src/runtime/cgo/cgo.go b/src/runtime/cgo/cgo.go index eb11c0e100..5a2b5e4271 100644 --- a/src/runtime/cgo/cgo.go +++ b/src/runtime/cgo/cgo.go @@ -21,6 +21,7 @@ package cgo #cgo netbsd LDFLAGS: -lpthread #cgo openbsd LDFLAGS: -lpthread #cgo aix LDFLAGS: -Wl,-berok +#cgo solaris LDFLAGS: -lxnet #cgo CFLAGS: -Wall -Werror From c290cb6338fe9ce7d8ade3adbb4acd0f0e6172e4 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Sat, 22 Jun 2019 12:56:49 -0700 Subject: [PATCH 020/255] test: update blank1.go for changed gofrontend error messages Adjusting gofrontend error messages for GCC standards causes the messages expected by this test to be adjusted slightly: the gofrontend code now quotes the _ identifier. Change-Id: I55ee2ae70b4da3bf7a421ceea80b254dd17601a9 Reviewed-on: https://go-review.googlesource.com/c/go/+/183477 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Dmitri Shuralyov Reviewed-by: Cherry Zhang --- test/blank1.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/blank1.go b/test/blank1.go index bf94d1a0fb..1a9f012464 100644 --- a/test/blank1.go +++ b/test/blank1.go @@ -7,7 +7,7 @@ // Test that incorrect uses of the blank identifer are caught. // Does not compile. -package _ // ERROR "invalid package name _" +package _ // ERROR "invalid package name" var t struct { _ int @@ -22,8 +22,8 @@ type T struct { } func main() { - _() // ERROR "cannot use _ as value" - x := _+1 // ERROR "cannot use _ as value" + _() // ERROR "cannot use .* as value" + x := _+1 // ERROR "cannot use .* as value" _ = x _ = t._ // ERROR "cannot refer to blank field|invalid use of" From fafc92d4a6756c00683513a21a8f055b01595792 Mon Sep 17 00:00:00 2001 From: Andrew Date: Mon, 24 Jun 2019 10:11:26 -0400 Subject: [PATCH 021/255] doc/go1.13: remove bytes TODO since it does not require a release note Change-Id: I8c19c6df6fec74dcc8c3bfdc667576ea00e86ec1 Reviewed-on: https://go-review.googlesource.com/c/go/+/183617 Reviewed-by: Katie Hockman --- doc/go1.13.html | 4 ---- 1 file changed, 4 deletions(-) diff --git a/doc/go1.13.html b/doc/go1.13.html index d8ef6db073..2c2b0c1728 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -359,10 +359,6 @@ TODO
bytes
-

- TODO: https://golang.org/cl/161760: hoist error creation out of function -

-

The new ToValidUTF8 function returns a copy of a given byte slice with each run of invalid UTF-8 byte sequences replaced by a given slice. From 43e53beba53547f2846a18e373c9205ededc20d2 Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Mon, 24 Jun 2019 10:16:12 -0400 Subject: [PATCH 022/255] =?UTF-8?q?cmd/go/internal/modfetch:=20treat=20a?= =?UTF-8?q?=20missing=20go.mod=20file=20as=20a=20=E2=80=9Cnot=20exist?= =?UTF-8?q?=E2=80=9D=20error?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If we have found a repository at the requested version but it does not contain a go.mod file in an appropriate subdirectory, then the module with the given path does not exist at that version. Therefore, we should report it with an error equivalent to os.ErrNotExist so that modload.Query will continue to check other possible module paths. Updates #27173 Change-Id: Ica73f4bb97f58e611a7f7d38183ee52fef5ee69a Reviewed-on: https://go-review.googlesource.com/c/go/+/183618 Run-TryBot: Bryan C. Mills TryBot-Result: Gobot Gobot Reviewed-by: Jay Conrod --- src/cmd/go/internal/modfetch/coderepo.go | 8 +++++++- src/cmd/go/internal/modfetch/coderepo_test.go | 2 +- src/cmd/go/testdata/script/mod_invalid_version.txt | 11 +++++++++-- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/cmd/go/internal/modfetch/coderepo.go b/src/cmd/go/internal/modfetch/coderepo.go index 45243681f8..267b76349d 100644 --- a/src/cmd/go/internal/modfetch/coderepo.go +++ b/src/cmd/go/internal/modfetch/coderepo.go @@ -255,7 +255,13 @@ func (r *codeRepo) convert(info *codehost.RevInfo, statVers string) (*RevInfo, e if err != nil { // TODO: It would be nice to return an error like "not a module". // Right now we return "missing go.mod", which is a little confusing. - return nil, err + return nil, &module.ModuleError{ + Path: r.modPath, + Err: &module.InvalidVersionError{ + Version: info2.Version, + Err: notExistError(err.Error()), + }, + } } } diff --git a/src/cmd/go/internal/modfetch/coderepo_test.go b/src/cmd/go/internal/modfetch/coderepo_test.go index bfb1dff3de..5fc9bc3439 100644 --- a/src/cmd/go/internal/modfetch/coderepo_test.go +++ b/src/cmd/go/internal/modfetch/coderepo_test.go @@ -638,7 +638,7 @@ var latestTests = []struct { { vcs: "git", path: "github.com/rsc/vgotest1/subdir", - err: "missing github.com/rsc/vgotest1/subdir/go.mod at revision a08abb797a67", + err: "github.com/rsc/vgotest1/subdir@v0.0.0-20180219223237-a08abb797a67: invalid version: missing github.com/rsc/vgotest1/subdir/go.mod at revision a08abb797a67", }, { vcs: "mod", diff --git a/src/cmd/go/testdata/script/mod_invalid_version.txt b/src/cmd/go/testdata/script/mod_invalid_version.txt index 34cdfe4902..2be0d01cce 100644 --- a/src/cmd/go/testdata/script/mod_invalid_version.txt +++ b/src/cmd/go/testdata/script/mod_invalid_version.txt @@ -29,10 +29,17 @@ cp go.mod.orig go.mod go mod edit -require golang.org/x/text/unicode@v0.0.0-20170915032832-14c0d48ead0c cd outside ! go list -m golang.org/x/text -stderr 'go: example.com@v0.0.0 requires\n\tgolang.org/x/text/unicode@v0.0.0-20170915032832-14c0d48ead0c: missing golang.org/x/text/unicode/go.mod at revision 14c0d48ead0c' +stderr 'go: example.com@v0.0.0 requires\n\tgolang.org/x/text/unicode@v0.0.0-20170915032832-14c0d48ead0c: invalid version: missing golang.org/x/text/unicode/go.mod at revision 14c0d48ead0c' cd .. ! go list -m golang.org/x/text -stderr 'golang.org/x/text/unicode@v0.0.0-20170915032832-14c0d48ead0c: missing golang.org/x/text/unicode/go.mod at revision 14c0d48ead0c' +stderr 'golang.org/x/text/unicode@v0.0.0-20170915032832-14c0d48ead0c: invalid version: missing golang.org/x/text/unicode/go.mod at revision 14c0d48ead0c' + +# However, arguments to 'go get' can name packages above the root. +cp go.mod.orig go.mod +go get -d golang.org/x/text/unicode@v0.0.0-20170915032832-14c0d48ead0c +go list -m golang.org/x/text/... +stdout 'golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c' +! stdout 'golang.org/x/text/unicode' # A major version that does not match the module path is invalid. cp go.mod.orig go.mod From 122a4fb7b038af1407a8b1c5ffe370bae70a5c69 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Mon, 24 Jun 2019 10:02:41 -0700 Subject: [PATCH 023/255] doc/go1.13: mention {NetBSD,OpenBSD}/arm64 ports Also alphabetize port listing. Change-Id: I4cc552a74856c9955571d721deb6223438c7d856 Reviewed-on: https://go-review.googlesource.com/c/go/+/183637 Reviewed-by: Dmitri Shuralyov --- doc/go1.13.html | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/doc/go1.13.html b/doc/go1.13.html index 2c2b0c1728..00fd4628da 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -105,6 +105,14 @@ TODO

Ports

+

AIX

+ +

+ AIX on PPC64 (aix/ppc64) now supports cgo, external + linking, and the c-archive and pie build + modes. +

+

Android

@@ -136,12 +144,16 @@ TODO build tag.

-

AIX

+

NetBSD

-

- AIX on PPC64 (aix/ppc64) now supports cgo, external - linking, and the c-archive and pie build - modes. +

+ Go now supports NetBSD on arm64. +

+ +

OpenBSD

+ +

+ Go now supports OpenBSD on arm64.

Windows

@@ -351,7 +363,6 @@ TODO generally TODO

- From 4ae3835aa28d21fd9045223640b7617ca1b83dfe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Chigot?= Date: Thu, 13 Jun 2019 10:12:06 +0200 Subject: [PATCH 024/255] cmd/go: silence ar with D flag failures MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The first call of ar must not show its output in order to avoid useless error messages about D flag. Change-Id: I3a2f5144b3bb271705000b67cd46cd02e98aca77 Reviewed-on: https://go-review.googlesource.com/c/go/+/182077 Run-TryBot: Clément Chigot TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- src/cmd/go/internal/work/gccgo.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/cmd/go/internal/work/gccgo.go b/src/cmd/go/internal/work/gccgo.go index 67065950b2..36726d369b 100644 --- a/src/cmd/go/internal/work/gccgo.go +++ b/src/cmd/go/internal/work/gccgo.go @@ -207,9 +207,16 @@ func (tools gccgoToolchain) pack(b *Builder, a *Action, afile string, ofiles []s } absAfile := mkAbs(objdir, afile) // Try with D modifier first, then without if that fails. - if b.run(a, p.Dir, p.ImportPath, nil, tools.ar(), arArgs, "rcD", absAfile, absOfiles) != nil { + output, err := b.runOut(a, p.Dir, nil, tools.ar(), arArgs, "rcD", absAfile, absOfiles) + if err != nil { return b.run(a, p.Dir, p.ImportPath, nil, tools.ar(), arArgs, "rc", absAfile, absOfiles) } + + if len(output) > 0 { + // Show the output if there is any even without errors. + b.showOutput(a, p.Dir, p.ImportPath, b.processOutput(output)) + } + return nil } From 38fc0afca6139ba2e28061712f68cbe426d238e7 Mon Sep 17 00:00:00 2001 From: kawakami Date: Sun, 23 Jun 2019 05:30:24 +0900 Subject: [PATCH 025/255] cmd/cgo: fix inappropriate array copy Ensure that during rewriting of expressions that take the address of an array, that we properly recognize *ast.IndexExpr as an operation to create a pointer variable and thus assign the proper addressOf and deference operators as "&" and "*" respectively. This fixes a regression from CL 142884. Fixed #32579 Change-Id: I3cb78becff4f8035d66fc5536e5b52857eacaa3d Reviewed-on: https://go-review.googlesource.com/c/go/+/183458 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- misc/cgo/test/cgo_test.go | 1 + misc/cgo/test/test.go | 12 ++++++++++++ src/cmd/cgo/gcc.go | 2 ++ 3 files changed, 15 insertions(+) diff --git a/misc/cgo/test/cgo_test.go b/misc/cgo/test/cgo_test.go index 2d6d269608..c66df2cd46 100644 --- a/misc/cgo/test/cgo_test.go +++ b/misc/cgo/test/cgo_test.go @@ -57,6 +57,7 @@ func Test26066(t *testing.T) { test26066(t) } func Test27660(t *testing.T) { test27660(t) } func Test28896(t *testing.T) { test28896(t) } func Test30065(t *testing.T) { test30065(t) } +func Test32579(t *testing.T) { test32579(t) } func TestAlign(t *testing.T) { testAlign(t) } func TestAtol(t *testing.T) { testAtol(t) } func TestBlocking(t *testing.T) { testBlocking(t) } diff --git a/misc/cgo/test/test.go b/misc/cgo/test/test.go index cc940da211..f7670ccf56 100644 --- a/misc/cgo/test/test.go +++ b/misc/cgo/test/test.go @@ -852,6 +852,8 @@ static void issue29781F(char **p, int n) {} // issue 31093 static uint16_t issue31093F(uint16_t v) { return v; } +// issue 32579 +typedef struct S32579 { int data[1]; } S32579; */ import "C" @@ -2083,3 +2085,13 @@ func test30065(t *testing.T) { func Issue31093() { C.issue31093F(C.ushort(0)) } + +// issue 32579 + +func test32579(t *testing.T) { + var s [1]C.struct_S32579 + C.memset(unsafe.Pointer(&s[0].data[0]), 1, 1) + if s[0].data[0] != 1 { + t.Errorf("&s[0].data[0] failed: got %d, want %d", s[0].data[0], 1) + } +} diff --git a/src/cmd/cgo/gcc.go b/src/cmd/cgo/gcc.go index 9428ffd3bf..d4e8186cab 100644 --- a/src/cmd/cgo/gcc.go +++ b/src/cmd/cgo/gcc.go @@ -1256,6 +1256,8 @@ func (p *Package) isVariable(x ast.Expr) bool { return true case *ast.SelectorExpr: return p.isVariable(x.X) + case *ast.IndexExpr: + return true } return false } From 26c60cef983421f3d4e246381477fa70425fb078 Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Mon, 24 Jun 2019 15:44:05 -0400 Subject: [PATCH 026/255] cmd/go: fix a typo in module-private help text Change-Id: Idbdcb78d40cf58d7c878cfeaa4a34ab580fe472f Reviewed-on: https://go-review.googlesource.com/c/go/+/183626 Run-TryBot: Bryan C. Mills TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- src/cmd/go/alldocs.go | 2 +- src/cmd/go/internal/modfetch/fetch.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cmd/go/alldocs.go b/src/cmd/go/alldocs.go index 40cbaa2331..fa60fb63b5 100644 --- a/src/cmd/go/alldocs.go +++ b/src/cmd/go/alldocs.go @@ -2767,7 +2767,7 @@ // GOPROXY=proxy.example.com // GONOPROXY=none // -// This would tell the go comamnd and other tools that modules beginning with +// This would tell the go command and other tools that modules beginning with // a corp.example.com subdomain are private but that the company proxy should // be used for downloading both public and private modules, because // GONOPROXY has been set to a pattern that won't match any modules, diff --git a/src/cmd/go/internal/modfetch/fetch.go b/src/cmd/go/internal/modfetch/fetch.go index bc1d35e690..74e36cc6fc 100644 --- a/src/cmd/go/internal/modfetch/fetch.go +++ b/src/cmd/go/internal/modfetch/fetch.go @@ -757,7 +757,7 @@ users would configure go using: GOPROXY=proxy.example.com GONOPROXY=none -This would tell the go comamnd and other tools that modules beginning with +This would tell the go command and other tools that modules beginning with a corp.example.com subdomain are private but that the company proxy should be used for downloading both public and private modules, because GONOPROXY has been set to a pattern that won't match any modules, From 5f7e9cedd295fdedc10e1f1673d62da7ca3249b9 Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Mon, 24 Jun 2019 13:49:06 -0400 Subject: [PATCH 027/255] doc/go1.13: cmd/go, math/big, and a leftover crypto/x509 release note Change-Id: I80f2b50c8dd3d3f0fea6ed25fa2581786152d470 Reviewed-on: https://go-review.googlesource.com/c/go/+/183621 Reviewed-by: Bryan C. Mills --- doc/go1.13.html | 46 +++++++++++++++++++++++++++++++++++----------- 1 file changed, 35 insertions(+), 11 deletions(-) diff --git a/doc/go1.13.html b/doc/go1.13.html index 00fd4628da..b5e6257008 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -169,12 +169,15 @@ TODO

Tools

-

-TODO -

-

Modules

+

+ go + get in module mode now supports the version suffix + @patch to request the latest patch release. + TODO(bcmills): expand. +

+

Version validation

@@ -231,6 +234,27 @@ TODO

replace github.com/docker/docker v1.14.0-0.20190319215453-e7b5f7dbe98c => github.com/docker/docker v0.7.3-0.20190319215453-e7b5f7dbe98c

+

Go command

+ +

+ The new go + build flag -trimpath removes all file system paths + from the compiled executable, to improve build reproducibility. +

+ +

+ The go build flag -tags now takes a + comma-separated list of build tags, to allow for multiple tags in + GOFLAGS. The + space-separated form is deprecated but still recognized and will be maintained. +

+ +

+ go + generate now sets the generate build tag so that + files may be searched for directives but ignored during build. +

+

Compiler toolchain

@@ -363,11 +387,6 @@ TODO generally TODO

- - - - -
bytes

@@ -403,6 +422,11 @@ TODO and ParsePKIXPublicKey functions.

+

+ The paths searched for system roots now include /etc/ssl/cert.pem + to support the default location in Alpine Linux 3.7+. +

+
database/sql
@@ -471,11 +495,11 @@ TODO
math/big

- TODO: https://golang.org/cl/160682: implement Rat.SetUint64 + The new Rat.SetUint64 method sets the Rat to a uint64 value.

- TODO: https://golang.org/cl/168237: accept non-decimal floats with Rat.SetString + Rat.SetString now accepts non-decimal floating point representations.

From d1d9ad583df5d6dc58028e1303ddeccb39237220 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Mon, 24 Jun 2019 11:54:15 -0700 Subject: [PATCH 028/255] bufio: fix ExampleScanner_Bytes comment, add error check Followup to CL 51412. Change-Id: Ic83c833e2c571cd7c8293d998ff745f181037a61 Reviewed-on: https://go-review.googlesource.com/c/go/+/183657 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Rob Pike --- src/bufio/example_test.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/bufio/example_test.go b/src/bufio/example_test.go index e220e0768f..8885d40549 100644 --- a/src/bufio/example_test.go +++ b/src/bufio/example_test.go @@ -31,12 +31,15 @@ func ExampleScanner_lines() { } } -// Use return the most recent call to Scan as a []byte +// Return the most recent call to Scan as a []byte. func ExampleScanner_Bytes() { scanner := bufio.NewScanner(strings.NewReader("gopher")) for scanner.Scan() { fmt.Println(len(scanner.Bytes()) == 6) } + if err := scanner.Err(); err != nil { + fmt.Fprintln(os.Stderr, "shouldn't see an error scanning a string") + } // Output: // true } From df901bce5ed71132f5837b513663fec889d82731 Mon Sep 17 00:00:00 2001 From: Ben Shi Date: Mon, 24 Jun 2019 02:17:40 +0000 Subject: [PATCH 029/255] runtime: fix a register save/restore bug in sigtramp of arm-darwin In sigtramp of sys_darwin_arm.s, the callee-save register R4 is saved to the stack, but later R2 is also saved to the save position. That CL fixes the unexpected lost of the value in R4. fixes #32744 Change-Id: Ifaeb99f11e4abf0c79bec9da67e0db97c358010c Reviewed-on: https://go-review.googlesource.com/c/go/+/183517 Run-TryBot: Ben Shi TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- src/runtime/sys_darwin_arm.s | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/runtime/sys_darwin_arm.s b/src/runtime/sys_darwin_arm.s index 82470bc4df..b1c22b3242 100644 --- a/src/runtime/sys_darwin_arm.s +++ b/src/runtime/sys_darwin_arm.s @@ -160,14 +160,14 @@ TEXT runtime·sigfwd(SB),NOSPLIT,$0-16 TEXT runtime·sigtramp(SB),NOSPLIT,$0 // Reserve space for callee-save registers and arguments. - SUB $36, R13 + SUB $40, R13 - MOVW R4, 12(R13) - MOVW R5, 16(R13) - MOVW R6, 20(R13) - MOVW R7, 24(R13) - MOVW R8, 28(R13) - MOVW R11, 32(R13) + MOVW R4, 16(R13) + MOVW R5, 20(R13) + MOVW R6, 24(R13) + MOVW R7, 28(R13) + MOVW R8, 32(R13) + MOVW R11, 36(R13) // Save arguments. MOVW R0, 4(R13) // sig @@ -216,14 +216,14 @@ nog: MOVW R5, R13 // Restore callee-save registers. - MOVW 12(R13), R4 - MOVW 16(R13), R5 - MOVW 20(R13), R6 - MOVW 24(R13), R7 - MOVW 28(R13), R8 - MOVW 32(R13), R11 + MOVW 16(R13), R4 + MOVW 20(R13), R5 + MOVW 24(R13), R6 + MOVW 28(R13), R7 + MOVW 32(R13), R8 + MOVW 36(R13), R11 - ADD $36, R13 + ADD $40, R13 RET From e28f0d92991e60ac3174b2ebf224f37be22c8fad Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Mon, 24 Jun 2019 12:29:28 -0400 Subject: [PATCH 030/255] cmd/go/internal/modfetch: return structured errors from proxy operations CL 181881 added structured error types for direct fetches. Use those same structured errors to format proxy errors consistently. Also ensure that an empty @v/list is treated as equivalent to the module not existing at all. Updates #27173 Updates #32715 Change-Id: I203fd8259bc4f28b3389745f1a1fde936b0fa24d Reviewed-on: https://go-review.googlesource.com/c/go/+/183619 Run-TryBot: Bryan C. Mills TryBot-Result: Gobot Gobot Reviewed-by: Jay Conrod --- .../go/internal/modfetch/codehost/codehost.go | 14 ++++- src/cmd/go/internal/modfetch/codehost/git.go | 2 +- src/cmd/go/internal/modfetch/proxy.go | 52 +++++++++++++------ src/cmd/go/internal/modload/query.go | 9 +++- src/cmd/go/internal/module/module.go | 5 +- .../go/testdata/script/mod_query_empty.txt | 52 +++++++++++++++++++ 6 files changed, 113 insertions(+), 21 deletions(-) create mode 100644 src/cmd/go/testdata/script/mod_query_empty.txt diff --git a/src/cmd/go/internal/modfetch/codehost/codehost.go b/src/cmd/go/internal/modfetch/codehost/codehost.go index ab9287b541..a4e50d692a 100644 --- a/src/cmd/go/internal/modfetch/codehost/codehost.go +++ b/src/cmd/go/internal/modfetch/codehost/codehost.go @@ -116,8 +116,20 @@ type UnknownRevisionError struct { func (e *UnknownRevisionError) Error() string { return "unknown revision " + e.Rev } +func (UnknownRevisionError) Is(err error) bool { + return err == os.ErrNotExist +} -func (e *UnknownRevisionError) Is(err error) bool { +// ErrNoCommits is an error equivalent to os.ErrNotExist indicating that a given +// repository or module contains no commits. +var ErrNoCommits error = noCommitsError{} + +type noCommitsError struct{} + +func (noCommitsError) Error() string { + return "no commits" +} +func (noCommitsError) Is(err error) bool { return err == os.ErrNotExist } diff --git a/src/cmd/go/internal/modfetch/codehost/git.go b/src/cmd/go/internal/modfetch/codehost/git.go index 83e694dfe8..d382e8ac9a 100644 --- a/src/cmd/go/internal/modfetch/codehost/git.go +++ b/src/cmd/go/internal/modfetch/codehost/git.go @@ -222,7 +222,7 @@ func (r *gitRepo) Latest() (*RevInfo, error) { return nil, r.refsErr } if r.refs["HEAD"] == "" { - return nil, fmt.Errorf("no commits") + return nil, ErrNoCommits } return r.Stat(r.refs["HEAD"]) } diff --git a/src/cmd/go/internal/modfetch/proxy.go b/src/cmd/go/internal/modfetch/proxy.go index 426499baa9..6235ad3d6e 100644 --- a/src/cmd/go/internal/modfetch/proxy.go +++ b/src/cmd/go/internal/modfetch/proxy.go @@ -196,6 +196,26 @@ func (p *proxyRepo) ModulePath() string { return p.path } +// versionError returns err wrapped in a ModuleError for p.path. +func (p *proxyRepo) versionError(version string, err error) error { + if version != "" && version != module.CanonicalVersion(version) { + return &module.ModuleError{ + Path: p.path, + Err: &module.InvalidVersionError{ + Version: version, + Pseudo: IsPseudoVersion(version), + Err: err, + }, + } + } + + return &module.ModuleError{ + Path: p.path, + Version: version, + Err: err, + } +} + func (p *proxyRepo) getBytes(path string) ([]byte, error) { body, err := p.getBody(path) if err != nil { @@ -226,7 +246,7 @@ func (p *proxyRepo) getBody(path string) (io.ReadCloser, error) { func (p *proxyRepo) Versions(prefix string) ([]string, error) { data, err := p.getBytes("@v/list") if err != nil { - return nil, err + return nil, p.versionError("", err) } var list []string for _, line := range strings.Split(string(data), "\n") { @@ -242,7 +262,7 @@ func (p *proxyRepo) Versions(prefix string) ([]string, error) { func (p *proxyRepo) latest() (*RevInfo, error) { data, err := p.getBytes("@v/list") if err != nil { - return nil, err + return nil, p.versionError("", err) } var best time.Time var bestVersion string @@ -257,7 +277,7 @@ func (p *proxyRepo) latest() (*RevInfo, error) { } } if bestVersion == "" { - return nil, fmt.Errorf("no commits") + return nil, p.versionError("", codehost.ErrNoCommits) } info := &RevInfo{ Version: bestVersion, @@ -271,21 +291,21 @@ func (p *proxyRepo) latest() (*RevInfo, error) { func (p *proxyRepo) Stat(rev string) (*RevInfo, error) { encRev, err := module.EncodeVersion(rev) if err != nil { - return nil, err + return nil, p.versionError(rev, err) } data, err := p.getBytes("@v/" + encRev + ".info") if err != nil { - return nil, err + return nil, p.versionError(rev, err) } info := new(RevInfo) if err := json.Unmarshal(data, info); err != nil { - return nil, err + return nil, p.versionError(rev, err) } if info.Version != rev && rev == module.CanonicalVersion(rev) && module.Check(p.path, rev) == nil { // If we request a correct, appropriate version for the module path, the // proxy must return either exactly that version or an error — not some // arbitrary other version. - return nil, fmt.Errorf("requested canonical version %s, but proxy returned info for version %s", rev, info.Version) + return nil, p.versionError(rev, fmt.Errorf("proxy returned info for version %s instead of requested version", info.Version)) } return info, nil } @@ -298,48 +318,48 @@ func (p *proxyRepo) Latest() (*RevInfo, error) { } info := new(RevInfo) if err := json.Unmarshal(data, info); err != nil { - return nil, err + return nil, p.versionError("", err) } return info, nil } func (p *proxyRepo) GoMod(version string) ([]byte, error) { if version != module.CanonicalVersion(version) { - return nil, fmt.Errorf("version %s is not canonical", version) + return nil, p.versionError(version, fmt.Errorf("internal error: version passed to GoMod is not canonical")) } encVer, err := module.EncodeVersion(version) if err != nil { - return nil, err + return nil, p.versionError(version, err) } data, err := p.getBytes("@v/" + encVer + ".mod") if err != nil { - return nil, err + return nil, p.versionError(version, err) } return data, nil } func (p *proxyRepo) Zip(dst io.Writer, version string) error { if version != module.CanonicalVersion(version) { - return fmt.Errorf("version %s is not canonical", version) + return p.versionError(version, fmt.Errorf("internal error: version passed to Zip is not canonical")) } encVer, err := module.EncodeVersion(version) if err != nil { - return err + return p.versionError(version, err) } body, err := p.getBody("@v/" + encVer + ".zip") if err != nil { - return err + return p.versionError(version, err) } defer body.Close() lr := &io.LimitedReader{R: body, N: codehost.MaxZipFile + 1} if _, err := io.Copy(dst, lr); err != nil { - return err + return p.versionError(version, err) } if lr.N <= 0 { - return fmt.Errorf("downloaded zip file too large") + return p.versionError(version, fmt.Errorf("downloaded zip file too large")) } return nil } diff --git a/src/cmd/go/internal/modload/query.go b/src/cmd/go/internal/modload/query.go index 1e55992777..8ce61c0a1d 100644 --- a/src/cmd/go/internal/modload/query.go +++ b/src/cmd/go/internal/modload/query.go @@ -243,8 +243,13 @@ func queryProxy(proxy, path, query, current string, allowed func(module.Version) if mayUseLatest { // Special case for "latest": if no tags match, use latest commit in repo, // provided it is not excluded. - if latest, err := repo.Latest(); err == nil && allowed(module.Version{Path: path, Version: latest.Version}) { - return lookup(latest.Version) + latest, err := repo.Latest() + if err == nil { + if allowed(module.Version{Path: path, Version: latest.Version}) { + return lookup(latest.Version) + } + } else if !errors.Is(err, os.ErrNotExist) { + return nil, err } } diff --git a/src/cmd/go/internal/module/module.go b/src/cmd/go/internal/module/module.go index 4a313f99f9..3e0baba15b 100644 --- a/src/cmd/go/internal/module/module.go +++ b/src/cmd/go/internal/module/module.go @@ -536,7 +536,10 @@ func EncodePath(path string) (encoding string, err error) { // and not contain exclamation marks. func EncodeVersion(v string) (encoding string, err error) { if err := checkElem(v, true); err != nil || strings.Contains(v, "!") { - return "", fmt.Errorf("disallowed version string %q", v) + return "", &InvalidVersionError{ + Version: v, + Err: fmt.Errorf("disallowed version string"), + } } return encodeString(v) } diff --git a/src/cmd/go/testdata/script/mod_query_empty.txt b/src/cmd/go/testdata/script/mod_query_empty.txt new file mode 100644 index 0000000000..4e27c1ee5c --- /dev/null +++ b/src/cmd/go/testdata/script/mod_query_empty.txt @@ -0,0 +1,52 @@ +env GO111MODULE=on +env GOSUMDB=off + +go mod download example.com/join@v1.1.0 + +# If the proxy serves a bogus result for the @latest version, +# reading that version should cause 'go get' to fail. +env GOPROXY=file:///$WORK/badproxy +cp go.mod.orig go.mod +! go get -d example.com/join/subpkg +stderr 'go get example.com/join/subpkg: example.com/join/subpkg@v0.0.0-20190624000000-123456abcdef: .*' + +# If @v/list is empty, the 'go' command should still try to resolve +# other module paths. +env GOPROXY=file:///$WORK/emptysub +cp go.mod.orig go.mod +go get -d example.com/join/subpkg +go list -m example.com/join/... +! stdout 'example.com/join/subpkg' +stdout 'example.com/join v1.1.0' + +# If @v/list includes a version that the proxy does not actually serve, +# that version is treated as nonexistent. +env GOPROXY=file:///$WORK/notfound +cp go.mod.orig go.mod +go get -d example.com/join/subpkg +go list -m example.com/join/... +! stdout 'example.com/join/subpkg' +stdout 'example.com/join v1.1.0' + +-- go.mod.orig -- +module example.com/othermodule +go 1.13 +-- $WORK/badproxy/example.com/join/subpkg/@v/list -- +v0.0.0-20190624000000-123456abcdef +-- $WORK/badproxy/example.com/join/subpkg/@v/v0.0.0-20190624000000-123456abcdef.info -- +This file is not valid JSON. +-- $WORK/badproxy/example.com/join/@v/list -- +v1.1.0 +-- $WORK/badproxy/example.com/join/@v/v1.1.0.info -- +{"Version": "v1.1.0"} +-- $WORK/emptysub/example.com/join/subpkg/@v/list -- +-- $WORK/emptysub/example.com/join/@v/list -- +v1.1.0 +-- $WORK/emptysub/example.com/join/@v/v1.1.0.info -- +{"Version": "v1.1.0"} +-- $WORK/notfound/example.com/join/subpkg/@v/list -- +v1.0.0-does-not-exist +-- $WORK/notfound/example.com/join/@v/list -- +v1.1.0 +-- $WORK/notfound/example.com/join/@v/v1.1.0.info -- +{"Version": "v1.1.0"} From 19690053606dd14dedcf028bb37df79e3e33c003 Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Fri, 21 Jun 2019 15:13:10 -0400 Subject: [PATCH 031/255] cmd/go/internal/modfetch: filter pseudo-versions from proxy /list endpoints The /list files in the module cache include pseudo-versions, but the documentation for (*modfetch).Repo.Versions explicitly states that they are not included in the output of that method. Fixes #32715 Change-Id: Ieba1500b91f52b5fa689e70e16dbe3ad40de20f7 Reviewed-on: https://go-review.googlesource.com/c/go/+/183402 Run-TryBot: Bryan C. Mills TryBot-Result: Gobot Gobot Reviewed-by: Jay Conrod --- src/cmd/go/internal/modfetch/proxy.go | 54 +++++++++++++++---- ...st5_v0.0.0-20190619020302-197a620e0c9a.txt | 10 ++++ ....0-alpha.0.20190619023908-3da23a9deb9e.txt | 10 ++++ ...om_dmitshur-test_modtest5_v0.5.0-alpha.txt | 10 ++++ .../go/testdata/script/mod_list_pseudo.txt | 50 +++++++++++++++++ 5 files changed, 123 insertions(+), 11 deletions(-) create mode 100644 src/cmd/go/testdata/mod/github.com_dmitshur-test_modtest5_v0.0.0-20190619020302-197a620e0c9a.txt create mode 100644 src/cmd/go/testdata/mod/github.com_dmitshur-test_modtest5_v0.5.0-alpha.0.20190619023908-3da23a9deb9e.txt create mode 100644 src/cmd/go/testdata/mod/github.com_dmitshur-test_modtest5_v0.5.0-alpha.txt create mode 100644 src/cmd/go/testdata/script/mod_list_pseudo.txt diff --git a/src/cmd/go/internal/modfetch/proxy.go b/src/cmd/go/internal/modfetch/proxy.go index 6235ad3d6e..6049ccfd30 100644 --- a/src/cmd/go/internal/modfetch/proxy.go +++ b/src/cmd/go/internal/modfetch/proxy.go @@ -251,7 +251,7 @@ func (p *proxyRepo) Versions(prefix string) ([]string, error) { var list []string for _, line := range strings.Split(string(data), "\n") { f := strings.Fields(line) - if len(f) >= 1 && semver.IsValid(f[0]) && strings.HasPrefix(f[0], prefix) { + if len(f) >= 1 && semver.IsValid(f[0]) && strings.HasPrefix(f[0], prefix) && !IsPseudoVersion(f[0]) { list = append(list, f[0]) } } @@ -264,14 +264,36 @@ func (p *proxyRepo) latest() (*RevInfo, error) { if err != nil { return nil, p.versionError("", err) } - var best time.Time - var bestVersion string + + var ( + bestTime time.Time + bestTimeIsFromPseudo bool + bestVersion string + ) + for _, line := range strings.Split(string(data), "\n") { f := strings.Fields(line) - if len(f) >= 2 && semver.IsValid(f[0]) { - ft, err := time.Parse(time.RFC3339, f[1]) - if err == nil && best.Before(ft) { - best = ft + if len(f) >= 1 && semver.IsValid(f[0]) { + // If the proxy includes timestamps, prefer the timestamp it reports. + // Otherwise, derive the timestamp from the pseudo-version. + var ( + ft time.Time + ftIsFromPseudo = false + ) + if len(f) >= 2 { + ft, _ = time.Parse(time.RFC3339, f[1]) + } else if IsPseudoVersion(f[0]) { + ft, _ = PseudoVersionTime(f[0]) + ftIsFromPseudo = true + } else { + // Repo.Latest promises that this method is only called where there are + // no tagged versions. Ignore any tagged versions that were added in the + // meantime. + continue + } + if bestTime.Before(ft) { + bestTime = ft + bestTimeIsFromPseudo = ftIsFromPseudo bestVersion = f[0] } } @@ -279,13 +301,23 @@ func (p *proxyRepo) latest() (*RevInfo, error) { if bestVersion == "" { return nil, p.versionError("", codehost.ErrNoCommits) } - info := &RevInfo{ + + if bestTimeIsFromPseudo { + // We parsed bestTime from the pseudo-version, but that's in UTC and we're + // supposed to report the timestamp as reported by the VCS. + // Stat the selected version to canonicalize the timestamp. + // + // TODO(bcmills): Should we also stat other versions to ensure that we + // report the correct Name and Short for the revision? + return p.Stat(bestVersion) + } + + return &RevInfo{ Version: bestVersion, Name: bestVersion, Short: bestVersion, - Time: best, - } - return info, nil + Time: bestTime, + }, nil } func (p *proxyRepo) Stat(rev string) (*RevInfo, error) { diff --git a/src/cmd/go/testdata/mod/github.com_dmitshur-test_modtest5_v0.0.0-20190619020302-197a620e0c9a.txt b/src/cmd/go/testdata/mod/github.com_dmitshur-test_modtest5_v0.0.0-20190619020302-197a620e0c9a.txt new file mode 100644 index 0000000000..c2709c161e --- /dev/null +++ b/src/cmd/go/testdata/mod/github.com_dmitshur-test_modtest5_v0.0.0-20190619020302-197a620e0c9a.txt @@ -0,0 +1,10 @@ +module github.com/dmitshur-test/modtest5@v0.0.0-20190619020302-197a620e0c9a + +-- .mod -- +module github.com/dmitshur-test/modtest5 +-- .info -- +{"Version":"v0.0.0-20190619020302-197a620e0c9a","Time":"2019-06-18T19:03:02-07:00"} +-- p.go -- +package p + +const v = 1 diff --git a/src/cmd/go/testdata/mod/github.com_dmitshur-test_modtest5_v0.5.0-alpha.0.20190619023908-3da23a9deb9e.txt b/src/cmd/go/testdata/mod/github.com_dmitshur-test_modtest5_v0.5.0-alpha.0.20190619023908-3da23a9deb9e.txt new file mode 100644 index 0000000000..22e47f378e --- /dev/null +++ b/src/cmd/go/testdata/mod/github.com_dmitshur-test_modtest5_v0.5.0-alpha.0.20190619023908-3da23a9deb9e.txt @@ -0,0 +1,10 @@ +module github.com/dmitshur-test/modtest5@v0.5.0-alpha.0.20190619023908-3da23a9deb9e + +-- .mod -- +module github.com/dmitshur-test/modtest5 +-- .info -- +{"Version":"v0.5.0-alpha.0.20190619023908-3da23a9deb9e","Time":"2019-06-18T19:39:08-07:00"} +-- p.go -- +package p + +const v = 3 diff --git a/src/cmd/go/testdata/mod/github.com_dmitshur-test_modtest5_v0.5.0-alpha.txt b/src/cmd/go/testdata/mod/github.com_dmitshur-test_modtest5_v0.5.0-alpha.txt new file mode 100644 index 0000000000..4f088ccd2c --- /dev/null +++ b/src/cmd/go/testdata/mod/github.com_dmitshur-test_modtest5_v0.5.0-alpha.txt @@ -0,0 +1,10 @@ +module github.com/dmitshur-test/modtest5@v0.5.0-alpha + +-- .mod -- +module github.com/dmitshur-test/modtest5 +-- .info -- +{"Version":"v0.5.0-alpha","Time":"2019-06-18T19:04:46-07:00"} +-- p.go -- +package p + +const v = 2 diff --git a/src/cmd/go/testdata/script/mod_list_pseudo.txt b/src/cmd/go/testdata/script/mod_list_pseudo.txt new file mode 100644 index 0000000000..3a10b3a040 --- /dev/null +++ b/src/cmd/go/testdata/script/mod_list_pseudo.txt @@ -0,0 +1,50 @@ +env GO111MODULE=on + +# Regression test for golang.org/issue/32715. + +# When using $GOPATH/pkg/mod/cache/download as a proxy, +# 'latest' queries should prefer tagged versions over pseudo-versions. + +go mod download github.com/dmitshur-test/modtest5@v0.0.0-20190619020302-197a620e0c9a +go mod download github.com/dmitshur-test/modtest5@v0.5.0-alpha +go mod download github.com/dmitshur-test/modtest5@v0.5.0-alpha.0.20190619023908-3da23a9deb9e +cmp $GOPATH/pkg/mod/cache/download/github.com/dmitshur-test/modtest5/@v/list $WORK/modtest5.list + +env GOPROXY=file:///$GOPATH/pkg/mod/cache/download +env GOPATH=$WORK/gopath2 +mkdir $GOPATH + +go list -m -json github.com/dmitshur-test/modtest5@latest +cmp stdout $WORK/modtest5.json + +# If the module proxy contains only pseudo-versions, 'latest' should stat +# the version with the most recent timestamp — not the highest semantic +# version — and return its metadata. +env GOPROXY=file:///$WORK/tinyproxy +go list -m -json dmitri.shuralyov.com/test/modtest3@latest +cmp stdout $WORK/modtest3.json + +-- $WORK/modtest5.list -- +v0.0.0-20190619020302-197a620e0c9a +v0.5.0-alpha +v0.5.0-alpha.0.20190619023908-3da23a9deb9e +-- $WORK/modtest5.json -- +{ + "Path": "github.com/dmitshur-test/modtest5", + "Version": "v0.5.0-alpha", + "Time": "2019-06-18T19:04:46-07:00" +} +-- $WORK/tinyproxy/dmitri.shuralyov.com/test/modtest3/@v/list -- +v0.1.0-0.20161023043300-000000000000 +v0.0.0-20181023043359-a85b471d5412 +-- $WORK/tinyproxy/dmitri.shuralyov.com/test/modtest3/@v/v0.0.0-20181023043359-a85b471d5412.info -- +{ + "Version": "v0.0.0-20181023043359-a85b471d5412", + "Time": "2018-10-22T21:33:59-07:00" +} +-- $WORK/modtest3.json -- +{ + "Path": "dmitri.shuralyov.com/test/modtest3", + "Version": "v0.0.0-20181023043359-a85b471d5412", + "Time": "2018-10-22T21:33:59-07:00" +} From 98e1bd2b79bb7da0743450d9e6c0b622ff1e681f Mon Sep 17 00:00:00 2001 From: Andrew Date: Mon, 24 Jun 2019 15:28:00 -0400 Subject: [PATCH 032/255] doc/go1.13: add release notes for the errors package Also removes remaining TODOs Change-Id: Id80021b7a64c923c4ebd69fb6e8831a43a76dc72 Reviewed-on: https://go-review.googlesource.com/c/go/+/183625 Reviewed-by: Katie Hockman --- doc/go1.13.html | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/doc/go1.13.html b/doc/go1.13.html index b5e6257008..ec28e38e97 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -34,10 +34,6 @@ Do not send CLs removing the interior tags from such phrases. different ones.

-

-TODO -

-

Changes to the language

@@ -346,10 +342,6 @@ godoc

Core library

-

-TODO generally -

-

TLS 1.3

@@ -383,10 +375,6 @@ TODO generally in mind.

-

-TODO -

-
bytes

@@ -454,6 +442,24 @@ TODO

+
errors
+
+ +

+ The new function As finds the first error in a given error’s chain + that matches a given target’s type, and if so, sets the target to that error value. +

+

+ The new function Is reports whether a given error value matches an + error in another’s chain. +

+

+ The new function Unwrap returns the result of calling + Unwrap on a given error, if one exists. +

+ +
+
html/template

From 3f83c83bd681861802ac07ec285cef28fd5766cb Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Tue, 25 Jun 2019 09:17:28 -0400 Subject: [PATCH 033/255] cmd/go: ensure that runtime/cgo is not stale in TestExecBuildX Fixes #29004 Change-Id: Ifc8330b47fbec6f902057cb9b6db44f2c0082056 Reviewed-on: https://go-review.googlesource.com/c/go/+/183838 Run-TryBot: Bryan C. Mills TryBot-Result: Gobot Gobot Reviewed-by: Jay Conrod --- src/cmd/go/go_test.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/cmd/go/go_test.go b/src/cmd/go/go_test.go index 9d82ac7dc8..e07f97d068 100644 --- a/src/cmd/go/go_test.go +++ b/src/cmd/go/go_test.go @@ -5061,6 +5061,11 @@ func TestExecBuildX(t *testing.T) { tg.tempDir("cache") tg.setenv("GOCACHE", tg.path("cache")) + // Before building our test main.go, ensure that an up-to-date copy of + // runtime/cgo is present in the cache. If it isn't, the 'go build' step below + // will fail with "can't open import". See golang.org/issue/29004. + tg.run("build", "runtime/cgo") + tg.tempFile("main.go", `package main; import "C"; func main() { print("hello") }`) src := tg.path("main.go") obj := tg.path("main") From 599aa6dd6d2d3d35a596302d8c109d0c15b6e8be Mon Sep 17 00:00:00 2001 From: LE Manh Cuong Date: Mon, 17 Jun 2019 11:07:39 +0700 Subject: [PATCH 034/255] cmd/go: validate path in mod init path When mod init with given module path, validate that module path is a valid import path. Note that module.CheckImportPath is used, because module.CheckPath verifies that module path is something that "go get" can fetch, which is strictly stronger condition than "a valid module path". Updates #28389 Fixes #32644 Change-Id: Ia60f218dd7d79186f87be723c28a96d6cb63017e Reviewed-on: https://go-review.googlesource.com/c/go/+/182560 Run-TryBot: Cuong Manh Le TryBot-Result: Gobot Gobot Reviewed-by: Bryan C. Mills --- src/cmd/go/internal/modload/init.go | 3 +++ src/cmd/go/testdata/script/mod_init_path.txt | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 src/cmd/go/testdata/script/mod_init_path.txt diff --git a/src/cmd/go/internal/modload/init.go b/src/cmd/go/internal/modload/init.go index 75ea131273..807ce8d5dc 100644 --- a/src/cmd/go/internal/modload/init.go +++ b/src/cmd/go/internal/modload/init.go @@ -518,6 +518,9 @@ func findAltConfig(dir string) (root, name string) { func findModulePath(dir string) (string, error) { if CmdModModule != "" { // Running go mod init x/y/z; return x/y/z. + if err := module.CheckImportPath(CmdModModule); err != nil { + return "", err + } return CmdModModule, nil } diff --git a/src/cmd/go/testdata/script/mod_init_path.txt b/src/cmd/go/testdata/script/mod_init_path.txt new file mode 100644 index 0000000000..637c29f4bc --- /dev/null +++ b/src/cmd/go/testdata/script/mod_init_path.txt @@ -0,0 +1,20 @@ +env GO111MODULE=on + +! go mod init . +stderr 'malformed import path' + +cd x +go mod init example.com/x + +cd ../y +go mod init m + +-- x/main.go -- +package main + +func main() {} + +-- y/main.go -- +package main + +func main() {} From fd629821b83aa76062c71dbe24f4ea98aa0065e6 Mon Sep 17 00:00:00 2001 From: Lynn Boger Date: Mon, 24 Jun 2019 16:30:30 -0400 Subject: [PATCH 035/255] cmd/internal/obj/ppc64: add doc.go Adding some details on writing Go assembler for ppc64. Change-Id: I46fc6b75ee6c36946f90280b2b670e0d32bcc6b1 Reviewed-on: https://go-review.googlesource.com/c/go/+/183837 Reviewed-by: Cherry Zhang Run-TryBot: Cherry Zhang TryBot-Result: Gobot Gobot --- src/cmd/internal/obj/ppc64/doc.go | 204 ++++++++++++++++++++++++++++++ 1 file changed, 204 insertions(+) create mode 100644 src/cmd/internal/obj/ppc64/doc.go diff --git a/src/cmd/internal/obj/ppc64/doc.go b/src/cmd/internal/obj/ppc64/doc.go new file mode 100644 index 0000000000..2b6ef81b5b --- /dev/null +++ b/src/cmd/internal/obj/ppc64/doc.go @@ -0,0 +1,204 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +/* +Package ppc64 implements a PPC64 assembler that assembles Go asm into +the corresponding PPC64 binary instructions as defined by the Power +ISA. Since POWER8 is the minimum instruction set used by GOARCHes ppc64le +and ppc64, refer to ISA 2.07B or later for details. + +This document provides information on how to write code in Go assembler +for PPC64, focusing on the differences between Go and PPC64 assembly language. +It assumes some knowledge of PPC64 assembler. The original implementation of +PPC64 in Go defined many opcodes that are different from PPC64 opcodes, but +updates to the Go assembly language used mnemonics that are mostly similar if not +identical to the PPC64 mneumonics, such as VMX and VSX instructions. Not all detail +is included here; refer to the Power ISA document if interested in more detail. + +In the examples below, the Go assembly is on the left, PPC64 assembly on the right. + +1. Operand ordering + + In Go asm, the last operand (right) is the target operand, but with PPC64 asm, + the first operand (left) is the target. In general, the remaining operands are + in the same order except in a few special cases, especially those with 4 operands. + + Example: + ADD R3, R4, R5 <=> add r5, r3, r4 + +2. Constant operands + + In Go asm, an operand that starts with '$' indicates a constant value. If the + instruction using the constant has an immediate version of the opcode, then an + immediate value is used with the opcode if possible. + + Example: + ADD $1, R3, R4 <=> addi r4, r3, 1 + +3. Opcodes setting condition codes + + In PPC64 asm, some instructions other than compares have variations that can set + the condition code where meaningful. This is indicated by adding '.' to the end + of the PPC64 instruction. In Go asm, these instructions have 'CC' at the end of + the opcode. The possible settings of the condition code depend on the instruction. + CR0 is the default for fixed-point instructions; CR1 for floating point; CR6 for + vector instructions. + + Example: + ANDCC R3, R4, R5 <=> and. r5, r3, r4 (set CR0) + +4. Loads and stores from memory + + In Go asm, opcodes starting with 'MOV' indicate a load or store. When the target + is a memory reference, then it is a store; when the target is a register and the + source is a memory reference, then it is a load. + + MOV{B,H,W,D} variations identify the size as byte, halfword, word, doubleword. + + Adding 'Z' to the opcode for a load indicates zero extend; if omitted it is sign extend. + Adding 'U' to a load or store indicates an update of the base register with the offset. + Adding 'BR' to an opcode indicates byte-reversed load or store, or the order opposite + of the expected endian order. If 'BR' is used then zero extend is assumed. + + Memory references n(Ra) indicate the address in Ra + n. When used with an update form + of an opcode, the value in Ra is incremented by n. + + Memory references (Ra+Rb) or (Ra)(Rb) indicate the address Ra + Rb, used by indexed + loads or stores. Both forms are accepted. When used with an update then the base register + is updated by the value in the index register. + + Examples: + MOVD (R3), R4 <=> ld r4,0(r3) + MOVW (R3), R4 <=> lwa r4,0(r3) + MOVWZU 4(R3), R4 <=> lwzu r4,4(r3) + MOVWZ (R3+R5), R4 <=> lwzx r4,r3,r5 + MOVHZ (R3), R4 <=> lhz r4,0(r3) + MOVHU 2(R3), R4 <=> lhau r4,2(r3) + MOVBZ (R3), R4 <=> lbz r4,0(r3) + + MOVD R4,(R3) <=> std r4,0(r3) + MOVW R4,(R3) <=> stw r4,0(r3) + MOVW R4,(R3+R5) <=> stwx r4,r3,r5 + MOVWU R4,4(R3) <=> stwu r4,4(r3) + MOVH R4,2(R3) <=> sth r4,2(r3) + MOVBU R4,(R3)(R5) <=> stbux r4,r3,r5 + +4. Compares + + When an instruction does a compare or other operation that might + result in a condition code, then the resulting condition is set + in a field of the condition register. The condition register consists + of 8 4-bit fields named CR0 - CR7. When a compare instruction + identifies a CR then the resulting condition is set in that field + to be read by a later branch or isel instruction. Within these fields, + bits are set to indicate less than, greater than, or equal conditions. + + Once an instruction sets a condition, then a subsequent branch, isel or + other instruction can read the condition field and operate based on the + bit settings. + + Examples: + CMP R3, R4 <=> cmp r3, r4 (CR0 assumed) + CMP R3, R4, CR1 <=> cmp cr1, r3, r4 + + Note that the condition register is the target operand of compare opcodes, so + the remaining operands are in the same order for Go asm and PPC64 asm. + When CR0 is used then it is implicit and does not need to be specified. + +5. Branches + + Many branches are represented as a form of the BC instruction. There are + other extended opcodes to make it easier to see what type of branch is being + used. + + The following is a brief description of the BC instruction and its commonly + used operands. + + BC op1, op2, op3 + + op1: type of branch + 16 -> bctr (branch on ctr) + 12 -> bcr (branch if cr bit is set) + 8 -> bcr+bctr (branch on ctr and cr values) + 4 -> bcr != 0 (branch if specified cr bit is not set) + + There are more combinations but these are the most common. + + op2: condition register field and condition bit + + This contains an immediate value indicating which condition field + to read and what bits to test. Each field is 4 bits long with CR0 + at bit 0, CR1 at bit 4, etc. The value is computed as 4*CR+condition + with these condition values: + + 0 -> LT + 1 -> GT + 2 -> EQ + 3 -> OVG + + Thus 0 means test CR0 for LT, 5 means CR1 for GT, 30 means CR7 for EQ. + + op3: branch target + + Examples: + + BC 12, 0, target <=> blt cr0, target + BC 12, 2, target <=> beq cr0, target + BC 12, 5, target <=> bgt cr1, target + BC 12, 30, target <=> beq cr7, target + BC 4, 6, target <=> bne cr1, target + BC 4, 1, target <=> ble cr1, target + + The following extended opcodes are available for ease of use and readability: + + BNE CR2, target <=> bne cr2, target + BEQ CR4, target <=> beq cr4, target + BLT target <=> blt target (cr0 default) + BGE CR7, target <=> bge cr7, target + + Refer to the ISA for more information on additional values for the BC instruction, + how to handle OVG information, and much more. + +5. Align directive + + Starting with Go 1.12, Go asm supports the PCALIGN directive, which indicates + that the next instruction should be aligned to the specified value. Currently + 8 and 16 are the only supported values, and a maximum of 2 NOPs will be added + to align the code. That means in the case where the code is aligned to 4 but + PCALIGN $16 is at that location, the code will only be aligned to 8 to avoid + adding 3 NOPs. + + The purpose of this directive is to improve performance for cases like loops + where better alignment (8 or 16 instead of 4) might be helpful. This directive + exists in PPC64 assembler and is frequently used by PPC64 assembler writers. + + PCALIGN $16 + PCALIGN $8 + + Functions in Go are aligned to 16 bytes, as is the case in all other compilers + for PPC64. + +Register naming + +1. Special register usage in Go asm + + The following registers should not be modified by user Go assembler code. + + R0: Go code expects this register to contain the value 0. + R1: Stack pointer + R2: TOC pointer when compiled with -shared or -dynlink (a.k.a position independent code) + R13: TLS pointer + R30: g (goroutine) + + Register names: + + Rn is used for general purpose registers. (0-31) + Fn is used for floating point registers. (0-31) + Vn is used for vector registers. Slot 0 of Vn overlaps with Fn. (0-31) + VSn is used for vector-scalar registers. V0-V31 overlap with VS32-VS63. (0-63) + CTR represents the count register. + LR represents the link register. + +*/ +package ppc64 From a6ad626bac7b32ded33b493cabc905b249a8de5a Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Mon, 24 Jun 2019 17:47:52 -0400 Subject: [PATCH 036/255] doc/go1.13: describe changes to 'go get' MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also fix up markup in the “Version validation” section to correct indentation on Chrome. Change-Id: Ib930d324567c086bbd0c67b105272bdfcca77b12 Reviewed-on: https://go-review.googlesource.com/c/go/+/183630 Reviewed-by: Jay Conrod --- doc/go1.13.html | 99 +++++++++++++++++++++++++++++++++++++------------ 1 file changed, 75 insertions(+), 24 deletions(-) diff --git a/doc/go1.13.html b/doc/go1.13.html index ec28e38e97..54dc76542d 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -167,11 +167,56 @@ Do not send CLs removing the interior tags from such phrases.

Modules

-

- go - get in module mode now supports the version suffix - @patch to request the latest patch release. - TODO(bcmills): expand. +

go get

+ +

+ In module-aware mode, the set of modules updated by + go get -u + is now smaller, and is more consistent with the set of packages updated by + go get -u in GOPATH mode. + go get -u continues to update the + modules and packages named on the command line, but additionally updates only + the modules containing the packages imported by the named packages, + rather than the transitive module requirements of the modules containing the + named packages. +

+ +

+ Note in particular that go get -u + (without additional arguments) now updates only the transitive imports of the + package in the current directory. To instead update all of the packages + transitively imported by the main module (including test dependencies), use + go get -u all. +

+ +

+ As a result of the above changes to + go get -u, the + go get subcommand no longer supports + the -m flag, which caused go get to + stop before loading packages. The -d flag remains supported, and + continues to cause go get to stop after downloading + the source code needed to build dependencies of the named packages. +

+ +

+ In module-aware mode, the go get subcommand now + supports the version suffix @patch. The @patch + suffix indicates that the named module, or module containing the named + package, should be updated to the highest patch release with the same + major and minor versions as the version found in the build list. + If no such version is present in the build list, @patch is + equivalent to the existing @latest suffix. +

+ +

+ Additionally, the go get subcommand now supports + the -t flag in module-aware mode. As in GOPATH mode, + the -t flag instructs go get to include + the packages imported by tests of the packages named on the command + line. If the -t flag is set, the packages imported by tests will + be updated (if the -u flag is set), downloaded, and built (unless + the -d flag is set) along with the usual non-test packages.

Version validation

@@ -206,29 +251,31 @@ Do not send CLs removing the interior tags from such phrases.

- If the main module directly requires a version that fails the above - validation, a corrected version can be obtained by redacting the version to - just the commit hash and re-running a go command such as go - list -m all or go mod tidy. For example, -

require github.com/docker/docker v1.14.0-0.20190319215453-e7b5f7dbe98c
- can be redacted to -
require github.com/docker/docker e7b5f7dbe98c
- which resolves to -
require github.com/docker/docker v0.7.3-0.20190319215453-e7b5f7dbe98c
+ If a require directive in the + main module uses + an invalid pseudo-version, it can usually be corrected by redacting the + version to just the commit hash and re-running a go command, such + as go list -m all + or go mod tidy. For example,

+
require github.com/docker/docker v1.14.0-0.20190319215453-e7b5f7dbe98c
+

can be redacted to

+
require github.com/docker/docker e7b5f7dbe98c
+

which currently resolves to

+
require github.com/docker/docker v0.7.3-0.20190319215453-e7b5f7dbe98c

- If the main module has a transitive requirement on a version that fails - validation, the invalid version can still be replaced with a valid one through - the use of a replace - directive in the go.mod file of - the main module. - If the replacement is a commit hash, it will be resolved to the appropriate - pseudo-version. For example, -

replace github.com/docker/docker v1.14.0-0.20190319215453-e7b5f7dbe98c => github.com/docker/docker e7b5f7dbe98c
- resolves to -
replace github.com/docker/docker v1.14.0-0.20190319215453-e7b5f7dbe98c => github.com/docker/docker v0.7.3-0.20190319215453-e7b5f7dbe98c
+ If one of the transitive dependencies of the main module requires an invalid + version or pseudo-version, the invalid version can be replaced with a valid + one using a + replace directive in + the go.mod file of the main module. If the replacement is a + commit hash, it will be resolved to the appropriate pseudo-version as above. + For example,

+
replace github.com/docker/docker v1.14.0-0.20190319215453-e7b5f7dbe98c => github.com/docker/docker e7b5f7dbe98c
+

currently resolves to

+
replace github.com/docker/docker v1.14.0-0.20190319215453-e7b5f7dbe98c => github.com/docker/docker v0.7.3-0.20190319215453-e7b5f7dbe98c

Go command

@@ -251,6 +298,10 @@ Do not send CLs removing the interior tags from such phrases. files may be searched for directives but ignored during build.

+

+ TODO +

+

Compiler toolchain

From 816ce1a23aa42ecc44edc0f19e656556fc2d09d2 Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Mon, 24 Jun 2019 18:03:57 -0400 Subject: [PATCH 037/255] doc/go1.13: describe 'go env -w' Change-Id: I0c8c30b40a33763dc34f15d144346eb1a0997df2 Reviewed-on: https://go-review.googlesource.com/c/go/+/183631 Reviewed-by: Jay Conrod --- doc/go1.13.html | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/doc/go1.13.html b/doc/go1.13.html index 54dc76542d..d48bf72c96 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -279,6 +279,17 @@ Do not send CLs removing the interior tags from such phrases.

Go command

+

+ The go env + command now accepts a -w flag to set the per-user default value + of an enviroment variable recognized by the + go command, and a corresponding -u flag to unset a + previously-set default. Defaults set via + go env -w are stored in the + go/env file within + os.UserConfigDir(). +

+

The new go build flag -trimpath removes all file system paths @@ -298,10 +309,6 @@ Do not send CLs removing the interior tags from such phrases. files may be searched for directives but ignored during build.

-

- TODO -

-

Compiler toolchain

From 53a42d3c4a61d79415ceabc97ae77690cad79067 Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Mon, 24 Jun 2019 17:49:36 -0400 Subject: [PATCH 038/255] doc/go1.13: describe new cmd/go environment variables Change-Id: I99669339b816a3ae56bbe082a8c47ae17e763d71 Reviewed-on: https://go-review.googlesource.com/c/go/+/183632 Reviewed-by: Katie Hockman Reviewed-by: Jay Conrod --- doc/go1.13.html | 57 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/doc/go1.13.html b/doc/go1.13.html index d48bf72c96..fb9ea42429 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -167,6 +167,63 @@ Do not send CLs removing the interior tags from such phrases.

Modules

+

Environment variables

+ +

+ The new + GOPRIVATE + environment variable indicates module paths that are not publicly available. + It contains a comma-separated list of glob patterns (in the syntax of + path.Match) to be matched against a + prefix of the module path. It serves as the default value for the + lower-level GONOPROXY and GONOSUMDB variables, which + provide finer-grained control over which modules are fetched via proxy and + verified using the checksum database. +

+ +

+ The GOPROXY + environment variable may now be set to a comma-separated list of proxy + URLs or the special token direct, and + its default value is + now https://proxy.golang.org,direct. When resolving a package + path to its containing module, the go command will try each + possible module path on the first proxy in the list before falling back to the + next. If an HTTPS proxy is unreachable or returns a status code other than 404 + or 410 for a given module path, no subsequent proxy is consulted for that + path. The direct token indicates that the go command + should attempt to fetch the module directly from its origin; + GOPROXY entries after direct are ignored. +

+ +

+ The new + GOSUMDB + environment variable identifies the name, and optionally the public key and + server URL, of the database to consult for checksums of modules that are not + yet listed in the main module's go.sum file. + If GOSUMDB does not include an explicit URL, the URL is chosen by + probing the GOPROXY URLs for an endpoint indicating support for + the checksum database, falling back to a direct connection to the named + database if it is not supported by any proxy. If GOSUMDB is set + to off, the checksum database is not consulted and only the + existing checksums in the go.sum file are verified. +

+ +

+ Users who cannot reach the default proxy and checksum database (for example, + due to a firewalled or sandboxed configuration) may disable their use by + setting GOPROXY to direct, and/or + GOSUMDB to off. + go env -w + can be used to set the default values for these variables independent of + platform: +

+
+go env -w GOPROXY=direct
+go env -w GOSUMDB=off
+
+

go get

From fa0537b8af25530506c9b57348a032607c29c5b7 Mon Sep 17 00:00:00 2001 From: Dmitri Shuralyov Date: Tue, 25 Jun 2019 14:57:50 -0400 Subject: [PATCH 039/255] doc/go1.13: close and tags Fixup for two typos from CL 183630. Change-Id: I7968a736680e8a6bbd1f4691d443b217702bc190 Reviewed-on: https://go-review.googlesource.com/c/go/+/183843 Reviewed-by: Bryan C. Mills --- doc/go1.13.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/go1.13.html b/doc/go1.13.html index fb9ea42429..a1584f99da 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -270,7 +270,7 @@ go env -w GOSUMDB=off Additionally, the go get subcommand now supports the -t flag in module-aware mode. As in GOPATH mode, the -t flag instructs go get to include - the packages imported by tests of the packages named on the command + the packages imported by tests of the packages named on the command line. If the -t flag is set, the packages imported by tests will be updated (if the -u flag is set), downloaded, and built (unless the -d flag is set) along with the usual non-test packages. @@ -312,7 +312,7 @@ go env -w GOSUMDB=off main module uses an invalid pseudo-version, it can usually be corrected by redacting the version to just the commit hash and re-running a go command, such - as go list -m all + as go list -m all or go mod tidy. For example,

require github.com/docker/docker v1.14.0-0.20190319215453-e7b5f7dbe98c
From 8382ccb0bcc57b5d4240bb662bc1e68c5d921b4c Mon Sep 17 00:00:00 2001 From: Jay Conrod Date: Mon, 24 Jun 2019 19:04:15 -0400 Subject: [PATCH 040/255] doc/go1.13: binary-only package are no longer supported Change-Id: Ieb4a78730a0685627b4730381b72cbd01031c8fa Reviewed-on: https://go-review.googlesource.com/c/go/+/183633 Run-TryBot: Jay Conrod TryBot-Result: Gobot Gobot Reviewed-by: Bryan C. Mills --- doc/go1.13.html | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/go1.13.html b/doc/go1.13.html index a1584f99da..f9a6c5b710 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -366,6 +366,13 @@ go env -w GOSUMDB=off files may be searched for directives but ignored during build.

+

+ As announced in the Go 1.12 release + notes, binary-only packages are no longer supported. Building a binary-only + package (marked with a //go:binary-only-package comment) now + results in an error. +

+

Compiler toolchain

From 343b7fa6261a5b0ceaafed535438249ffa5686de Mon Sep 17 00:00:00 2001 From: Keith Randall Date: Thu, 13 Jun 2019 19:11:25 -0700 Subject: [PATCH 041/255] cmd/compile: don't mark argument array as noalg It ends up making two similar types, [N]uint8 of both alg and noalg varieties. Comparsions between the two then don't come out equal when they should. In particular, the type *[N]uint8 has an Elem pointer which must point to one of the above two types; it can't point to both. Thus allocating a *[N]uint8 and dereferencing it might be a different type than a [N]uint8. The fix is easy. Making a small test for this is really hard. It requires that both a argless defer and the test be imported by a common parent package. This is why a main binary doesn't see this issue, but a test does (as Agniva noticed), because there's a wrapper package that imports both the test and the defer. Types like [N]uint8 don't really need to be marked noalg anyway, as the generated code (if any) will be shared among all vanilla memory types of the same size. Fixes #32595 Change-Id: If7b77fa6ed56cd4495601c3f90170682d853b82f Reviewed-on: https://go-review.googlesource.com/c/go/+/182357 Run-TryBot: Keith Randall Reviewed-by: Emmanuel Odeke Reviewed-by: Cherry Zhang TryBot-Result: Gobot Gobot --- src/cmd/compile/internal/gc/reflect.go | 1 - test/fixedbugs/issue32595.dir/a.go | 9 +++++++++ test/fixedbugs/issue32595.dir/b.go | 15 +++++++++++++++ test/fixedbugs/issue32595.dir/main.go | 15 +++++++++++++++ test/fixedbugs/issue32595.go | 7 +++++++ 5 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 test/fixedbugs/issue32595.dir/a.go create mode 100644 test/fixedbugs/issue32595.dir/b.go create mode 100644 test/fixedbugs/issue32595.dir/main.go create mode 100644 test/fixedbugs/issue32595.go diff --git a/src/cmd/compile/internal/gc/reflect.go b/src/cmd/compile/internal/gc/reflect.go index 0854817713..9b26ba16cb 100644 --- a/src/cmd/compile/internal/gc/reflect.go +++ b/src/cmd/compile/internal/gc/reflect.go @@ -330,7 +330,6 @@ func deferstruct(stksize int64) *types.Type { return f } argtype := types.NewArray(types.Types[TUINT8], stksize) - argtype.SetNoalg(true) argtype.Width = stksize argtype.Align = 1 // These fields must match the ones in runtime/runtime2.go:_defer and diff --git a/test/fixedbugs/issue32595.dir/a.go b/test/fixedbugs/issue32595.dir/a.go new file mode 100644 index 0000000000..8342dd5cbc --- /dev/null +++ b/test/fixedbugs/issue32595.dir/a.go @@ -0,0 +1,9 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package a + +func A() { + defer func() {}() +} diff --git a/test/fixedbugs/issue32595.dir/b.go b/test/fixedbugs/issue32595.dir/b.go new file mode 100644 index 0000000000..9a13a575a8 --- /dev/null +++ b/test/fixedbugs/issue32595.dir/b.go @@ -0,0 +1,15 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package b + +import "reflect" + +func B() { + t1 := reflect.TypeOf([0]byte{}) + t2 := reflect.TypeOf(new([0]byte)).Elem() + if t1 != t2 { + panic("[0]byte types do not match") + } +} diff --git a/test/fixedbugs/issue32595.dir/main.go b/test/fixedbugs/issue32595.dir/main.go new file mode 100644 index 0000000000..20472cd72a --- /dev/null +++ b/test/fixedbugs/issue32595.dir/main.go @@ -0,0 +1,15 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package main + +import ( + "a" + "b" +) + +func main() { + a.A() + b.B() +} diff --git a/test/fixedbugs/issue32595.go b/test/fixedbugs/issue32595.go new file mode 100644 index 0000000000..af6f134172 --- /dev/null +++ b/test/fixedbugs/issue32595.go @@ -0,0 +1,7 @@ +// rundir + +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ignored From 6d1aaf143c879ae7acbd20a1e60bf74681bf6055 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Tue, 25 Jun 2019 10:58:47 -0700 Subject: [PATCH 042/255] misc/cgo/test: use char, not int, so test works on big-endian systems Updates #32579 Fixes #32770 Change-Id: I32d1dea7505e8ad22e11a9806e10d096924b729b Reviewed-on: https://go-review.googlesource.com/c/go/+/183778 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Emmanuel Odeke --- misc/cgo/test/test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/cgo/test/test.go b/misc/cgo/test/test.go index f7670ccf56..4286fb9cdb 100644 --- a/misc/cgo/test/test.go +++ b/misc/cgo/test/test.go @@ -853,7 +853,7 @@ static void issue29781F(char **p, int n) {} static uint16_t issue31093F(uint16_t v) { return v; } // issue 32579 -typedef struct S32579 { int data[1]; } S32579; +typedef struct S32579 { unsigned char data[1]; } S32579; */ import "C" From adf888376deb749bc95a2717989eb0f2db001f8d Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Tue, 25 Jun 2019 15:46:23 -0700 Subject: [PATCH 043/255] go/types: avoid race condition with dot-imported objects It would be nice to have a test, but it requires running this under the race detector which is a bit complicated to set up; yet the fix is trivial. Verified manually that it doesn't trip the race detector. Fixes #32154. Change-Id: I20bd746a07945c802f0476a1d8b1dfd83c87dae8 Reviewed-on: https://go-review.googlesource.com/c/go/+/183849 Run-TryBot: Robert Griesemer TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- src/go/types/resolver.go | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/go/types/resolver.go b/src/go/types/resolver.go index 41741e5882..417e4e79aa 100644 --- a/src/go/types/resolver.go +++ b/src/go/types/resolver.go @@ -301,15 +301,15 @@ func (check *Checker) collectObjects() { // A package scope may contain non-exported objects, // do not import them! if obj.Exported() { - // TODO(gri) When we import a package, we create - // a new local package object. We should do the - // same for each dot-imported object. That way - // they can have correct position information. - // (We must not modify their existing position - // information because the same package - found - // via Config.Packages - may be dot-imported in - // another package!) - check.declare(fileScope, nil, obj, token.NoPos) + // declare dot-imported object + // (Do not use check.declare because it modifies the object + // via Object.setScopePos, which leads to a race condition; + // the object may be imported into more than one file scope + // concurrently. See issue #32154.) + if alt := fileScope.Insert(obj); alt != nil { + check.errorf(s.Name.Pos(), "%s redeclared in this block", obj.Name()) + check.reportAltDecl(alt) + } } } // add position to set of dot-import positions for this file @@ -317,6 +317,7 @@ func (check *Checker) collectObjects() { check.addUnusedDotImport(fileScope, imp, s.Pos()) } else { // declare imported package object in file scope + // (no need to provide s.Name since we called check.recordDef earlier) check.declare(fileScope, nil, obj, token.NoPos) } From 9bf62783d2fc3804fd31f68092e779ef52f26cf9 Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Tue, 25 Jun 2019 14:06:14 +0200 Subject: [PATCH 044/255] syscall: fix nil pointer dereference in Getdirentries on 32-bit freebsd 12 Don't attempt to dereference basep if it's nil, just pass it to getdirentries_freebsd12 as is. Ported from x/sys/unix CL 183223 Change-Id: Id1c4e0eb6ff36dd39524da8194fed9a5957bce61 Reviewed-on: https://go-review.googlesource.com/c/go/+/183797 Reviewed-by: Ian Lance Taylor --- src/syscall/syscall_freebsd.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/syscall/syscall_freebsd.go b/src/syscall/syscall_freebsd.go index eecae8de30..eb7208f5cc 100644 --- a/src/syscall/syscall_freebsd.go +++ b/src/syscall/syscall_freebsd.go @@ -267,7 +267,7 @@ func Fstatfs(fd int, st *Statfs_t) (err error) { func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { if supportsABI(_ino64First) { - if unsafe.Sizeof(*basep) == 8 { + if basep == nil || unsafe.Sizeof(*basep) == 8 { return getdirentries_freebsd12(fd, buf, (*uint64)(unsafe.Pointer(basep))) } // The freebsd12 syscall needs a 64-bit base. On 32-bit machines From 24f7d89a73b7bd77127a56e8a8552c48278d251b Mon Sep 17 00:00:00 2001 From: Jay Conrod Date: Tue, 25 Jun 2019 17:25:01 -0400 Subject: [PATCH 045/255] cmd/go: 'go get' should not delete binaries when run from $GOBIN When 'go install' is run without arguments in a directory containing a main package, it deletes an executable file with the same name as the package (presumably created by 'go build' previously). 'go get' in module mode executes the same code after updating and downloading modules. However, the special case was misfiring because we passed an empty list of patterns to InstallPackages. Fixes #32766 Change-Id: I19aca64ee1fb5a216777dd7d559e8e6a45b3e90c Reviewed-on: https://go-review.googlesource.com/c/go/+/183846 Run-TryBot: Jay Conrod TryBot-Result: Gobot Gobot Reviewed-by: Bryan C. Mills --- src/cmd/go/internal/modget/get.go | 3 +-- .../testdata/mod/example.com_tools_v1.0.0.txt | 12 +++++++++++ src/cmd/go/testdata/script/mod_get_cmd.txt | 20 +++++++++++++++++++ 3 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 src/cmd/go/testdata/mod/example.com_tools_v1.0.0.txt create mode 100644 src/cmd/go/testdata/script/mod_get_cmd.txt diff --git a/src/cmd/go/internal/modget/get.go b/src/cmd/go/internal/modget/get.go index 93d6a15dae..491d2891c7 100644 --- a/src/cmd/go/internal/modget/get.go +++ b/src/cmd/go/internal/modget/get.go @@ -472,7 +472,6 @@ func runGet(cmd *base.Command, args []string) { // and the load and upgrade operations may only add and upgrade modules // in the build list. var matches []*search.Match - var install []string for { var seenPkgs map[string]bool seenQuery := make(map[querySpec]bool) @@ -664,7 +663,7 @@ func runGet(cmd *base.Command, args []string) { } work.BuildInit() pkgs := load.PackagesForBuild(pkgPatterns) - work.InstallPackages(install, pkgs) + work.InstallPackages(pkgPatterns, pkgs) } // runQueries looks up modules at target versions in parallel. Results will be diff --git a/src/cmd/go/testdata/mod/example.com_tools_v1.0.0.txt b/src/cmd/go/testdata/mod/example.com_tools_v1.0.0.txt new file mode 100644 index 0000000000..22e36b993a --- /dev/null +++ b/src/cmd/go/testdata/mod/example.com_tools_v1.0.0.txt @@ -0,0 +1,12 @@ +-- .info -- +{"Version": "v1.0.0"} +-- .mod -- +module example.com/tools +-- cmd/hello/hello.go -- +package main + +import "fmt" + +func main() { + fmt.Println("hello") +} diff --git a/src/cmd/go/testdata/script/mod_get_cmd.txt b/src/cmd/go/testdata/script/mod_get_cmd.txt new file mode 100644 index 0000000000..d31cee1444 --- /dev/null +++ b/src/cmd/go/testdata/script/mod_get_cmd.txt @@ -0,0 +1,20 @@ +env GO111MODULE=on +[short] skip + +# Test that when 'go get' is run from $GOBIN, it does not delete binaries +# after it installs them. Verifies golang.org/issue/32766. + +go get example.com/tools/cmd/hello + +# 'go get' should not delete the command when run from $GOPATH/bin +cd $GOPATH/bin +exists hello$GOEXE +go get example.com/tools/cmd/hello +exists hello$GOEXE + +# 'go get' should not delete the command when run from a different $GOBIN +mkdir $WORK/bin +cd $WORK/bin +env GOBIN=$WORK/bin +go get example.com/tools/cmd/hello +exists hello$GOEXE From 4ea7aa7cf3755533634904d934c89f93d461d642 Mon Sep 17 00:00:00 2001 From: Cherry Zhang Date: Tue, 25 Jun 2019 14:48:04 -0400 Subject: [PATCH 046/255] cmd/compile, runtime: use R20, R21 in ARM64's Duff's devices Currently we use R16 and R17 for ARM64's Duff's devices. According to ARM64 ABI, R16 and R17 can be used by the (external) linker as scratch registers in trampolines. So don't use these registers to pass information across functions. It seems unlikely that calling Duff's devices would need a trampoline in normal cases. But it could happen if the call target is out of the 128 MB direct jump limit. The choice of R20 and R21 is kind of arbitrary. The register allocator allocates from low-numbered registers. High numbered registers are chosen so it is unlikely to hold a live value and forces a spill. Fixes #32773. Change-Id: Id22d555b5afeadd4efcf62797d1580d641c39218 Reviewed-on: https://go-review.googlesource.com/c/go/+/183842 Run-TryBot: Cherry Zhang Reviewed-by: Keith Randall --- src/cmd/compile/internal/arm64/ggen.go | 6 +- src/cmd/compile/internal/arm64/ssa.go | 2 +- src/cmd/compile/internal/ssa/gen/ARM64Ops.go | 16 +- src/cmd/compile/internal/ssa/opGen.go | 10 +- src/cmd/internal/obj/arm64/a.out.go | 4 +- src/runtime/duff_arm64.s | 384 +++++++++---------- src/runtime/mkduff.go | 18 +- 7 files changed, 220 insertions(+), 220 deletions(-) diff --git a/src/cmd/compile/internal/arm64/ggen.go b/src/cmd/compile/internal/arm64/ggen.go index 9d8fe53cfd..2f925656bc 100644 --- a/src/cmd/compile/internal/arm64/ggen.go +++ b/src/cmd/compile/internal/arm64/ggen.go @@ -36,9 +36,9 @@ func zerorange(pp *gc.Progs, p *obj.Prog, off, cnt int64, _ *uint32) *obj.Prog { off += int64(gc.Widthptr) cnt -= int64(gc.Widthptr) } - p = pp.Appendpp(p, arm64.AMOVD, obj.TYPE_REG, arm64.REGSP, 0, obj.TYPE_REG, arm64.REGRT1, 0) - p = pp.Appendpp(p, arm64.AADD, obj.TYPE_CONST, 0, 8+off, obj.TYPE_REG, arm64.REGRT1, 0) - p.Reg = arm64.REGRT1 + p = pp.Appendpp(p, arm64.AMOVD, obj.TYPE_REG, arm64.REGSP, 0, obj.TYPE_REG, arm64.REG_R20, 0) + p = pp.Appendpp(p, arm64.AADD, obj.TYPE_CONST, 0, 8+off, obj.TYPE_REG, arm64.REG_R20, 0) + p.Reg = arm64.REG_R20 p = pp.Appendpp(p, obj.ADUFFZERO, obj.TYPE_NONE, 0, 0, obj.TYPE_MEM, 0, 0) p.To.Name = obj.NAME_EXTERN p.To.Sym = gc.Duffzero diff --git a/src/cmd/compile/internal/arm64/ssa.go b/src/cmd/compile/internal/arm64/ssa.go index fc7a60e63e..f13bd71f7a 100644 --- a/src/cmd/compile/internal/arm64/ssa.go +++ b/src/cmd/compile/internal/arm64/ssa.go @@ -820,7 +820,7 @@ func ssaGenValue(s *gc.SSAGenState, v *ssa.Value) { p.To.Type = obj.TYPE_REG p.To.Reg = v.Reg() case ssa.OpARM64DUFFZERO: - // runtime.duffzero expects start address in R16 + // runtime.duffzero expects start address in R20 p := s.Prog(obj.ADUFFZERO) p.To.Type = obj.TYPE_MEM p.To.Name = obj.NAME_EXTERN diff --git a/src/cmd/compile/internal/ssa/gen/ARM64Ops.go b/src/cmd/compile/internal/ssa/gen/ARM64Ops.go index a0c8b060c7..d4de904a24 100644 --- a/src/cmd/compile/internal/ssa/gen/ARM64Ops.go +++ b/src/cmd/compile/internal/ssa/gen/ARM64Ops.go @@ -495,14 +495,14 @@ func init() { // arg1 = mem // auxint = offset into duffzero code to start executing // returns mem - // R16 aka arm64.REGRT1 changed as side effect + // R20 changed as side effect { name: "DUFFZERO", aux: "Int64", argLength: 2, reg: regInfo{ - inputs: []regMask{buildReg("R16")}, - clobbers: buildReg("R16 R30"), + inputs: []regMask{buildReg("R20")}, + clobbers: buildReg("R20 R30"), }, faultOnNilArg0: true, }, @@ -529,19 +529,19 @@ func init() { }, // duffcopy - // arg0 = address of dst memory (in R17 aka arm64.REGRT2, changed as side effect) - // arg1 = address of src memory (in R16 aka arm64.REGRT1, changed as side effect) + // arg0 = address of dst memory (in R21, changed as side effect) + // arg1 = address of src memory (in R20, changed as side effect) // arg2 = mem // auxint = offset into duffcopy code to start executing // returns mem - // R16, R17 changed as side effect + // R20, R21 changed as side effect { name: "DUFFCOPY", aux: "Int64", argLength: 3, reg: regInfo{ - inputs: []regMask{buildReg("R17"), buildReg("R16")}, - clobbers: buildReg("R16 R17 R26 R30"), + inputs: []regMask{buildReg("R21"), buildReg("R20")}, + clobbers: buildReg("R20 R21 R26 R30"), }, faultOnNilArg0: true, faultOnNilArg1: true, diff --git a/src/cmd/compile/internal/ssa/opGen.go b/src/cmd/compile/internal/ssa/opGen.go index 8e701cdd9f..00e49c97b7 100644 --- a/src/cmd/compile/internal/ssa/opGen.go +++ b/src/cmd/compile/internal/ssa/opGen.go @@ -18668,9 +18668,9 @@ var opcodeTable = [...]opInfo{ faultOnNilArg0: true, reg: regInfo{ inputs: []inputInfo{ - {0, 65536}, // R16 + {0, 1048576}, // R20 }, - clobbers: 536936448, // R16 R30 + clobbers: 537919488, // R20 R30 }, }, { @@ -18694,10 +18694,10 @@ var opcodeTable = [...]opInfo{ faultOnNilArg1: true, reg: regInfo{ inputs: []inputInfo{ - {0, 131072}, // R17 - {1, 65536}, // R16 + {0, 2097152}, // R21 + {1, 1048576}, // R20 }, - clobbers: 604176384, // R16 R17 R26 R30 + clobbers: 607125504, // R20 R21 R26 R30 }, }, { diff --git a/src/cmd/internal/obj/arm64/a.out.go b/src/cmd/internal/obj/arm64/a.out.go index 944eab1955..4379f010ff 100644 --- a/src/cmd/internal/obj/arm64/a.out.go +++ b/src/cmd/internal/obj/arm64/a.out.go @@ -241,8 +241,8 @@ const ( // compiler allocates external registers F26 down const ( REGMIN = REG_R7 // register variables allocated from here to REGMAX - REGRT1 = REG_R16 // ARM64 IP0, for external linker, runtime, duffzero and duffcopy - REGRT2 = REG_R17 // ARM64 IP1, for external linker, runtime, duffcopy + REGRT1 = REG_R16 // ARM64 IP0, external linker may use as a scrach register in trampoline + REGRT2 = REG_R17 // ARM64 IP1, external linker may use as a scrach register in trampoline REGPR = REG_R18 // ARM64 platform register, unused in the Go toolchain REGMAX = REG_R25 diff --git a/src/runtime/duff_arm64.s b/src/runtime/duff_arm64.s index 3739c3945a..128b076af9 100644 --- a/src/runtime/duff_arm64.s +++ b/src/runtime/duff_arm64.s @@ -5,263 +5,263 @@ #include "textflag.h" TEXT runtime·duffzero(SB), NOSPLIT|NOFRAME, $0-0 - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP.P (ZR, ZR), 16(R16) - STP (ZR, ZR), (R16) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP.P (ZR, ZR), 16(R20) + STP (ZR, ZR), (R20) RET TEXT runtime·duffcopy(SB), NOSPLIT|NOFRAME, $0-0 - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) - LDP.P 16(R16), (R26, R27) - STP.P (R26, R27), 16(R17) + LDP.P 16(R20), (R26, R27) + STP.P (R26, R27), 16(R21) RET diff --git a/src/runtime/mkduff.go b/src/runtime/mkduff.go index b7c7e2689c..b6fe701497 100644 --- a/src/runtime/mkduff.go +++ b/src/runtime/mkduff.go @@ -151,26 +151,26 @@ func copyARM(w io.Writer) { func zeroARM64(w io.Writer) { // ZR: always zero - // R16 (aka REGRT1): ptr to memory to be zeroed - // On return, R16 points to the last zeroed dword. + // R20: ptr to memory to be zeroed + // On return, R20 points to the last zeroed dword. fmt.Fprintln(w, "TEXT runtime·duffzero(SB), NOSPLIT|NOFRAME, $0-0") for i := 0; i < 63; i++ { - fmt.Fprintln(w, "\tSTP.P\t(ZR, ZR), 16(R16)") + fmt.Fprintln(w, "\tSTP.P\t(ZR, ZR), 16(R20)") } - fmt.Fprintln(w, "\tSTP\t(ZR, ZR), (R16)") + fmt.Fprintln(w, "\tSTP\t(ZR, ZR), (R20)") fmt.Fprintln(w, "\tRET") } func copyARM64(w io.Writer) { - // R16 (aka REGRT1): ptr to source memory - // R17 (aka REGRT2): ptr to destination memory + // R20: ptr to source memory + // R21: ptr to destination memory // R26, R27 (aka REGTMP): scratch space - // R16 and R17 are updated as a side effect + // R20 and R21 are updated as a side effect fmt.Fprintln(w, "TEXT runtime·duffcopy(SB), NOSPLIT|NOFRAME, $0-0") for i := 0; i < 64; i++ { - fmt.Fprintln(w, "\tLDP.P\t16(R16), (R26, R27)") - fmt.Fprintln(w, "\tSTP.P\t(R26, R27), 16(R17)") + fmt.Fprintln(w, "\tLDP.P\t16(R20), (R26, R27)") + fmt.Fprintln(w, "\tSTP.P\t(R26, R27), 16(R21)") fmt.Fprintln(w) } fmt.Fprintln(w, "\tRET") From 60f14fddfee107dedd76c0be6b422a3d8ccc841a Mon Sep 17 00:00:00 2001 From: Andrew Bonventre Date: Wed, 26 Jun 2019 10:55:19 -0400 Subject: [PATCH 047/255] api: promote next to go1.13 Change-Id: I394f942822a0db27418d3fbb25df6227ea199a5f Reviewed-on: https://go-review.googlesource.com/c/go/+/183919 Run-TryBot: Andrew Bonventre TryBot-Result: Gobot Gobot Reviewed-by: Bryan C. Mills --- api/go1.13.txt | 8037 +++++++++++++++++++++++++++++++++++++++++++++++ api/next.txt | 8042 ------------------------------------------------ 2 files changed, 8037 insertions(+), 8042 deletions(-) create mode 100644 api/go1.13.txt diff --git a/api/go1.13.txt b/api/go1.13.txt new file mode 100644 index 0000000000..0f5e3eeefd --- /dev/null +++ b/api/go1.13.txt @@ -0,0 +1,8037 @@ +pkg bytes, func ToValidUTF8([]uint8, []uint8) []uint8 +pkg crypto/ed25519, const PrivateKeySize = 64 +pkg crypto/ed25519, const PrivateKeySize ideal-int +pkg crypto/ed25519, const PublicKeySize = 32 +pkg crypto/ed25519, const PublicKeySize ideal-int +pkg crypto/ed25519, const SeedSize = 32 +pkg crypto/ed25519, const SeedSize ideal-int +pkg crypto/ed25519, const SignatureSize = 64 +pkg crypto/ed25519, const SignatureSize ideal-int +pkg crypto/ed25519, func GenerateKey(io.Reader) (PublicKey, PrivateKey, error) +pkg crypto/ed25519, func NewKeyFromSeed([]uint8) PrivateKey +pkg crypto/ed25519, func Sign(PrivateKey, []uint8) []uint8 +pkg crypto/ed25519, func Verify(PublicKey, []uint8, []uint8) bool +pkg crypto/ed25519, method (PrivateKey) Public() crypto.PublicKey +pkg crypto/ed25519, method (PrivateKey) Seed() []uint8 +pkg crypto/ed25519, method (PrivateKey) Sign(io.Reader, []uint8, crypto.SignerOpts) ([]uint8, error) +pkg crypto/ed25519, type PrivateKey []uint8 +pkg crypto/ed25519, type PublicKey []uint8 +pkg crypto/tls, const Ed25519 = 2055 +pkg crypto/tls, const Ed25519 SignatureScheme +pkg crypto/x509, const Ed25519 = 4 +pkg crypto/x509, const Ed25519 PublicKeyAlgorithm +pkg crypto/x509, const PureEd25519 = 16 +pkg crypto/x509, const PureEd25519 SignatureAlgorithm +pkg database/sql, method (*Conn) Raw(func(interface{}) error) error +pkg database/sql, method (*NullInt32) Scan(interface{}) error +pkg database/sql, method (NullInt32) Value() (driver.Value, error) +pkg database/sql, method (*NullTime) Scan(interface{}) error +pkg database/sql, method (NullTime) Value() (driver.Value, error) +pkg database/sql, type NullInt32 struct +pkg database/sql, type NullInt32 struct, Int32 int32 +pkg database/sql, type NullInt32 struct, Valid bool +pkg database/sql, type NullTime struct +pkg database/sql, type NullTime struct, Time time.Time +pkg database/sql, type NullTime struct, Valid bool +pkg debug/dwarf, method (*UnsupportedType) Common() *CommonType +pkg debug/dwarf, method (*UnsupportedType) Size() int64 +pkg debug/dwarf, method (*UnsupportedType) String() string +pkg debug/dwarf, type UnsupportedType struct +pkg debug/dwarf, type UnsupportedType struct, embedded CommonType +pkg debug/dwarf, type UnsupportedType struct, Tag Tag +pkg encoding/csv, method (*ParseError) Unwrap() error +pkg encoding/json, method (*MarshalerError) Unwrap() error +pkg errors, func As(error, interface{}) bool +pkg errors, func Is(error, error) bool +pkg errors, func Unwrap(error) error +pkg go/constant, func Make(interface{}) Value +pkg go/constant, func Val(Value) interface{} +pkg go/token, func IsExported(string) bool +pkg go/token, func IsIdentifier(string) bool +pkg go/token, func IsKeyword(string) bool +pkg go/types, func CheckExpr(*token.FileSet, *Package, token.Pos, ast.Expr, *Info) error +pkg log, func Writer() io.Writer +pkg log/syslog (netbsd-arm64-cgo), const LOG_ALERT = 1 +pkg log/syslog (netbsd-arm64-cgo), const LOG_ALERT Priority +pkg log/syslog (netbsd-arm64-cgo), const LOG_AUTH = 32 +pkg log/syslog (netbsd-arm64-cgo), const LOG_AUTH Priority +pkg log/syslog (netbsd-arm64-cgo), const LOG_AUTHPRIV = 80 +pkg log/syslog (netbsd-arm64-cgo), const LOG_AUTHPRIV Priority +pkg log/syslog (netbsd-arm64-cgo), const LOG_CRIT = 2 +pkg log/syslog (netbsd-arm64-cgo), const LOG_CRIT Priority +pkg log/syslog (netbsd-arm64-cgo), const LOG_CRON = 72 +pkg log/syslog (netbsd-arm64-cgo), const LOG_CRON Priority +pkg log/syslog (netbsd-arm64-cgo), const LOG_DAEMON = 24 +pkg log/syslog (netbsd-arm64-cgo), const LOG_DAEMON Priority +pkg log/syslog (netbsd-arm64-cgo), const LOG_DEBUG = 7 +pkg log/syslog (netbsd-arm64-cgo), const LOG_DEBUG Priority +pkg log/syslog (netbsd-arm64-cgo), const LOG_EMERG = 0 +pkg log/syslog (netbsd-arm64-cgo), const LOG_EMERG Priority +pkg log/syslog (netbsd-arm64-cgo), const LOG_ERR = 3 +pkg log/syslog (netbsd-arm64-cgo), const LOG_ERR Priority +pkg log/syslog (netbsd-arm64-cgo), const LOG_FTP = 88 +pkg log/syslog (netbsd-arm64-cgo), const LOG_FTP Priority +pkg log/syslog (netbsd-arm64-cgo), const LOG_INFO = 6 +pkg log/syslog (netbsd-arm64-cgo), const LOG_INFO Priority +pkg log/syslog (netbsd-arm64-cgo), const LOG_KERN = 0 +pkg log/syslog (netbsd-arm64-cgo), const LOG_KERN Priority +pkg log/syslog (netbsd-arm64-cgo), const LOG_LOCAL0 = 128 +pkg log/syslog (netbsd-arm64-cgo), const LOG_LOCAL0 Priority +pkg log/syslog (netbsd-arm64-cgo), const LOG_LOCAL1 = 136 +pkg log/syslog (netbsd-arm64-cgo), const LOG_LOCAL1 Priority +pkg log/syslog (netbsd-arm64-cgo), const LOG_LOCAL2 = 144 +pkg log/syslog (netbsd-arm64-cgo), const LOG_LOCAL2 Priority +pkg log/syslog (netbsd-arm64-cgo), const LOG_LOCAL3 = 152 +pkg log/syslog (netbsd-arm64-cgo), const LOG_LOCAL3 Priority +pkg log/syslog (netbsd-arm64-cgo), const LOG_LOCAL4 = 160 +pkg log/syslog (netbsd-arm64-cgo), const LOG_LOCAL4 Priority +pkg log/syslog (netbsd-arm64-cgo), const LOG_LOCAL5 = 168 +pkg log/syslog (netbsd-arm64-cgo), const LOG_LOCAL5 Priority +pkg log/syslog (netbsd-arm64-cgo), const LOG_LOCAL6 = 176 +pkg log/syslog (netbsd-arm64-cgo), const LOG_LOCAL6 Priority +pkg log/syslog (netbsd-arm64-cgo), const LOG_LOCAL7 = 184 +pkg log/syslog (netbsd-arm64-cgo), const LOG_LOCAL7 Priority +pkg log/syslog (netbsd-arm64-cgo), const LOG_LPR = 48 +pkg log/syslog (netbsd-arm64-cgo), const LOG_LPR Priority +pkg log/syslog (netbsd-arm64-cgo), const LOG_MAIL = 16 +pkg log/syslog (netbsd-arm64-cgo), const LOG_MAIL Priority +pkg log/syslog (netbsd-arm64-cgo), const LOG_NEWS = 56 +pkg log/syslog (netbsd-arm64-cgo), const LOG_NEWS Priority +pkg log/syslog (netbsd-arm64-cgo), const LOG_NOTICE = 5 +pkg log/syslog (netbsd-arm64-cgo), const LOG_NOTICE Priority +pkg log/syslog (netbsd-arm64-cgo), const LOG_SYSLOG = 40 +pkg log/syslog (netbsd-arm64-cgo), const LOG_SYSLOG Priority +pkg log/syslog (netbsd-arm64-cgo), const LOG_USER = 8 +pkg log/syslog (netbsd-arm64-cgo), const LOG_USER Priority +pkg log/syslog (netbsd-arm64-cgo), const LOG_UUCP = 64 +pkg log/syslog (netbsd-arm64-cgo), const LOG_UUCP Priority +pkg log/syslog (netbsd-arm64-cgo), const LOG_WARNING = 4 +pkg log/syslog (netbsd-arm64-cgo), const LOG_WARNING Priority +pkg log/syslog (netbsd-arm64-cgo), func Dial(string, string, Priority, string) (*Writer, error) +pkg log/syslog (netbsd-arm64-cgo), func NewLogger(Priority, int) (*log.Logger, error) +pkg log/syslog (netbsd-arm64-cgo), func New(Priority, string) (*Writer, error) +pkg log/syslog (netbsd-arm64-cgo), method (*Writer) Alert(string) error +pkg log/syslog (netbsd-arm64-cgo), method (*Writer) Close() error +pkg log/syslog (netbsd-arm64-cgo), method (*Writer) Crit(string) error +pkg log/syslog (netbsd-arm64-cgo), method (*Writer) Debug(string) error +pkg log/syslog (netbsd-arm64-cgo), method (*Writer) Emerg(string) error +pkg log/syslog (netbsd-arm64-cgo), method (*Writer) Err(string) error +pkg log/syslog (netbsd-arm64-cgo), method (*Writer) Info(string) error +pkg log/syslog (netbsd-arm64-cgo), method (*Writer) Notice(string) error +pkg log/syslog (netbsd-arm64-cgo), method (*Writer) Warning(string) error +pkg log/syslog (netbsd-arm64-cgo), method (*Writer) Write([]uint8) (int, error) +pkg log/syslog (netbsd-arm64-cgo), type Priority int +pkg log/syslog (netbsd-arm64-cgo), type Writer struct +pkg log/syslog (netbsd-arm64), const LOG_ALERT = 1 +pkg log/syslog (netbsd-arm64), const LOG_ALERT Priority +pkg log/syslog (netbsd-arm64), const LOG_AUTH = 32 +pkg log/syslog (netbsd-arm64), const LOG_AUTH Priority +pkg log/syslog (netbsd-arm64), const LOG_AUTHPRIV = 80 +pkg log/syslog (netbsd-arm64), const LOG_AUTHPRIV Priority +pkg log/syslog (netbsd-arm64), const LOG_CRIT = 2 +pkg log/syslog (netbsd-arm64), const LOG_CRIT Priority +pkg log/syslog (netbsd-arm64), const LOG_CRON = 72 +pkg log/syslog (netbsd-arm64), const LOG_CRON Priority +pkg log/syslog (netbsd-arm64), const LOG_DAEMON = 24 +pkg log/syslog (netbsd-arm64), const LOG_DAEMON Priority +pkg log/syslog (netbsd-arm64), const LOG_DEBUG = 7 +pkg log/syslog (netbsd-arm64), const LOG_DEBUG Priority +pkg log/syslog (netbsd-arm64), const LOG_EMERG = 0 +pkg log/syslog (netbsd-arm64), const LOG_EMERG Priority +pkg log/syslog (netbsd-arm64), const LOG_ERR = 3 +pkg log/syslog (netbsd-arm64), const LOG_ERR Priority +pkg log/syslog (netbsd-arm64), const LOG_FTP = 88 +pkg log/syslog (netbsd-arm64), const LOG_FTP Priority +pkg log/syslog (netbsd-arm64), const LOG_INFO = 6 +pkg log/syslog (netbsd-arm64), const LOG_INFO Priority +pkg log/syslog (netbsd-arm64), const LOG_KERN = 0 +pkg log/syslog (netbsd-arm64), const LOG_KERN Priority +pkg log/syslog (netbsd-arm64), const LOG_LOCAL0 = 128 +pkg log/syslog (netbsd-arm64), const LOG_LOCAL0 Priority +pkg log/syslog (netbsd-arm64), const LOG_LOCAL1 = 136 +pkg log/syslog (netbsd-arm64), const LOG_LOCAL1 Priority +pkg log/syslog (netbsd-arm64), const LOG_LOCAL2 = 144 +pkg log/syslog (netbsd-arm64), const LOG_LOCAL2 Priority +pkg log/syslog (netbsd-arm64), const LOG_LOCAL3 = 152 +pkg log/syslog (netbsd-arm64), const LOG_LOCAL3 Priority +pkg log/syslog (netbsd-arm64), const LOG_LOCAL4 = 160 +pkg log/syslog (netbsd-arm64), const LOG_LOCAL4 Priority +pkg log/syslog (netbsd-arm64), const LOG_LOCAL5 = 168 +pkg log/syslog (netbsd-arm64), const LOG_LOCAL5 Priority +pkg log/syslog (netbsd-arm64), const LOG_LOCAL6 = 176 +pkg log/syslog (netbsd-arm64), const LOG_LOCAL6 Priority +pkg log/syslog (netbsd-arm64), const LOG_LOCAL7 = 184 +pkg log/syslog (netbsd-arm64), const LOG_LOCAL7 Priority +pkg log/syslog (netbsd-arm64), const LOG_LPR = 48 +pkg log/syslog (netbsd-arm64), const LOG_LPR Priority +pkg log/syslog (netbsd-arm64), const LOG_MAIL = 16 +pkg log/syslog (netbsd-arm64), const LOG_MAIL Priority +pkg log/syslog (netbsd-arm64), const LOG_NEWS = 56 +pkg log/syslog (netbsd-arm64), const LOG_NEWS Priority +pkg log/syslog (netbsd-arm64), const LOG_NOTICE = 5 +pkg log/syslog (netbsd-arm64), const LOG_NOTICE Priority +pkg log/syslog (netbsd-arm64), const LOG_SYSLOG = 40 +pkg log/syslog (netbsd-arm64), const LOG_SYSLOG Priority +pkg log/syslog (netbsd-arm64), const LOG_USER = 8 +pkg log/syslog (netbsd-arm64), const LOG_USER Priority +pkg log/syslog (netbsd-arm64), const LOG_UUCP = 64 +pkg log/syslog (netbsd-arm64), const LOG_UUCP Priority +pkg log/syslog (netbsd-arm64), const LOG_WARNING = 4 +pkg log/syslog (netbsd-arm64), const LOG_WARNING Priority +pkg log/syslog (netbsd-arm64), func Dial(string, string, Priority, string) (*Writer, error) +pkg log/syslog (netbsd-arm64), func NewLogger(Priority, int) (*log.Logger, error) +pkg log/syslog (netbsd-arm64), func New(Priority, string) (*Writer, error) +pkg log/syslog (netbsd-arm64), method (*Writer) Alert(string) error +pkg log/syslog (netbsd-arm64), method (*Writer) Close() error +pkg log/syslog (netbsd-arm64), method (*Writer) Crit(string) error +pkg log/syslog (netbsd-arm64), method (*Writer) Debug(string) error +pkg log/syslog (netbsd-arm64), method (*Writer) Emerg(string) error +pkg log/syslog (netbsd-arm64), method (*Writer) Err(string) error +pkg log/syslog (netbsd-arm64), method (*Writer) Info(string) error +pkg log/syslog (netbsd-arm64), method (*Writer) Notice(string) error +pkg log/syslog (netbsd-arm64), method (*Writer) Warning(string) error +pkg log/syslog (netbsd-arm64), method (*Writer) Write([]uint8) (int, error) +pkg log/syslog (netbsd-arm64), type Priority int +pkg log/syslog (netbsd-arm64), type Writer struct +pkg math/big, method (*Int) TrailingZeroBits() uint +pkg math/big, method (*Rat) SetUint64(uint64) *Rat +pkg net/http, const SameSiteNoneMode = 4 +pkg net/http, const SameSiteNoneMode SameSite +pkg net/http, const StatusEarlyHints = 103 +pkg net/http, const StatusEarlyHints ideal-int +pkg net/http, func NewRequestWithContext(context.Context, string, string, io.Reader) (*Request, error) +pkg net/http, method (Header) Clone() Header +pkg net/http, method (*Request) Clone(context.Context) *Request +pkg net/http, method (*Transport) Clone() *Transport +pkg net/http, type Server struct, BaseContext func(net.Listener) context.Context +pkg net/http, type Server struct, ConnContext func(context.Context, net.Conn) context.Context +pkg net/http, type Transport struct, ForceAttemptHTTP2 bool +pkg net/http, type Transport struct, ReadBufferSize int +pkg net/http, type Transport struct, WriteBufferSize int +pkg net, method (*DNSConfigError) Unwrap() error +pkg net, method (*DNSError) Is(error) bool +pkg net, method (*OpError) Is(error) bool +pkg net, method (*OpError) Unwrap() error +pkg net, type DNSError struct, IsNotFound bool +pkg net, type ListenConfig struct, KeepAlive time.Duration +pkg net/url, method (*Error) Unwrap() error +pkg os/exec, method (*Cmd) String() string +pkg os/exec, method (*Error) Unwrap() error +pkg os, func UserConfigDir() (string, error) +pkg os, method (*LinkError) Unwrap() error +pkg os, method (*PathError) Unwrap() error +pkg os, method (*SyscallError) Unwrap() error +pkg os (netbsd-arm64-cgo), const DevNull = "/dev/null" +pkg os (netbsd-arm64-cgo), const O_APPEND = 8 +pkg os (netbsd-arm64-cgo), const O_CREATE = 512 +pkg os (netbsd-arm64-cgo), const O_EXCL = 2048 +pkg os (netbsd-arm64-cgo), const O_SYNC = 128 +pkg os (netbsd-arm64-cgo), const O_TRUNC = 1024 +pkg os (netbsd-arm64-cgo), const PathListSeparator = 58 +pkg os (netbsd-arm64-cgo), const PathSeparator = 47 +pkg os (netbsd-arm64), const DevNull = "/dev/null" +pkg os (netbsd-arm64), const O_APPEND = 8 +pkg os (netbsd-arm64), const O_CREATE = 512 +pkg os (netbsd-arm64), const O_EXCL = 2048 +pkg os (netbsd-arm64), const O_SYNC = 128 +pkg os (netbsd-arm64), const O_TRUNC = 1024 +pkg os (netbsd-arm64), const PathListSeparator = 58 +pkg os (netbsd-arm64), const PathSeparator = 47 +pkg os, var ErrTemporary error +pkg os, var ErrTimeout error +pkg path/filepath (netbsd-arm64-cgo), const ListSeparator = 58 +pkg path/filepath (netbsd-arm64-cgo), const Separator = 47 +pkg path/filepath (netbsd-arm64), const ListSeparator = 58 +pkg path/filepath (netbsd-arm64), const Separator = 47 +pkg reflect, method (Value) IsZero() bool +pkg runtime (netbsd-arm64-cgo), const GOARCH = "arm64" +pkg runtime (netbsd-arm64-cgo), const GOOS = "netbsd" +pkg runtime (netbsd-arm64), const GOARCH = "arm64" +pkg runtime (netbsd-arm64), const GOOS = "netbsd" +pkg strings, func ToValidUTF8(string, string) string +pkg syscall, method (Errno) Is(error) bool +pkg syscall (netbsd-arm64-cgo), const AF_APPLETALK = 16 +pkg syscall (netbsd-arm64-cgo), const AF_APPLETALK ideal-int +pkg syscall (netbsd-arm64-cgo), const AF_ARP = 28 +pkg syscall (netbsd-arm64-cgo), const AF_ARP ideal-int +pkg syscall (netbsd-arm64-cgo), const AF_BLUETOOTH = 31 +pkg syscall (netbsd-arm64-cgo), const AF_BLUETOOTH ideal-int +pkg syscall (netbsd-arm64-cgo), const AF_CCITT = 10 +pkg syscall (netbsd-arm64-cgo), const AF_CCITT ideal-int +pkg syscall (netbsd-arm64-cgo), const AF_CHAOS = 5 +pkg syscall (netbsd-arm64-cgo), const AF_CHAOS ideal-int +pkg syscall (netbsd-arm64-cgo), const AF_CNT = 21 +pkg syscall (netbsd-arm64-cgo), const AF_CNT ideal-int +pkg syscall (netbsd-arm64-cgo), const AF_COIP = 20 +pkg syscall (netbsd-arm64-cgo), const AF_COIP ideal-int +pkg syscall (netbsd-arm64-cgo), const AF_DATAKIT = 9 +pkg syscall (netbsd-arm64-cgo), const AF_DATAKIT ideal-int +pkg syscall (netbsd-arm64-cgo), const AF_DECnet = 12 +pkg syscall (netbsd-arm64-cgo), const AF_DECnet ideal-int +pkg syscall (netbsd-arm64-cgo), const AF_DLI = 13 +pkg syscall (netbsd-arm64-cgo), const AF_DLI ideal-int +pkg syscall (netbsd-arm64-cgo), const AF_E164 = 26 +pkg syscall (netbsd-arm64-cgo), const AF_E164 ideal-int +pkg syscall (netbsd-arm64-cgo), const AF_ECMA = 8 +pkg syscall (netbsd-arm64-cgo), const AF_ECMA ideal-int +pkg syscall (netbsd-arm64-cgo), const AF_HYLINK = 15 +pkg syscall (netbsd-arm64-cgo), const AF_HYLINK ideal-int +pkg syscall (netbsd-arm64-cgo), const AF_IEEE80211 = 32 +pkg syscall (netbsd-arm64-cgo), const AF_IEEE80211 ideal-int +pkg syscall (netbsd-arm64-cgo), const AF_IMPLINK = 3 +pkg syscall (netbsd-arm64-cgo), const AF_IMPLINK ideal-int +pkg syscall (netbsd-arm64-cgo), const AF_INET6 = 24 +pkg syscall (netbsd-arm64-cgo), const AF_IPX = 23 +pkg syscall (netbsd-arm64-cgo), const AF_IPX ideal-int +pkg syscall (netbsd-arm64-cgo), const AF_ISDN = 26 +pkg syscall (netbsd-arm64-cgo), const AF_ISDN ideal-int +pkg syscall (netbsd-arm64-cgo), const AF_ISO = 7 +pkg syscall (netbsd-arm64-cgo), const AF_ISO ideal-int +pkg syscall (netbsd-arm64-cgo), const AF_LAT = 14 +pkg syscall (netbsd-arm64-cgo), const AF_LAT ideal-int +pkg syscall (netbsd-arm64-cgo), const AF_LINK = 18 +pkg syscall (netbsd-arm64-cgo), const AF_LINK ideal-int +pkg syscall (netbsd-arm64-cgo), const AF_LOCAL = 1 +pkg syscall (netbsd-arm64-cgo), const AF_LOCAL ideal-int +pkg syscall (netbsd-arm64-cgo), const AF_MAX = 35 +pkg syscall (netbsd-arm64-cgo), const AF_MAX ideal-int +pkg syscall (netbsd-arm64-cgo), const AF_MPLS = 33 +pkg syscall (netbsd-arm64-cgo), const AF_MPLS ideal-int +pkg syscall (netbsd-arm64-cgo), const AF_NATM = 27 +pkg syscall (netbsd-arm64-cgo), const AF_NATM ideal-int +pkg syscall (netbsd-arm64-cgo), const AF_NS = 6 +pkg syscall (netbsd-arm64-cgo), const AF_NS ideal-int +pkg syscall (netbsd-arm64-cgo), const AF_OROUTE = 17 +pkg syscall (netbsd-arm64-cgo), const AF_OROUTE ideal-int +pkg syscall (netbsd-arm64-cgo), const AF_OSI = 7 +pkg syscall (netbsd-arm64-cgo), const AF_OSI ideal-int +pkg syscall (netbsd-arm64-cgo), const AF_PUP = 4 +pkg syscall (netbsd-arm64-cgo), const AF_PUP ideal-int +pkg syscall (netbsd-arm64-cgo), const AF_ROUTE = 34 +pkg syscall (netbsd-arm64-cgo), const AF_ROUTE ideal-int +pkg syscall (netbsd-arm64-cgo), const AF_SNA = 11 +pkg syscall (netbsd-arm64-cgo), const AF_SNA ideal-int +pkg syscall (netbsd-arm64-cgo), const ARPHRD_ARCNET = 7 +pkg syscall (netbsd-arm64-cgo), const ARPHRD_ARCNET ideal-int +pkg syscall (netbsd-arm64-cgo), const ARPHRD_ETHER = 1 +pkg syscall (netbsd-arm64-cgo), const ARPHRD_ETHER ideal-int +pkg syscall (netbsd-arm64-cgo), const ARPHRD_FRELAY = 15 +pkg syscall (netbsd-arm64-cgo), const ARPHRD_FRELAY ideal-int +pkg syscall (netbsd-arm64-cgo), const ARPHRD_IEEE1394 = 24 +pkg syscall (netbsd-arm64-cgo), const ARPHRD_IEEE1394 ideal-int +pkg syscall (netbsd-arm64-cgo), const ARPHRD_IEEE802 = 6 +pkg syscall (netbsd-arm64-cgo), const ARPHRD_IEEE802 ideal-int +pkg syscall (netbsd-arm64-cgo), const ARPHRD_STRIP = 23 +pkg syscall (netbsd-arm64-cgo), const ARPHRD_STRIP ideal-int +pkg syscall (netbsd-arm64-cgo), const B0 = 0 +pkg syscall (netbsd-arm64-cgo), const B0 ideal-int +pkg syscall (netbsd-arm64-cgo), const B110 = 110 +pkg syscall (netbsd-arm64-cgo), const B110 ideal-int +pkg syscall (netbsd-arm64-cgo), const B115200 = 115200 +pkg syscall (netbsd-arm64-cgo), const B115200 ideal-int +pkg syscall (netbsd-arm64-cgo), const B1200 = 1200 +pkg syscall (netbsd-arm64-cgo), const B1200 ideal-int +pkg syscall (netbsd-arm64-cgo), const B134 = 134 +pkg syscall (netbsd-arm64-cgo), const B134 ideal-int +pkg syscall (netbsd-arm64-cgo), const B14400 = 14400 +pkg syscall (netbsd-arm64-cgo), const B14400 ideal-int +pkg syscall (netbsd-arm64-cgo), const B150 = 150 +pkg syscall (netbsd-arm64-cgo), const B150 ideal-int +pkg syscall (netbsd-arm64-cgo), const B1800 = 1800 +pkg syscall (netbsd-arm64-cgo), const B1800 ideal-int +pkg syscall (netbsd-arm64-cgo), const B19200 = 19200 +pkg syscall (netbsd-arm64-cgo), const B19200 ideal-int +pkg syscall (netbsd-arm64-cgo), const B200 = 200 +pkg syscall (netbsd-arm64-cgo), const B200 ideal-int +pkg syscall (netbsd-arm64-cgo), const B230400 = 230400 +pkg syscall (netbsd-arm64-cgo), const B230400 ideal-int +pkg syscall (netbsd-arm64-cgo), const B2400 = 2400 +pkg syscall (netbsd-arm64-cgo), const B2400 ideal-int +pkg syscall (netbsd-arm64-cgo), const B28800 = 28800 +pkg syscall (netbsd-arm64-cgo), const B28800 ideal-int +pkg syscall (netbsd-arm64-cgo), const B300 = 300 +pkg syscall (netbsd-arm64-cgo), const B300 ideal-int +pkg syscall (netbsd-arm64-cgo), const B38400 = 38400 +pkg syscall (netbsd-arm64-cgo), const B38400 ideal-int +pkg syscall (netbsd-arm64-cgo), const B460800 = 460800 +pkg syscall (netbsd-arm64-cgo), const B460800 ideal-int +pkg syscall (netbsd-arm64-cgo), const B4800 = 4800 +pkg syscall (netbsd-arm64-cgo), const B4800 ideal-int +pkg syscall (netbsd-arm64-cgo), const B50 = 50 +pkg syscall (netbsd-arm64-cgo), const B50 ideal-int +pkg syscall (netbsd-arm64-cgo), const B57600 = 57600 +pkg syscall (netbsd-arm64-cgo), const B57600 ideal-int +pkg syscall (netbsd-arm64-cgo), const B600 = 600 +pkg syscall (netbsd-arm64-cgo), const B600 ideal-int +pkg syscall (netbsd-arm64-cgo), const B7200 = 7200 +pkg syscall (netbsd-arm64-cgo), const B7200 ideal-int +pkg syscall (netbsd-arm64-cgo), const B75 = 75 +pkg syscall (netbsd-arm64-cgo), const B75 ideal-int +pkg syscall (netbsd-arm64-cgo), const B76800 = 76800 +pkg syscall (netbsd-arm64-cgo), const B76800 ideal-int +pkg syscall (netbsd-arm64-cgo), const B921600 = 921600 +pkg syscall (netbsd-arm64-cgo), const B921600 ideal-int +pkg syscall (netbsd-arm64-cgo), const B9600 = 9600 +pkg syscall (netbsd-arm64-cgo), const B9600 ideal-int +pkg syscall (netbsd-arm64-cgo), const BIOCFEEDBACK = 2147762813 +pkg syscall (netbsd-arm64-cgo), const BIOCFEEDBACK ideal-int +pkg syscall (netbsd-arm64-cgo), const BIOCFLUSH = 536887912 +pkg syscall (netbsd-arm64-cgo), const BIOCFLUSH ideal-int +pkg syscall (netbsd-arm64-cgo), const BIOCGBLEN = 1074020966 +pkg syscall (netbsd-arm64-cgo), const BIOCGBLEN ideal-int +pkg syscall (netbsd-arm64-cgo), const BIOCGDLT = 1074020970 +pkg syscall (netbsd-arm64-cgo), const BIOCGDLT ideal-int +pkg syscall (netbsd-arm64-cgo), const BIOCGDLTLIST = 3222291063 +pkg syscall (netbsd-arm64-cgo), const BIOCGDLTLIST ideal-int +pkg syscall (netbsd-arm64-cgo), const BIOCGETIF = 1083196011 +pkg syscall (netbsd-arm64-cgo), const BIOCGETIF ideal-int +pkg syscall (netbsd-arm64-cgo), const BIOCGFEEDBACK = 1074020988 +pkg syscall (netbsd-arm64-cgo), const BIOCGFEEDBACK ideal-int +pkg syscall (netbsd-arm64-cgo), const BIOCGHDRCMPLT = 1074020980 +pkg syscall (netbsd-arm64-cgo), const BIOCGHDRCMPLT ideal-int +pkg syscall (netbsd-arm64-cgo), const BIOCGRTIMEOUT = 1074807419 +pkg syscall (netbsd-arm64-cgo), const BIOCGRTIMEOUT ideal-int +pkg syscall (netbsd-arm64-cgo), const BIOCGSEESENT = 1074020984 +pkg syscall (netbsd-arm64-cgo), const BIOCGSEESENT ideal-int +pkg syscall (netbsd-arm64-cgo), const BIOCGSTATS = 1082147439 +pkg syscall (netbsd-arm64-cgo), const BIOCGSTATS ideal-int +pkg syscall (netbsd-arm64-cgo), const BIOCGSTATSOLD = 1074283119 +pkg syscall (netbsd-arm64-cgo), const BIOCGSTATSOLD ideal-int +pkg syscall (netbsd-arm64-cgo), const BIOCIMMEDIATE = 2147762800 +pkg syscall (netbsd-arm64-cgo), const BIOCIMMEDIATE ideal-int +pkg syscall (netbsd-arm64-cgo), const BIOCPROMISC = 536887913 +pkg syscall (netbsd-arm64-cgo), const BIOCPROMISC ideal-int +pkg syscall (netbsd-arm64-cgo), const BIOCSBLEN = 3221504614 +pkg syscall (netbsd-arm64-cgo), const BIOCSBLEN ideal-int +pkg syscall (netbsd-arm64-cgo), const BIOCSDLT = 2147762806 +pkg syscall (netbsd-arm64-cgo), const BIOCSDLT ideal-int +pkg syscall (netbsd-arm64-cgo), const BIOCSETF = 2148549223 +pkg syscall (netbsd-arm64-cgo), const BIOCSETF ideal-int +pkg syscall (netbsd-arm64-cgo), const BIOCSETIF = 2156937836 +pkg syscall (netbsd-arm64-cgo), const BIOCSETIF ideal-int +pkg syscall (netbsd-arm64-cgo), const BIOCSFEEDBACK = 2147762813 +pkg syscall (netbsd-arm64-cgo), const BIOCSFEEDBACK ideal-int +pkg syscall (netbsd-arm64-cgo), const BIOCSHDRCMPLT = 2147762805 +pkg syscall (netbsd-arm64-cgo), const BIOCSHDRCMPLT ideal-int +pkg syscall (netbsd-arm64-cgo), const BIOCSRTIMEOUT = 2148549242 +pkg syscall (netbsd-arm64-cgo), const BIOCSRTIMEOUT ideal-int +pkg syscall (netbsd-arm64-cgo), const BIOCSSEESENT = 2147762809 +pkg syscall (netbsd-arm64-cgo), const BIOCSSEESENT ideal-int +pkg syscall (netbsd-arm64-cgo), const BIOCSTCPF = 2148549234 +pkg syscall (netbsd-arm64-cgo), const BIOCSTCPF ideal-int +pkg syscall (netbsd-arm64-cgo), const BIOCSUDPF = 2148549235 +pkg syscall (netbsd-arm64-cgo), const BIOCSUDPF ideal-int +pkg syscall (netbsd-arm64-cgo), const BIOCVERSION = 1074020977 +pkg syscall (netbsd-arm64-cgo), const BIOCVERSION ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_A = 16 +pkg syscall (netbsd-arm64-cgo), const BPF_ABS = 32 +pkg syscall (netbsd-arm64-cgo), const BPF_ABS ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_ADD = 0 +pkg syscall (netbsd-arm64-cgo), const BPF_ADD ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_A ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_ALIGNMENT32 = 4 +pkg syscall (netbsd-arm64-cgo), const BPF_ALIGNMENT32 ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_ALIGNMENT = 8 +pkg syscall (netbsd-arm64-cgo), const BPF_ALIGNMENT ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_ALU = 4 +pkg syscall (netbsd-arm64-cgo), const BPF_ALU ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_AND = 80 +pkg syscall (netbsd-arm64-cgo), const BPF_AND ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_B = 16 +pkg syscall (netbsd-arm64-cgo), const BPF_B ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_DFLTBUFSIZE = 1048576 +pkg syscall (netbsd-arm64-cgo), const BPF_DFLTBUFSIZE ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_DIV = 48 +pkg syscall (netbsd-arm64-cgo), const BPF_DIV ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_H = 8 +pkg syscall (netbsd-arm64-cgo), const BPF_H ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_IMM = 0 +pkg syscall (netbsd-arm64-cgo), const BPF_IMM ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_IND = 64 +pkg syscall (netbsd-arm64-cgo), const BPF_IND ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_JA = 0 +pkg syscall (netbsd-arm64-cgo), const BPF_JA ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_JEQ = 16 +pkg syscall (netbsd-arm64-cgo), const BPF_JEQ ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_JGE = 48 +pkg syscall (netbsd-arm64-cgo), const BPF_JGE ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_JGT = 32 +pkg syscall (netbsd-arm64-cgo), const BPF_JGT ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_JMP = 5 +pkg syscall (netbsd-arm64-cgo), const BPF_JMP ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_JSET = 64 +pkg syscall (netbsd-arm64-cgo), const BPF_JSET ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_K = 0 +pkg syscall (netbsd-arm64-cgo), const BPF_K ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_LD = 0 +pkg syscall (netbsd-arm64-cgo), const BPF_LD ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_LDX = 1 +pkg syscall (netbsd-arm64-cgo), const BPF_LDX ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_LEN = 128 +pkg syscall (netbsd-arm64-cgo), const BPF_LEN ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_LSH = 96 +pkg syscall (netbsd-arm64-cgo), const BPF_LSH ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_MAJOR_VERSION = 1 +pkg syscall (netbsd-arm64-cgo), const BPF_MAJOR_VERSION ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_MAXBUFSIZE = 16777216 +pkg syscall (netbsd-arm64-cgo), const BPF_MAXBUFSIZE ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_MAXINSNS = 512 +pkg syscall (netbsd-arm64-cgo), const BPF_MAXINSNS ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_MEM = 96 +pkg syscall (netbsd-arm64-cgo), const BPF_MEM ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_MEMWORDS = 16 +pkg syscall (netbsd-arm64-cgo), const BPF_MEMWORDS ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_MINBUFSIZE = 32 +pkg syscall (netbsd-arm64-cgo), const BPF_MINBUFSIZE ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_MINOR_VERSION = 1 +pkg syscall (netbsd-arm64-cgo), const BPF_MINOR_VERSION ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_MISC = 7 +pkg syscall (netbsd-arm64-cgo), const BPF_MISC ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_MSH = 160 +pkg syscall (netbsd-arm64-cgo), const BPF_MSH ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_MUL = 32 +pkg syscall (netbsd-arm64-cgo), const BPF_MUL ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_NEG = 128 +pkg syscall (netbsd-arm64-cgo), const BPF_NEG ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_OR = 64 +pkg syscall (netbsd-arm64-cgo), const BPF_OR ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_RELEASE = 199606 +pkg syscall (netbsd-arm64-cgo), const BPF_RELEASE ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_RET = 6 +pkg syscall (netbsd-arm64-cgo), const BPF_RET ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_RSH = 112 +pkg syscall (netbsd-arm64-cgo), const BPF_RSH ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_ST = 2 +pkg syscall (netbsd-arm64-cgo), const BPF_ST ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_STX = 3 +pkg syscall (netbsd-arm64-cgo), const BPF_STX ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_SUB = 16 +pkg syscall (netbsd-arm64-cgo), const BPF_SUB ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_TAX = 0 +pkg syscall (netbsd-arm64-cgo), const BPF_TAX ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_TXA = 128 +pkg syscall (netbsd-arm64-cgo), const BPF_TXA ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_W = 0 +pkg syscall (netbsd-arm64-cgo), const BPF_W ideal-int +pkg syscall (netbsd-arm64-cgo), const BPF_X = 8 +pkg syscall (netbsd-arm64-cgo), const BPF_X ideal-int +pkg syscall (netbsd-arm64-cgo), const BRKINT = 2 +pkg syscall (netbsd-arm64-cgo), const BRKINT ideal-int +pkg syscall (netbsd-arm64-cgo), const CFLUSH = 15 +pkg syscall (netbsd-arm64-cgo), const CFLUSH ideal-int +pkg syscall (netbsd-arm64-cgo), const CLOCAL = 32768 +pkg syscall (netbsd-arm64-cgo), const CLOCAL ideal-int +pkg syscall (netbsd-arm64-cgo), const CLONE_CSIGNAL = 255 +pkg syscall (netbsd-arm64-cgo), const CLONE_CSIGNAL ideal-int +pkg syscall (netbsd-arm64-cgo), const CLONE_FILES = 1024 +pkg syscall (netbsd-arm64-cgo), const CLONE_FILES ideal-int +pkg syscall (netbsd-arm64-cgo), const CLONE_FS = 512 +pkg syscall (netbsd-arm64-cgo), const CLONE_FS ideal-int +pkg syscall (netbsd-arm64-cgo), const CLONE_PID = 4096 +pkg syscall (netbsd-arm64-cgo), const CLONE_PID ideal-int +pkg syscall (netbsd-arm64-cgo), const CLONE_PTRACE = 8192 +pkg syscall (netbsd-arm64-cgo), const CLONE_PTRACE ideal-int +pkg syscall (netbsd-arm64-cgo), const CLONE_SIGHAND = 2048 +pkg syscall (netbsd-arm64-cgo), const CLONE_SIGHAND ideal-int +pkg syscall (netbsd-arm64-cgo), const CLONE_VFORK = 16384 +pkg syscall (netbsd-arm64-cgo), const CLONE_VFORK ideal-int +pkg syscall (netbsd-arm64-cgo), const CLONE_VM = 256 +pkg syscall (netbsd-arm64-cgo), const CLONE_VM ideal-int +pkg syscall (netbsd-arm64-cgo), const CREAD = 2048 +pkg syscall (netbsd-arm64-cgo), const CREAD ideal-int +pkg syscall (netbsd-arm64-cgo), const CS5 = 0 +pkg syscall (netbsd-arm64-cgo), const CS5 ideal-int +pkg syscall (netbsd-arm64-cgo), const CS6 = 256 +pkg syscall (netbsd-arm64-cgo), const CS6 ideal-int +pkg syscall (netbsd-arm64-cgo), const CS7 = 512 +pkg syscall (netbsd-arm64-cgo), const CS7 ideal-int +pkg syscall (netbsd-arm64-cgo), const CS8 = 768 +pkg syscall (netbsd-arm64-cgo), const CS8 ideal-int +pkg syscall (netbsd-arm64-cgo), const CSIZE = 768 +pkg syscall (netbsd-arm64-cgo), const CSIZE ideal-int +pkg syscall (netbsd-arm64-cgo), const CSTART = 17 +pkg syscall (netbsd-arm64-cgo), const CSTART ideal-int +pkg syscall (netbsd-arm64-cgo), const CSTATUS = 20 +pkg syscall (netbsd-arm64-cgo), const CSTATUS ideal-int +pkg syscall (netbsd-arm64-cgo), const CSTOP = 19 +pkg syscall (netbsd-arm64-cgo), const CSTOPB = 1024 +pkg syscall (netbsd-arm64-cgo), const CSTOPB ideal-int +pkg syscall (netbsd-arm64-cgo), const CSTOP ideal-int +pkg syscall (netbsd-arm64-cgo), const CSUSP = 26 +pkg syscall (netbsd-arm64-cgo), const CSUSP ideal-int +pkg syscall (netbsd-arm64-cgo), const CTL_MAXNAME = 12 +pkg syscall (netbsd-arm64-cgo), const CTL_MAXNAME ideal-int +pkg syscall (netbsd-arm64-cgo), const CTL_NET = 4 +pkg syscall (netbsd-arm64-cgo), const CTL_NET ideal-int +pkg syscall (netbsd-arm64-cgo), const CTL_QUERY = -2 +pkg syscall (netbsd-arm64-cgo), const CTL_QUERY ideal-int +pkg syscall (netbsd-arm64-cgo), const DIOCBSFLUSH = 536896632 +pkg syscall (netbsd-arm64-cgo), const DIOCBSFLUSH ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_A429 = 184 +pkg syscall (netbsd-arm64-cgo), const DLT_A429 ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_A653_ICM = 185 +pkg syscall (netbsd-arm64-cgo), const DLT_A653_ICM ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_AIRONET_HEADER = 120 +pkg syscall (netbsd-arm64-cgo), const DLT_AIRONET_HEADER ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_AOS = 222 +pkg syscall (netbsd-arm64-cgo), const DLT_AOS ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_APPLE_IP_OVER_IEEE1394 = 138 +pkg syscall (netbsd-arm64-cgo), const DLT_APPLE_IP_OVER_IEEE1394 ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_ARCNET = 7 +pkg syscall (netbsd-arm64-cgo), const DLT_ARCNET ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_ARCNET_LINUX = 129 +pkg syscall (netbsd-arm64-cgo), const DLT_ARCNET_LINUX ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_ATM_CLIP = 19 +pkg syscall (netbsd-arm64-cgo), const DLT_ATM_CLIP ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_ATM_RFC1483 = 11 +pkg syscall (netbsd-arm64-cgo), const DLT_ATM_RFC1483 ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_AURORA = 126 +pkg syscall (netbsd-arm64-cgo), const DLT_AURORA ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_AX25 = 3 +pkg syscall (netbsd-arm64-cgo), const DLT_AX25 ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_AX25_KISS = 202 +pkg syscall (netbsd-arm64-cgo), const DLT_AX25_KISS ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_BACNET_MS_TP = 165 +pkg syscall (netbsd-arm64-cgo), const DLT_BACNET_MS_TP ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_BLUETOOTH_HCI_H4 = 187 +pkg syscall (netbsd-arm64-cgo), const DLT_BLUETOOTH_HCI_H4 ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 201 +pkg syscall (netbsd-arm64-cgo), const DLT_BLUETOOTH_HCI_H4_WITH_PHDR ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_CAN20B = 190 +pkg syscall (netbsd-arm64-cgo), const DLT_CAN20B ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_CAN_SOCKETCAN = 227 +pkg syscall (netbsd-arm64-cgo), const DLT_CAN_SOCKETCAN ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_CHAOS = 5 +pkg syscall (netbsd-arm64-cgo), const DLT_CHAOS ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_C_HDLC = 104 +pkg syscall (netbsd-arm64-cgo), const DLT_C_HDLC ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_C_HDLC_WITH_DIR = 205 +pkg syscall (netbsd-arm64-cgo), const DLT_C_HDLC_WITH_DIR ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_CISCO_IOS = 118 +pkg syscall (netbsd-arm64-cgo), const DLT_CISCO_IOS ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_DECT = 221 +pkg syscall (netbsd-arm64-cgo), const DLT_DECT ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_DOCSIS = 143 +pkg syscall (netbsd-arm64-cgo), const DLT_DOCSIS ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_ECONET = 115 +pkg syscall (netbsd-arm64-cgo), const DLT_ECONET ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_EN10MB = 1 +pkg syscall (netbsd-arm64-cgo), const DLT_EN10MB ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_EN3MB = 2 +pkg syscall (netbsd-arm64-cgo), const DLT_EN3MB ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_ENC = 109 +pkg syscall (netbsd-arm64-cgo), const DLT_ENC ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_ERF = 197 +pkg syscall (netbsd-arm64-cgo), const DLT_ERF_ETH = 175 +pkg syscall (netbsd-arm64-cgo), const DLT_ERF_ETH ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_ERF ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_ERF_POS = 176 +pkg syscall (netbsd-arm64-cgo), const DLT_ERF_POS ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_FC_2 = 224 +pkg syscall (netbsd-arm64-cgo), const DLT_FC_2 ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_FC_2_WITH_FRAME_DELIMS = 225 +pkg syscall (netbsd-arm64-cgo), const DLT_FC_2_WITH_FRAME_DELIMS ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_FDDI = 10 +pkg syscall (netbsd-arm64-cgo), const DLT_FDDI ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_FLEXRAY = 210 +pkg syscall (netbsd-arm64-cgo), const DLT_FLEXRAY ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_FRELAY = 107 +pkg syscall (netbsd-arm64-cgo), const DLT_FRELAY ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_FRELAY_WITH_DIR = 206 +pkg syscall (netbsd-arm64-cgo), const DLT_FRELAY_WITH_DIR ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_GCOM_SERIAL = 173 +pkg syscall (netbsd-arm64-cgo), const DLT_GCOM_SERIAL ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_GCOM_T1E1 = 172 +pkg syscall (netbsd-arm64-cgo), const DLT_GCOM_T1E1 ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_GPF_F = 171 +pkg syscall (netbsd-arm64-cgo), const DLT_GPF_F ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_GPF_T = 170 +pkg syscall (netbsd-arm64-cgo), const DLT_GPF_T ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_GPRS_LLC = 169 +pkg syscall (netbsd-arm64-cgo), const DLT_GPRS_LLC ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_GSMTAP_ABIS = 218 +pkg syscall (netbsd-arm64-cgo), const DLT_GSMTAP_ABIS ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_GSMTAP_UM = 217 +pkg syscall (netbsd-arm64-cgo), const DLT_GSMTAP_UM ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_HDLC = 16 +pkg syscall (netbsd-arm64-cgo), const DLT_HDLC ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_HHDLC = 121 +pkg syscall (netbsd-arm64-cgo), const DLT_HHDLC ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_HIPPI = 15 +pkg syscall (netbsd-arm64-cgo), const DLT_HIPPI ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_IBM_SN = 146 +pkg syscall (netbsd-arm64-cgo), const DLT_IBM_SN ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_IBM_SP = 145 +pkg syscall (netbsd-arm64-cgo), const DLT_IBM_SP ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802_11 = 105 +pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802_11 ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802_11_RADIO = 127 +pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802_11_RADIO_AVS = 163 +pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802_11_RADIO_AVS ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802_11_RADIO ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802_15_4 = 195 +pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802_15_4 ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802_15_4_LINUX = 191 +pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802_15_4_LINUX ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802_15_4_NONASK_PHY = 215 +pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802_15_4_NONASK_PHY ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802_16_MAC_CPS = 188 +pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802_16_MAC_CPS ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802_16_MAC_CPS_RADIO = 193 +pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802_16_MAC_CPS_RADIO ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802 = 6 +pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802 ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_IPMB = 199 +pkg syscall (netbsd-arm64-cgo), const DLT_IPMB ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_IPMB_LINUX = 209 +pkg syscall (netbsd-arm64-cgo), const DLT_IPMB_LINUX ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_IPNET = 226 +pkg syscall (netbsd-arm64-cgo), const DLT_IPNET ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_IP_OVER_FC = 122 +pkg syscall (netbsd-arm64-cgo), const DLT_IP_OVER_FC ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_IPV4 = 228 +pkg syscall (netbsd-arm64-cgo), const DLT_IPV4 ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_IPV6 = 229 +pkg syscall (netbsd-arm64-cgo), const DLT_IPV6 ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_ATM1 = 137 +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_ATM1 ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_ATM2 = 135 +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_ATM2 ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_CHDLC = 181 +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_CHDLC ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_ES = 132 +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_ES ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_ETHER = 178 +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_ETHER ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_FRELAY = 180 +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_FRELAY ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_GGSN = 133 +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_GGSN ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_ISM = 194 +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_ISM ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_MFR = 134 +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_MFR ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_MLFR = 131 +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_MLFR ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_MLPPP = 130 +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_MLPPP ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_MONITOR = 164 +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_MONITOR ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_PIC_PEER = 174 +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_PIC_PEER ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_PPP = 179 +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_PPP ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_PPPOE = 167 +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_PPPOE_ATM = 168 +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_PPPOE_ATM ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_PPPOE ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_SERVICES = 136 +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_SERVICES ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_ST = 200 +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_ST ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_VP = 183 +pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_VP ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_LAPB_WITH_DIR = 207 +pkg syscall (netbsd-arm64-cgo), const DLT_LAPB_WITH_DIR ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_LAPD = 203 +pkg syscall (netbsd-arm64-cgo), const DLT_LAPD ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_LIN = 212 +pkg syscall (netbsd-arm64-cgo), const DLT_LIN ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_LINUX_EVDEV = 216 +pkg syscall (netbsd-arm64-cgo), const DLT_LINUX_EVDEV ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_LINUX_IRDA = 144 +pkg syscall (netbsd-arm64-cgo), const DLT_LINUX_IRDA ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_LINUX_LAPD = 177 +pkg syscall (netbsd-arm64-cgo), const DLT_LINUX_LAPD ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_LINUX_SLL = 113 +pkg syscall (netbsd-arm64-cgo), const DLT_LINUX_SLL ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_LOOP = 108 +pkg syscall (netbsd-arm64-cgo), const DLT_LOOP ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_LTALK = 114 +pkg syscall (netbsd-arm64-cgo), const DLT_LTALK ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_MFR = 182 +pkg syscall (netbsd-arm64-cgo), const DLT_MFR ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_MOST = 211 +pkg syscall (netbsd-arm64-cgo), const DLT_MOST ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_MPLS = 219 +pkg syscall (netbsd-arm64-cgo), const DLT_MPLS ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_MTP2 = 140 +pkg syscall (netbsd-arm64-cgo), const DLT_MTP2 ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_MTP2_WITH_PHDR = 139 +pkg syscall (netbsd-arm64-cgo), const DLT_MTP2_WITH_PHDR ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_MTP3 = 141 +pkg syscall (netbsd-arm64-cgo), const DLT_MTP3 ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_NULL = 0 +pkg syscall (netbsd-arm64-cgo), const DLT_NULL ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_PCI_EXP = 125 +pkg syscall (netbsd-arm64-cgo), const DLT_PCI_EXP ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_PFLOG = 117 +pkg syscall (netbsd-arm64-cgo), const DLT_PFLOG ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_PFSYNC = 18 +pkg syscall (netbsd-arm64-cgo), const DLT_PFSYNC ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_PPI = 192 +pkg syscall (netbsd-arm64-cgo), const DLT_PPI ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_PPP = 9 +pkg syscall (netbsd-arm64-cgo), const DLT_PPP_BSDOS = 14 +pkg syscall (netbsd-arm64-cgo), const DLT_PPP_BSDOS ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_PPP_ETHER = 51 +pkg syscall (netbsd-arm64-cgo), const DLT_PPP_ETHER ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_PPP ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_PPP_PPPD = 166 +pkg syscall (netbsd-arm64-cgo), const DLT_PPP_PPPD ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_PPP_SERIAL = 50 +pkg syscall (netbsd-arm64-cgo), const DLT_PPP_SERIAL ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_PPP_WITH_DIR = 204 +pkg syscall (netbsd-arm64-cgo), const DLT_PPP_WITH_DIR ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_PRISM_HEADER = 119 +pkg syscall (netbsd-arm64-cgo), const DLT_PRISM_HEADER ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_PRONET = 4 +pkg syscall (netbsd-arm64-cgo), const DLT_PRONET ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_RAIF1 = 198 +pkg syscall (netbsd-arm64-cgo), const DLT_RAIF1 ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_RAW = 12 +pkg syscall (netbsd-arm64-cgo), const DLT_RAWAF_MASK = 35913728 +pkg syscall (netbsd-arm64-cgo), const DLT_RAWAF_MASK ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_RAW ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_RIO = 124 +pkg syscall (netbsd-arm64-cgo), const DLT_RIO ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_SCCP = 142 +pkg syscall (netbsd-arm64-cgo), const DLT_SCCP ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_SITA = 196 +pkg syscall (netbsd-arm64-cgo), const DLT_SITA ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_SLIP = 8 +pkg syscall (netbsd-arm64-cgo), const DLT_SLIP_BSDOS = 13 +pkg syscall (netbsd-arm64-cgo), const DLT_SLIP_BSDOS ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_SLIP ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_SUNATM = 123 +pkg syscall (netbsd-arm64-cgo), const DLT_SUNATM ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_SYMANTEC_FIREWALL = 99 +pkg syscall (netbsd-arm64-cgo), const DLT_SYMANTEC_FIREWALL ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_TZSP = 128 +pkg syscall (netbsd-arm64-cgo), const DLT_TZSP ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_USB = 186 +pkg syscall (netbsd-arm64-cgo), const DLT_USB ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_USB_LINUX = 189 +pkg syscall (netbsd-arm64-cgo), const DLT_USB_LINUX ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_USB_LINUX_MMAPPED = 220 +pkg syscall (netbsd-arm64-cgo), const DLT_USB_LINUX_MMAPPED ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_WIHART = 223 +pkg syscall (netbsd-arm64-cgo), const DLT_WIHART ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_X2E_SERIAL = 213 +pkg syscall (netbsd-arm64-cgo), const DLT_X2E_SERIAL ideal-int +pkg syscall (netbsd-arm64-cgo), const DLT_X2E_XORAYA = 214 +pkg syscall (netbsd-arm64-cgo), const DLT_X2E_XORAYA ideal-int +pkg syscall (netbsd-arm64-cgo), const DT_BLK = 6 +pkg syscall (netbsd-arm64-cgo), const DT_BLK ideal-int +pkg syscall (netbsd-arm64-cgo), const DT_CHR = 2 +pkg syscall (netbsd-arm64-cgo), const DT_CHR ideal-int +pkg syscall (netbsd-arm64-cgo), const DT_DIR = 4 +pkg syscall (netbsd-arm64-cgo), const DT_DIR ideal-int +pkg syscall (netbsd-arm64-cgo), const DT_FIFO = 1 +pkg syscall (netbsd-arm64-cgo), const DT_FIFO ideal-int +pkg syscall (netbsd-arm64-cgo), const DT_LNK = 10 +pkg syscall (netbsd-arm64-cgo), const DT_LNK ideal-int +pkg syscall (netbsd-arm64-cgo), const DT_REG = 8 +pkg syscall (netbsd-arm64-cgo), const DT_REG ideal-int +pkg syscall (netbsd-arm64-cgo), const DT_SOCK = 12 +pkg syscall (netbsd-arm64-cgo), const DT_SOCK ideal-int +pkg syscall (netbsd-arm64-cgo), const DT_UNKNOWN = 0 +pkg syscall (netbsd-arm64-cgo), const DT_UNKNOWN ideal-int +pkg syscall (netbsd-arm64-cgo), const DT_WHT = 14 +pkg syscall (netbsd-arm64-cgo), const DT_WHT ideal-int +pkg syscall (netbsd-arm64-cgo), const E2BIG = 7 +pkg syscall (netbsd-arm64-cgo), const EACCES = 13 +pkg syscall (netbsd-arm64-cgo), const EADDRINUSE = 48 +pkg syscall (netbsd-arm64-cgo), const EADDRNOTAVAIL = 49 +pkg syscall (netbsd-arm64-cgo), const EAFNOSUPPORT = 47 +pkg syscall (netbsd-arm64-cgo), const EAGAIN = 35 +pkg syscall (netbsd-arm64-cgo), const EALREADY = 37 +pkg syscall (netbsd-arm64-cgo), const EAUTH = 80 +pkg syscall (netbsd-arm64-cgo), const EAUTH Errno +pkg syscall (netbsd-arm64-cgo), const EBADF = 9 +pkg syscall (netbsd-arm64-cgo), const EBADMSG = 88 +pkg syscall (netbsd-arm64-cgo), const EBADMSG Errno +pkg syscall (netbsd-arm64-cgo), const EBADRPC = 72 +pkg syscall (netbsd-arm64-cgo), const EBADRPC Errno +pkg syscall (netbsd-arm64-cgo), const EBUSY = 16 +pkg syscall (netbsd-arm64-cgo), const ECANCELED = 87 +pkg syscall (netbsd-arm64-cgo), const ECHILD = 10 +pkg syscall (netbsd-arm64-cgo), const ECHO = 8 +pkg syscall (netbsd-arm64-cgo), const ECHOCTL = 64 +pkg syscall (netbsd-arm64-cgo), const ECHOCTL ideal-int +pkg syscall (netbsd-arm64-cgo), const ECHOE = 2 +pkg syscall (netbsd-arm64-cgo), const ECHOE ideal-int +pkg syscall (netbsd-arm64-cgo), const ECHO ideal-int +pkg syscall (netbsd-arm64-cgo), const ECHOK = 4 +pkg syscall (netbsd-arm64-cgo), const ECHOKE = 1 +pkg syscall (netbsd-arm64-cgo), const ECHOKE ideal-int +pkg syscall (netbsd-arm64-cgo), const ECHOK ideal-int +pkg syscall (netbsd-arm64-cgo), const ECHONL = 16 +pkg syscall (netbsd-arm64-cgo), const ECHONL ideal-int +pkg syscall (netbsd-arm64-cgo), const ECHOPRT = 32 +pkg syscall (netbsd-arm64-cgo), const ECHOPRT ideal-int +pkg syscall (netbsd-arm64-cgo), const ECONNABORTED = 53 +pkg syscall (netbsd-arm64-cgo), const ECONNREFUSED = 61 +pkg syscall (netbsd-arm64-cgo), const ECONNRESET = 54 +pkg syscall (netbsd-arm64-cgo), const EDEADLK = 11 +pkg syscall (netbsd-arm64-cgo), const EDESTADDRREQ = 39 +pkg syscall (netbsd-arm64-cgo), const EDOM = 33 +pkg syscall (netbsd-arm64-cgo), const EDQUOT = 69 +pkg syscall (netbsd-arm64-cgo), const EEXIST = 17 +pkg syscall (netbsd-arm64-cgo), const EFAULT = 14 +pkg syscall (netbsd-arm64-cgo), const EFBIG = 27 +pkg syscall (netbsd-arm64-cgo), const EFTYPE = 79 +pkg syscall (netbsd-arm64-cgo), const EFTYPE Errno +pkg syscall (netbsd-arm64-cgo), const EHOSTDOWN = 64 +pkg syscall (netbsd-arm64-cgo), const EHOSTUNREACH = 65 +pkg syscall (netbsd-arm64-cgo), const EIDRM = 82 +pkg syscall (netbsd-arm64-cgo), const EILSEQ = 85 +pkg syscall (netbsd-arm64-cgo), const EINPROGRESS = 36 +pkg syscall (netbsd-arm64-cgo), const EINTR = 4 +pkg syscall (netbsd-arm64-cgo), const EINVAL = 22 +pkg syscall (netbsd-arm64-cgo), const EIO = 5 +pkg syscall (netbsd-arm64-cgo), const EISCONN = 56 +pkg syscall (netbsd-arm64-cgo), const EISDIR = 21 +pkg syscall (netbsd-arm64-cgo), const ELAST = 96 +pkg syscall (netbsd-arm64-cgo), const ELAST Errno +pkg syscall (netbsd-arm64-cgo), const ELOOP = 62 +pkg syscall (netbsd-arm64-cgo), const EMFILE = 24 +pkg syscall (netbsd-arm64-cgo), const EMLINK = 31 +pkg syscall (netbsd-arm64-cgo), const EMSGSIZE = 40 +pkg syscall (netbsd-arm64-cgo), const EMUL_LINUX = 1 +pkg syscall (netbsd-arm64-cgo), const EMUL_LINUX32 = 5 +pkg syscall (netbsd-arm64-cgo), const EMUL_LINUX32 ideal-int +pkg syscall (netbsd-arm64-cgo), const EMUL_LINUX ideal-int +pkg syscall (netbsd-arm64-cgo), const EMUL_MAXID = 6 +pkg syscall (netbsd-arm64-cgo), const EMUL_MAXID ideal-int +pkg syscall (netbsd-arm64-cgo), const EMULTIHOP = 94 +pkg syscall (netbsd-arm64-cgo), const EMULTIHOP Errno +pkg syscall (netbsd-arm64-cgo), const ENAMETOOLONG = 63 +pkg syscall (netbsd-arm64-cgo), const ENEEDAUTH = 81 +pkg syscall (netbsd-arm64-cgo), const ENEEDAUTH Errno +pkg syscall (netbsd-arm64-cgo), const ENETDOWN = 50 +pkg syscall (netbsd-arm64-cgo), const ENETRESET = 52 +pkg syscall (netbsd-arm64-cgo), const ENETUNREACH = 51 +pkg syscall (netbsd-arm64-cgo), const ENFILE = 23 +pkg syscall (netbsd-arm64-cgo), const ENOATTR = 93 +pkg syscall (netbsd-arm64-cgo), const ENOATTR Errno +pkg syscall (netbsd-arm64-cgo), const ENOBUFS = 55 +pkg syscall (netbsd-arm64-cgo), const ENODATA = 89 +pkg syscall (netbsd-arm64-cgo), const ENODATA Errno +pkg syscall (netbsd-arm64-cgo), const ENODEV = 19 +pkg syscall (netbsd-arm64-cgo), const ENOEXEC = 8 +pkg syscall (netbsd-arm64-cgo), const ENOLCK = 77 +pkg syscall (netbsd-arm64-cgo), const ENOLINK = 95 +pkg syscall (netbsd-arm64-cgo), const ENOLINK Errno +pkg syscall (netbsd-arm64-cgo), const ENOMEM = 12 +pkg syscall (netbsd-arm64-cgo), const ENOMSG = 83 +pkg syscall (netbsd-arm64-cgo), const ENOPROTOOPT = 42 +pkg syscall (netbsd-arm64-cgo), const ENOSPC = 28 +pkg syscall (netbsd-arm64-cgo), const ENOSR = 90 +pkg syscall (netbsd-arm64-cgo), const ENOSR Errno +pkg syscall (netbsd-arm64-cgo), const ENOSTR = 91 +pkg syscall (netbsd-arm64-cgo), const ENOSTR Errno +pkg syscall (netbsd-arm64-cgo), const ENOSYS = 78 +pkg syscall (netbsd-arm64-cgo), const ENOTBLK = 15 +pkg syscall (netbsd-arm64-cgo), const ENOTCONN = 57 +pkg syscall (netbsd-arm64-cgo), const ENOTDIR = 20 +pkg syscall (netbsd-arm64-cgo), const ENOTEMPTY = 66 +pkg syscall (netbsd-arm64-cgo), const ENOTSOCK = 38 +pkg syscall (netbsd-arm64-cgo), const ENOTSUP = 86 +pkg syscall (netbsd-arm64-cgo), const ENOTTY = 25 +pkg syscall (netbsd-arm64-cgo), const ENXIO = 6 +pkg syscall (netbsd-arm64-cgo), const EOPNOTSUPP = 45 +pkg syscall (netbsd-arm64-cgo), const EOVERFLOW = 84 +pkg syscall (netbsd-arm64-cgo), const EPERM = 1 +pkg syscall (netbsd-arm64-cgo), const EPFNOSUPPORT = 46 +pkg syscall (netbsd-arm64-cgo), const EPIPE = 32 +pkg syscall (netbsd-arm64-cgo), const EPROCLIM = 67 +pkg syscall (netbsd-arm64-cgo), const EPROCLIM Errno +pkg syscall (netbsd-arm64-cgo), const EPROCUNAVAIL = 76 +pkg syscall (netbsd-arm64-cgo), const EPROCUNAVAIL Errno +pkg syscall (netbsd-arm64-cgo), const EPROGMISMATCH = 75 +pkg syscall (netbsd-arm64-cgo), const EPROGMISMATCH Errno +pkg syscall (netbsd-arm64-cgo), const EPROGUNAVAIL = 74 +pkg syscall (netbsd-arm64-cgo), const EPROGUNAVAIL Errno +pkg syscall (netbsd-arm64-cgo), const EPROTO = 96 +pkg syscall (netbsd-arm64-cgo), const EPROTO Errno +pkg syscall (netbsd-arm64-cgo), const EPROTONOSUPPORT = 43 +pkg syscall (netbsd-arm64-cgo), const EPROTOTYPE = 41 +pkg syscall (netbsd-arm64-cgo), const ERANGE = 34 +pkg syscall (netbsd-arm64-cgo), const EREMOTE = 71 +pkg syscall (netbsd-arm64-cgo), const EROFS = 30 +pkg syscall (netbsd-arm64-cgo), const ERPCMISMATCH = 73 +pkg syscall (netbsd-arm64-cgo), const ERPCMISMATCH Errno +pkg syscall (netbsd-arm64-cgo), const ESHUTDOWN = 58 +pkg syscall (netbsd-arm64-cgo), const ESOCKTNOSUPPORT = 44 +pkg syscall (netbsd-arm64-cgo), const ESPIPE = 29 +pkg syscall (netbsd-arm64-cgo), const ESRCH = 3 +pkg syscall (netbsd-arm64-cgo), const ESTALE = 70 +pkg syscall (netbsd-arm64-cgo), const ETHER_ADDR_LEN = 6 +pkg syscall (netbsd-arm64-cgo), const ETHER_ADDR_LEN ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERCAP_JUMBO_MTU = 4 +pkg syscall (netbsd-arm64-cgo), const ETHERCAP_JUMBO_MTU ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERCAP_VLAN_HWTAGGING = 2 +pkg syscall (netbsd-arm64-cgo), const ETHERCAP_VLAN_HWTAGGING ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERCAP_VLAN_MTU = 1 +pkg syscall (netbsd-arm64-cgo), const ETHERCAP_VLAN_MTU ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHER_CRC_LEN = 4 +pkg syscall (netbsd-arm64-cgo), const ETHER_CRC_LEN ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHER_CRC_POLY_BE = 79764918 +pkg syscall (netbsd-arm64-cgo), const ETHER_CRC_POLY_BE ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHER_CRC_POLY_LE = 3988292384 +pkg syscall (netbsd-arm64-cgo), const ETHER_CRC_POLY_LE ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHER_HDR_LEN = 14 +pkg syscall (netbsd-arm64-cgo), const ETHER_HDR_LEN ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHER_MAX_LEN = 1518 +pkg syscall (netbsd-arm64-cgo), const ETHER_MAX_LEN ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHER_MAX_LEN_JUMBO = 9018 +pkg syscall (netbsd-arm64-cgo), const ETHER_MAX_LEN_JUMBO ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERMIN = 46 +pkg syscall (netbsd-arm64-cgo), const ETHERMIN ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHER_MIN_LEN = 64 +pkg syscall (netbsd-arm64-cgo), const ETHER_MIN_LEN ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERMTU = 1500 +pkg syscall (netbsd-arm64-cgo), const ETHERMTU ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERMTU_JUMBO = 9000 +pkg syscall (netbsd-arm64-cgo), const ETHERMTU_JUMBO ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHER_PPPOE_ENCAP_LEN = 8 +pkg syscall (netbsd-arm64-cgo), const ETHER_PPPOE_ENCAP_LEN ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_8023 = 4 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_8023 ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_AARP = 33011 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_AARP ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ACCTON = 33680 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ACCTON ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_AEONIC = 32822 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_AEONIC ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ALPHA = 33098 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ALPHA ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_AMBER = 24584 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_AMBER ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_AMOEBA = 33093 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_AMOEBA ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_APOLLO = 33015 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_APOLLODOMAIN = 32793 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_APOLLODOMAIN ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_APOLLO ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_APPLETALK = 32923 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_APPLETALK ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_APPLITEK = 32967 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_APPLITEK ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ARGONAUT = 32826 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ARGONAUT ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ARP = 2054 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ARP ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_AT = 32923 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ATALK = 32923 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ATALK ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_AT ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ATOMIC = 34527 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ATOMIC ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ATT = 32873 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ATT ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ATTSTANFORD = 32776 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ATTSTANFORD ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_AUTOPHON = 32874 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_AUTOPHON ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_AXIS = 34902 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_AXIS ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_BCLOOP = 36867 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_BCLOOP ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_BOFL = 33026 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_BOFL ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_CABLETRON = 28724 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_CABLETRON ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_CHAOS = 2052 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_CHAOS ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_COMDESIGN = 32876 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_COMDESIGN ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_COMPUGRAPHIC = 32877 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_COMPUGRAPHIC ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_COUNTERPOINT = 32866 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_COUNTERPOINT ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_CRONUS = 32772 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_CRONUS ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_CRONUSVLN = 32771 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_CRONUSVLN ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DCA = 4660 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DCA ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DDE = 32891 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DDE ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DEBNI = 43690 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DEBNI ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECAM = 32840 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECAM ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECCUST = 24582 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECCUST ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECDIAG = 24581 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECDIAG ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECDNS = 32828 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECDNS ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECDTS = 32830 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECDTS ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECEXPER = 24576 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECEXPER ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECLAST = 32833 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECLAST ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECLTM = 32831 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECLTM ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECMUMPS = 24585 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECMUMPS ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECNETBIOS = 32832 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECNETBIOS ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DELTACON = 34526 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DELTACON ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DIDDLE = 17185 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DIDDLE ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DLOG1 = 1632 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DLOG1 ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DLOG2 = 1633 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DLOG2 ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DN = 24579 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DN ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DOGFIGHT = 6537 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DOGFIGHT ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DSMD = 32825 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DSMD ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ECMA = 2051 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ECMA ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ENCRYPT = 32829 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ENCRYPT ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ES = 32861 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ES ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_EXCELAN = 32784 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_EXCELAN ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_EXPERDATA = 32841 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_EXPERDATA ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_FLIP = 33094 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_FLIP ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_FLOWCONTROL = 34824 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_FLOWCONTROL ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_FRARP = 2056 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_FRARP ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_GENDYN = 32872 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_GENDYN ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_HAYES = 33072 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_HAYES ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_HIPPI_FP = 33152 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_HIPPI_FP ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_HITACHI = 34848 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_HITACHI ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_HP = 32773 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_HP ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IEEEPUP = 2560 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IEEEPUPAT = 2561 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IEEEPUPAT ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IEEEPUP ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IMLBL = 19522 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IMLBLDIAG = 16972 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IMLBLDIAG ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IMLBL ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IP = 2048 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IPAS = 34668 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IPAS ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IP ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IPV6 = 34525 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IPV6 ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IPX = 33079 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IPX ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IPXNEW = 32823 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IPXNEW ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_KALPANA = 34178 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_KALPANA ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_LANBRIDGE = 32824 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_LANBRIDGE ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_LANPROBE = 34952 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_LANPROBE ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_LAT = 24580 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_LAT ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_LBACK = 36864 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_LBACK ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHER_TYPE_LEN = 2 +pkg syscall (netbsd-arm64-cgo), const ETHER_TYPE_LEN ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_LITTLE = 32864 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_LITTLE ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_LOGICRAFT = 33096 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_LOGICRAFT ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_LOOPBACK = 36864 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_LOOPBACK ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MATRA = 32890 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MATRA ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MAX = 65535 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MAX ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MERIT = 32892 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MERIT ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MICP = 34618 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MICP ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MOPDL = 24577 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MOPDL ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MOPRC = 24578 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MOPRC ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MOTOROLA = 33165 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MOTOROLA ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MPLS = 34887 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MPLS ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MPLS_MCAST = 34888 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MPLS_MCAST ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MUMPS = 33087 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MUMPS ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPCC = 15364 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPCC ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPCLAIM = 15369 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPCLAIM ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPCLREQ = 15365 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPCLREQ ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPCLRSP = 15366 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPCLRSP ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPCREQ = 15362 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPCREQ ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPCRSP = 15363 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPCRSP ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPDG = 15367 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPDGB = 15368 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPDGB ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPDG ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPDLTE = 15370 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPDLTE ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPRAR = 15372 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPRAR ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPRAS = 15371 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPRAS ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPRST = 15373 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPRST ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPSCD = 15361 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPSCD ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPVCD = 15360 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPVCD ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBS = 2050 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBS ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NCD = 33097 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NCD ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NESTAR = 32774 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NESTAR ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NETBEUI = 33169 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NETBEUI ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NOVELL = 33080 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NOVELL ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NS = 1536 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NSAT = 1537 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NSAT ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NSCOMPAT = 2055 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NSCOMPAT ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NS ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NTRAILER = 16 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NTRAILER ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_OS9 = 28679 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_OS9 ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_OS9NET = 28681 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_OS9NET ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PACER = 32966 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PACER ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PAE = 34958 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PAE ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PCS = 16962 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PCS ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PLANNING = 32836 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PLANNING ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PPP = 34827 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PPP ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PPPOE = 34916 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PPPOEDISC = 34915 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PPPOEDISC ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PPPOE ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PRIMENTS = 28721 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PRIMENTS ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PUP = 512 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PUPAT = 512 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PUPAT ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PUP ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_RACAL = 28720 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_RACAL ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_RATIONAL = 33104 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_RATIONAL ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_RAWFR = 25945 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_RAWFR ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_RCL = 6549 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_RCL ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_RDP = 34617 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_RDP ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_RETIX = 33010 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_RETIX ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_REVARP = 32821 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_REVARP ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SCA = 24583 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SCA ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SECTRA = 34523 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SECTRA ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SECUREDATA = 34669 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SECUREDATA ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SG_BOUNCE = 32790 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SG_BOUNCE ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SG_DIAG = 32787 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SG_DIAG ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SGITW = 33150 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SGITW ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SG_NETGAMES = 32788 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SG_NETGAMES ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SG_RESV = 32789 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SG_RESV ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SIMNET = 21000 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SIMNET ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SLOWPROTOCOLS = 34825 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SLOWPROTOCOLS ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SNA = 32981 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SNA ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SNMP = 33100 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SNMP ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SONIX = 64245 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SONIX ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SPIDER = 32927 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SPIDER ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SPRITE = 1280 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SPRITE ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_STP = 33153 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_STP ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TALARIS = 33067 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TALARIS ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TALARISMC = 34091 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TALARISMC ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TCPCOMP = 34667 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TCPCOMP ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TCPSM = 36866 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TCPSM ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TEC = 33103 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TEC ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TIGAN = 32815 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TIGAN ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TRAIL = 4096 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TRAIL ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TRANSETHER = 25944 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TRANSETHER ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TYMSHARE = 32814 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TYMSHARE ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_UBBST = 28677 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_UBBST ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_UBDEBUG = 2304 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_UBDEBUG ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_UBDIAGLOOP = 28674 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_UBDIAGLOOP ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_UBDL = 28672 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_UBDL ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_UBNIU = 28673 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_UBNIU ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_UBNMC = 28675 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_UBNMC ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VALID = 5632 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VALID ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VARIAN = 32989 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VARIAN ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VAXELN = 32827 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VAXELN ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VEECO = 32871 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VEECO ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VEXP = 32859 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VEXP ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VGLAB = 33073 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VGLAB ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VINES = 2989 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VINESECHO = 2991 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VINESECHO ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VINES ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VINESLOOP = 2990 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VINESLOOP ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VITAL = 65280 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VITAL ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VLAN = 33024 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VLAN ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VLTLMAN = 32896 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VLTLMAN ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VPROD = 32860 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VPROD ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VURESERVED = 33095 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VURESERVED ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_WATERLOO = 33072 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_WATERLOO ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_WELLFLEET = 33027 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_WELLFLEET ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_X25 = 2053 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_X25 ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_X75 = 2049 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_X75 ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_XNSSM = 36865 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_XNSSM ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_XTP = 33149 +pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_XTP ideal-int +pkg syscall (netbsd-arm64-cgo), const ETHER_VLAN_ENCAP_LEN = 4 +pkg syscall (netbsd-arm64-cgo), const ETHER_VLAN_ENCAP_LEN ideal-int +pkg syscall (netbsd-arm64-cgo), const ETIME = 92 +pkg syscall (netbsd-arm64-cgo), const ETIMEDOUT = 60 +pkg syscall (netbsd-arm64-cgo), const ETIME Errno +pkg syscall (netbsd-arm64-cgo), const ETOOMANYREFS = 59 +pkg syscall (netbsd-arm64-cgo), const ETXTBSY = 26 +pkg syscall (netbsd-arm64-cgo), const EUSERS = 68 +pkg syscall (netbsd-arm64-cgo), const EV_ADD = 1 +pkg syscall (netbsd-arm64-cgo), const EV_ADD ideal-int +pkg syscall (netbsd-arm64-cgo), const EV_CLEAR = 32 +pkg syscall (netbsd-arm64-cgo), const EV_CLEAR ideal-int +pkg syscall (netbsd-arm64-cgo), const EV_DELETE = 2 +pkg syscall (netbsd-arm64-cgo), const EV_DELETE ideal-int +pkg syscall (netbsd-arm64-cgo), const EV_DISABLE = 8 +pkg syscall (netbsd-arm64-cgo), const EV_DISABLE ideal-int +pkg syscall (netbsd-arm64-cgo), const EV_ENABLE = 4 +pkg syscall (netbsd-arm64-cgo), const EV_ENABLE ideal-int +pkg syscall (netbsd-arm64-cgo), const EV_EOF = 32768 +pkg syscall (netbsd-arm64-cgo), const EV_EOF ideal-int +pkg syscall (netbsd-arm64-cgo), const EV_ERROR = 16384 +pkg syscall (netbsd-arm64-cgo), const EV_ERROR ideal-int +pkg syscall (netbsd-arm64-cgo), const EVFILT_AIO = 2 +pkg syscall (netbsd-arm64-cgo), const EVFILT_AIO ideal-int +pkg syscall (netbsd-arm64-cgo), const EVFILT_PROC = 4 +pkg syscall (netbsd-arm64-cgo), const EVFILT_PROC ideal-int +pkg syscall (netbsd-arm64-cgo), const EVFILT_READ = 0 +pkg syscall (netbsd-arm64-cgo), const EVFILT_READ ideal-int +pkg syscall (netbsd-arm64-cgo), const EVFILT_SIGNAL = 5 +pkg syscall (netbsd-arm64-cgo), const EVFILT_SIGNAL ideal-int +pkg syscall (netbsd-arm64-cgo), const EVFILT_SYSCOUNT = 7 +pkg syscall (netbsd-arm64-cgo), const EVFILT_SYSCOUNT ideal-int +pkg syscall (netbsd-arm64-cgo), const EVFILT_TIMER = 6 +pkg syscall (netbsd-arm64-cgo), const EVFILT_TIMER ideal-int +pkg syscall (netbsd-arm64-cgo), const EVFILT_VNODE = 3 +pkg syscall (netbsd-arm64-cgo), const EVFILT_VNODE ideal-int +pkg syscall (netbsd-arm64-cgo), const EVFILT_WRITE = 1 +pkg syscall (netbsd-arm64-cgo), const EVFILT_WRITE ideal-int +pkg syscall (netbsd-arm64-cgo), const EV_FLAG1 = 8192 +pkg syscall (netbsd-arm64-cgo), const EV_FLAG1 ideal-int +pkg syscall (netbsd-arm64-cgo), const EV_ONESHOT = 16 +pkg syscall (netbsd-arm64-cgo), const EV_ONESHOT ideal-int +pkg syscall (netbsd-arm64-cgo), const EV_SYSFLAGS = 61440 +pkg syscall (netbsd-arm64-cgo), const EV_SYSFLAGS ideal-int +pkg syscall (netbsd-arm64-cgo), const EWOULDBLOCK = 35 +pkg syscall (netbsd-arm64-cgo), const EXDEV = 18 +pkg syscall (netbsd-arm64-cgo), const EXTA = 19200 +pkg syscall (netbsd-arm64-cgo), const EXTA ideal-int +pkg syscall (netbsd-arm64-cgo), const EXTB = 38400 +pkg syscall (netbsd-arm64-cgo), const EXTB ideal-int +pkg syscall (netbsd-arm64-cgo), const EXTPROC = 2048 +pkg syscall (netbsd-arm64-cgo), const EXTPROC ideal-int +pkg syscall (netbsd-arm64-cgo), const F_CLOSEM = 10 +pkg syscall (netbsd-arm64-cgo), const F_CLOSEM ideal-int +pkg syscall (netbsd-arm64-cgo), const FD_CLOEXEC = 1 +pkg syscall (netbsd-arm64-cgo), const FD_CLOEXEC ideal-int +pkg syscall (netbsd-arm64-cgo), const FD_SETSIZE = 256 +pkg syscall (netbsd-arm64-cgo), const FD_SETSIZE ideal-int +pkg syscall (netbsd-arm64-cgo), const F_DUPFD = 0 +pkg syscall (netbsd-arm64-cgo), const F_DUPFD_CLOEXEC = 12 +pkg syscall (netbsd-arm64-cgo), const F_DUPFD_CLOEXEC ideal-int +pkg syscall (netbsd-arm64-cgo), const F_DUPFD ideal-int +pkg syscall (netbsd-arm64-cgo), const F_FSCTL = -2147483648 +pkg syscall (netbsd-arm64-cgo), const F_FSCTL ideal-int +pkg syscall (netbsd-arm64-cgo), const F_FSDIRMASK = 1879048192 +pkg syscall (netbsd-arm64-cgo), const F_FSDIRMASK ideal-int +pkg syscall (netbsd-arm64-cgo), const F_FSIN = 268435456 +pkg syscall (netbsd-arm64-cgo), const F_FSIN ideal-int +pkg syscall (netbsd-arm64-cgo), const F_FSINOUT = 805306368 +pkg syscall (netbsd-arm64-cgo), const F_FSINOUT ideal-int +pkg syscall (netbsd-arm64-cgo), const F_FSOUT = 536870912 +pkg syscall (netbsd-arm64-cgo), const F_FSOUT ideal-int +pkg syscall (netbsd-arm64-cgo), const F_FSPRIV = 32768 +pkg syscall (netbsd-arm64-cgo), const F_FSPRIV ideal-int +pkg syscall (netbsd-arm64-cgo), const F_FSVOID = 1073741824 +pkg syscall (netbsd-arm64-cgo), const F_FSVOID ideal-int +pkg syscall (netbsd-arm64-cgo), const F_GETFD = 1 +pkg syscall (netbsd-arm64-cgo), const F_GETFD ideal-int +pkg syscall (netbsd-arm64-cgo), const F_GETFL = 3 +pkg syscall (netbsd-arm64-cgo), const F_GETFL ideal-int +pkg syscall (netbsd-arm64-cgo), const F_GETLK = 7 +pkg syscall (netbsd-arm64-cgo), const F_GETLK ideal-int +pkg syscall (netbsd-arm64-cgo), const F_GETNOSIGPIPE = 13 +pkg syscall (netbsd-arm64-cgo), const F_GETNOSIGPIPE ideal-int +pkg syscall (netbsd-arm64-cgo), const F_GETOWN = 5 +pkg syscall (netbsd-arm64-cgo), const F_GETOWN ideal-int +pkg syscall (netbsd-arm64-cgo), const FLUSHO = 8388608 +pkg syscall (netbsd-arm64-cgo), const FLUSHO ideal-int +pkg syscall (netbsd-arm64-cgo), const F_MAXFD = 11 +pkg syscall (netbsd-arm64-cgo), const F_MAXFD ideal-int +pkg syscall (netbsd-arm64-cgo), const F_OK = 0 +pkg syscall (netbsd-arm64-cgo), const F_OK ideal-int +pkg syscall (netbsd-arm64-cgo), const F_PARAM_MASK = 4095 +pkg syscall (netbsd-arm64-cgo), const F_PARAM_MASK ideal-int +pkg syscall (netbsd-arm64-cgo), const F_PARAM_MAX = 4095 +pkg syscall (netbsd-arm64-cgo), const F_PARAM_MAX ideal-int +pkg syscall (netbsd-arm64-cgo), const F_RDLCK = 1 +pkg syscall (netbsd-arm64-cgo), const F_RDLCK ideal-int +pkg syscall (netbsd-arm64-cgo), const F_SETFD = 2 +pkg syscall (netbsd-arm64-cgo), const F_SETFD ideal-int +pkg syscall (netbsd-arm64-cgo), const F_SETFL = 4 +pkg syscall (netbsd-arm64-cgo), const F_SETFL ideal-int +pkg syscall (netbsd-arm64-cgo), const F_SETLK = 8 +pkg syscall (netbsd-arm64-cgo), const F_SETLK ideal-int +pkg syscall (netbsd-arm64-cgo), const F_SETLKW = 9 +pkg syscall (netbsd-arm64-cgo), const F_SETLKW ideal-int +pkg syscall (netbsd-arm64-cgo), const F_SETNOSIGPIPE = 14 +pkg syscall (netbsd-arm64-cgo), const F_SETNOSIGPIPE ideal-int +pkg syscall (netbsd-arm64-cgo), const F_SETOWN = 6 +pkg syscall (netbsd-arm64-cgo), const F_SETOWN ideal-int +pkg syscall (netbsd-arm64-cgo), const F_UNLCK = 2 +pkg syscall (netbsd-arm64-cgo), const F_UNLCK ideal-int +pkg syscall (netbsd-arm64-cgo), const F_WRLCK = 3 +pkg syscall (netbsd-arm64-cgo), const F_WRLCK ideal-int +pkg syscall (netbsd-arm64-cgo), const HUPCL = 16384 +pkg syscall (netbsd-arm64-cgo), const HUPCL ideal-int +pkg syscall (netbsd-arm64-cgo), const ICANON = 256 +pkg syscall (netbsd-arm64-cgo), const ICANON ideal-int +pkg syscall (netbsd-arm64-cgo), const ICMP6_FILTER = 18 +pkg syscall (netbsd-arm64-cgo), const ICMP6_FILTER ideal-int +pkg syscall (netbsd-arm64-cgo), const ICRNL = 256 +pkg syscall (netbsd-arm64-cgo), const ICRNL ideal-int +pkg syscall (netbsd-arm64-cgo), const IEXTEN = 1024 +pkg syscall (netbsd-arm64-cgo), const IEXTEN ideal-int +pkg syscall (netbsd-arm64-cgo), const IFAN_ARRIVAL = 0 +pkg syscall (netbsd-arm64-cgo), const IFAN_ARRIVAL ideal-int +pkg syscall (netbsd-arm64-cgo), const IFAN_DEPARTURE = 1 +pkg syscall (netbsd-arm64-cgo), const IFAN_DEPARTURE ideal-int +pkg syscall (netbsd-arm64-cgo), const IFA_ROUTE = 1 +pkg syscall (netbsd-arm64-cgo), const IFA_ROUTE ideal-int +pkg syscall (netbsd-arm64-cgo), const IFF_ALLMULTI = 512 +pkg syscall (netbsd-arm64-cgo), const IFF_ALLMULTI ideal-int +pkg syscall (netbsd-arm64-cgo), const IFF_CANTCHANGE = 36690 +pkg syscall (netbsd-arm64-cgo), const IFF_CANTCHANGE ideal-int +pkg syscall (netbsd-arm64-cgo), const IFF_DEBUG = 4 +pkg syscall (netbsd-arm64-cgo), const IFF_DEBUG ideal-int +pkg syscall (netbsd-arm64-cgo), const IFF_LINK0 = 4096 +pkg syscall (netbsd-arm64-cgo), const IFF_LINK0 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFF_LINK1 = 8192 +pkg syscall (netbsd-arm64-cgo), const IFF_LINK1 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFF_LINK2 = 16384 +pkg syscall (netbsd-arm64-cgo), const IFF_LINK2 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFF_LOOPBACK = 8 +pkg syscall (netbsd-arm64-cgo), const IFF_MULTICAST = 32768 +pkg syscall (netbsd-arm64-cgo), const IFF_NOARP = 128 +pkg syscall (netbsd-arm64-cgo), const IFF_NOARP ideal-int +pkg syscall (netbsd-arm64-cgo), const IFF_NOTRAILERS = 32 +pkg syscall (netbsd-arm64-cgo), const IFF_NOTRAILERS ideal-int +pkg syscall (netbsd-arm64-cgo), const IFF_OACTIVE = 1024 +pkg syscall (netbsd-arm64-cgo), const IFF_OACTIVE ideal-int +pkg syscall (netbsd-arm64-cgo), const IFF_POINTOPOINT = 16 +pkg syscall (netbsd-arm64-cgo), const IFF_POINTOPOINT ideal-int +pkg syscall (netbsd-arm64-cgo), const IFF_PROMISC = 256 +pkg syscall (netbsd-arm64-cgo), const IFF_PROMISC ideal-int +pkg syscall (netbsd-arm64-cgo), const IFF_RUNNING = 64 +pkg syscall (netbsd-arm64-cgo), const IFF_RUNNING ideal-int +pkg syscall (netbsd-arm64-cgo), const IFF_SIMPLEX = 2048 +pkg syscall (netbsd-arm64-cgo), const IFF_SIMPLEX ideal-int +pkg syscall (netbsd-arm64-cgo), const IFNAMSIZ = 16 +pkg syscall (netbsd-arm64-cgo), const IFNAMSIZ ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_1822 = 2 +pkg syscall (netbsd-arm64-cgo), const IFT_1822 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_A12MPPSWITCH = 130 +pkg syscall (netbsd-arm64-cgo), const IFT_A12MPPSWITCH ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_AAL2 = 187 +pkg syscall (netbsd-arm64-cgo), const IFT_AAL2 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_AAL5 = 49 +pkg syscall (netbsd-arm64-cgo), const IFT_AAL5 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_ADSL = 94 +pkg syscall (netbsd-arm64-cgo), const IFT_ADSL ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_AFLANE8023 = 59 +pkg syscall (netbsd-arm64-cgo), const IFT_AFLANE8023 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_AFLANE8025 = 60 +pkg syscall (netbsd-arm64-cgo), const IFT_AFLANE8025 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_ARAP = 88 +pkg syscall (netbsd-arm64-cgo), const IFT_ARAP ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_ARCNET = 35 +pkg syscall (netbsd-arm64-cgo), const IFT_ARCNET ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_ARCNETPLUS = 36 +pkg syscall (netbsd-arm64-cgo), const IFT_ARCNETPLUS ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_ASYNC = 84 +pkg syscall (netbsd-arm64-cgo), const IFT_ASYNC ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_ATM = 37 +pkg syscall (netbsd-arm64-cgo), const IFT_ATMDXI = 105 +pkg syscall (netbsd-arm64-cgo), const IFT_ATMDXI ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_ATMFUNI = 106 +pkg syscall (netbsd-arm64-cgo), const IFT_ATMFUNI ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_ATM ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_ATMIMA = 107 +pkg syscall (netbsd-arm64-cgo), const IFT_ATMIMA ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_ATMLOGICAL = 80 +pkg syscall (netbsd-arm64-cgo), const IFT_ATMLOGICAL ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_ATMRADIO = 189 +pkg syscall (netbsd-arm64-cgo), const IFT_ATMRADIO ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_ATMSUBINTERFACE = 134 +pkg syscall (netbsd-arm64-cgo), const IFT_ATMSUBINTERFACE ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_ATMVCIENDPT = 194 +pkg syscall (netbsd-arm64-cgo), const IFT_ATMVCIENDPT ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_ATMVIRTUAL = 149 +pkg syscall (netbsd-arm64-cgo), const IFT_ATMVIRTUAL ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_BGPPOLICYACCOUNTING = 162 +pkg syscall (netbsd-arm64-cgo), const IFT_BGPPOLICYACCOUNTING ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_BRIDGE = 209 +pkg syscall (netbsd-arm64-cgo), const IFT_BRIDGE ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_BSC = 83 +pkg syscall (netbsd-arm64-cgo), const IFT_BSC ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_CARP = 248 +pkg syscall (netbsd-arm64-cgo), const IFT_CARP ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_CCTEMUL = 61 +pkg syscall (netbsd-arm64-cgo), const IFT_CCTEMUL ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_CEPT = 19 +pkg syscall (netbsd-arm64-cgo), const IFT_CEPT ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_CES = 133 +pkg syscall (netbsd-arm64-cgo), const IFT_CES ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_CHANNEL = 70 +pkg syscall (netbsd-arm64-cgo), const IFT_CHANNEL ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_CNR = 85 +pkg syscall (netbsd-arm64-cgo), const IFT_CNR ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_COFFEE = 132 +pkg syscall (netbsd-arm64-cgo), const IFT_COFFEE ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_COMPOSITELINK = 155 +pkg syscall (netbsd-arm64-cgo), const IFT_COMPOSITELINK ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_DCN = 141 +pkg syscall (netbsd-arm64-cgo), const IFT_DCN ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_DIGITALPOWERLINE = 138 +pkg syscall (netbsd-arm64-cgo), const IFT_DIGITALPOWERLINE ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_DIGITALWRAPPEROVERHEADCHANNEL = 186 +pkg syscall (netbsd-arm64-cgo), const IFT_DIGITALWRAPPEROVERHEADCHANNEL ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_DLSW = 74 +pkg syscall (netbsd-arm64-cgo), const IFT_DLSW ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_DOCSCABLEDOWNSTREAM = 128 +pkg syscall (netbsd-arm64-cgo), const IFT_DOCSCABLEDOWNSTREAM ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_DOCSCABLEMACLAYER = 127 +pkg syscall (netbsd-arm64-cgo), const IFT_DOCSCABLEMACLAYER ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_DOCSCABLEUPSTREAM = 129 +pkg syscall (netbsd-arm64-cgo), const IFT_DOCSCABLEUPSTREAMCHANNEL = 205 +pkg syscall (netbsd-arm64-cgo), const IFT_DOCSCABLEUPSTREAMCHANNEL ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_DOCSCABLEUPSTREAM ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_DS0 = 81 +pkg syscall (netbsd-arm64-cgo), const IFT_DS0BUNDLE = 82 +pkg syscall (netbsd-arm64-cgo), const IFT_DS0BUNDLE ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_DS0 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_DS1FDL = 170 +pkg syscall (netbsd-arm64-cgo), const IFT_DS1FDL ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_DS3 = 30 +pkg syscall (netbsd-arm64-cgo), const IFT_DS3 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_DTM = 140 +pkg syscall (netbsd-arm64-cgo), const IFT_DTM ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_DVBASILN = 172 +pkg syscall (netbsd-arm64-cgo), const IFT_DVBASILN ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_DVBASIOUT = 173 +pkg syscall (netbsd-arm64-cgo), const IFT_DVBASIOUT ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_DVBRCCDOWNSTREAM = 147 +pkg syscall (netbsd-arm64-cgo), const IFT_DVBRCCDOWNSTREAM ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_DVBRCCMACLAYER = 146 +pkg syscall (netbsd-arm64-cgo), const IFT_DVBRCCMACLAYER ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_DVBRCCUPSTREAM = 148 +pkg syscall (netbsd-arm64-cgo), const IFT_DVBRCCUPSTREAM ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_ECONET = 206 +pkg syscall (netbsd-arm64-cgo), const IFT_ECONET ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_EON = 25 +pkg syscall (netbsd-arm64-cgo), const IFT_EON ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_EPLRS = 87 +pkg syscall (netbsd-arm64-cgo), const IFT_EPLRS ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_ESCON = 73 +pkg syscall (netbsd-arm64-cgo), const IFT_ESCON ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_ETHER = 6 +pkg syscall (netbsd-arm64-cgo), const IFT_ETHER ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_FAITH = 242 +pkg syscall (netbsd-arm64-cgo), const IFT_FAITH ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_FAST = 125 +pkg syscall (netbsd-arm64-cgo), const IFT_FASTETHER = 62 +pkg syscall (netbsd-arm64-cgo), const IFT_FASTETHERFX = 69 +pkg syscall (netbsd-arm64-cgo), const IFT_FASTETHERFX ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_FASTETHER ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_FAST ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_FDDI = 15 +pkg syscall (netbsd-arm64-cgo), const IFT_FDDI ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_FIBRECHANNEL = 56 +pkg syscall (netbsd-arm64-cgo), const IFT_FIBRECHANNEL ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_FRAMERELAYINTERCONNECT = 58 +pkg syscall (netbsd-arm64-cgo), const IFT_FRAMERELAYINTERCONNECT ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_FRAMERELAYMPI = 92 +pkg syscall (netbsd-arm64-cgo), const IFT_FRAMERELAYMPI ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_FRDLCIENDPT = 193 +pkg syscall (netbsd-arm64-cgo), const IFT_FRDLCIENDPT ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_FRELAY = 32 +pkg syscall (netbsd-arm64-cgo), const IFT_FRELAYDCE = 44 +pkg syscall (netbsd-arm64-cgo), const IFT_FRELAYDCE ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_FRELAY ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_FRF16MFRBUNDLE = 163 +pkg syscall (netbsd-arm64-cgo), const IFT_FRF16MFRBUNDLE ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_FRFORWARD = 158 +pkg syscall (netbsd-arm64-cgo), const IFT_FRFORWARD ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_G703AT2MB = 67 +pkg syscall (netbsd-arm64-cgo), const IFT_G703AT2MB ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_G703AT64K = 66 +pkg syscall (netbsd-arm64-cgo), const IFT_G703AT64K ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_GIF = 240 +pkg syscall (netbsd-arm64-cgo), const IFT_GIF ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_GIGABITETHERNET = 117 +pkg syscall (netbsd-arm64-cgo), const IFT_GIGABITETHERNET ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_GR303IDT = 178 +pkg syscall (netbsd-arm64-cgo), const IFT_GR303IDT ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_GR303RDT = 177 +pkg syscall (netbsd-arm64-cgo), const IFT_GR303RDT ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_H323GATEKEEPER = 164 +pkg syscall (netbsd-arm64-cgo), const IFT_H323GATEKEEPER ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_H323PROXY = 165 +pkg syscall (netbsd-arm64-cgo), const IFT_H323PROXY ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_HDH1822 = 3 +pkg syscall (netbsd-arm64-cgo), const IFT_HDH1822 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_HDLC = 118 +pkg syscall (netbsd-arm64-cgo), const IFT_HDLC ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_HDSL2 = 168 +pkg syscall (netbsd-arm64-cgo), const IFT_HDSL2 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_HIPERLAN2 = 183 +pkg syscall (netbsd-arm64-cgo), const IFT_HIPERLAN2 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_HIPPI = 47 +pkg syscall (netbsd-arm64-cgo), const IFT_HIPPI ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_HIPPIINTERFACE = 57 +pkg syscall (netbsd-arm64-cgo), const IFT_HIPPIINTERFACE ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_HOSTPAD = 90 +pkg syscall (netbsd-arm64-cgo), const IFT_HOSTPAD ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_HSSI = 46 +pkg syscall (netbsd-arm64-cgo), const IFT_HSSI ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_HY = 14 +pkg syscall (netbsd-arm64-cgo), const IFT_HY ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_IBM370PARCHAN = 72 +pkg syscall (netbsd-arm64-cgo), const IFT_IBM370PARCHAN ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_IDSL = 154 +pkg syscall (netbsd-arm64-cgo), const IFT_IDSL ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_IEEE1394 = 144 +pkg syscall (netbsd-arm64-cgo), const IFT_IEEE1394 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_IEEE80211 = 71 +pkg syscall (netbsd-arm64-cgo), const IFT_IEEE80211 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_IEEE80212 = 55 +pkg syscall (netbsd-arm64-cgo), const IFT_IEEE80212 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_IEEE8023ADLAG = 161 +pkg syscall (netbsd-arm64-cgo), const IFT_IEEE8023ADLAG ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_IFGSN = 145 +pkg syscall (netbsd-arm64-cgo), const IFT_IFGSN ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_IMT = 190 +pkg syscall (netbsd-arm64-cgo), const IFT_IMT ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_INFINIBAND = 199 +pkg syscall (netbsd-arm64-cgo), const IFT_INFINIBAND ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_INTERLEAVE = 124 +pkg syscall (netbsd-arm64-cgo), const IFT_INTERLEAVE ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_IP = 126 +pkg syscall (netbsd-arm64-cgo), const IFT_IPFORWARD = 142 +pkg syscall (netbsd-arm64-cgo), const IFT_IPFORWARD ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_IP ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_IPOVERATM = 114 +pkg syscall (netbsd-arm64-cgo), const IFT_IPOVERATM ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_IPOVERCDLC = 109 +pkg syscall (netbsd-arm64-cgo), const IFT_IPOVERCDLC ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_IPOVERCLAW = 110 +pkg syscall (netbsd-arm64-cgo), const IFT_IPOVERCLAW ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_IPSWITCH = 78 +pkg syscall (netbsd-arm64-cgo), const IFT_IPSWITCH ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_ISDN = 63 +pkg syscall (netbsd-arm64-cgo), const IFT_ISDNBASIC = 20 +pkg syscall (netbsd-arm64-cgo), const IFT_ISDNBASIC ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_ISDN ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_ISDNPRIMARY = 21 +pkg syscall (netbsd-arm64-cgo), const IFT_ISDNPRIMARY ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_ISDNS = 75 +pkg syscall (netbsd-arm64-cgo), const IFT_ISDNS ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_ISDNU = 76 +pkg syscall (netbsd-arm64-cgo), const IFT_ISDNU ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_ISO88022LLC = 41 +pkg syscall (netbsd-arm64-cgo), const IFT_ISO88022LLC ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_ISO88023 = 7 +pkg syscall (netbsd-arm64-cgo), const IFT_ISO88023 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_ISO88024 = 8 +pkg syscall (netbsd-arm64-cgo), const IFT_ISO88024 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_ISO88025 = 9 +pkg syscall (netbsd-arm64-cgo), const IFT_ISO88025CRFPINT = 98 +pkg syscall (netbsd-arm64-cgo), const IFT_ISO88025CRFPINT ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_ISO88025DTR = 86 +pkg syscall (netbsd-arm64-cgo), const IFT_ISO88025DTR ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_ISO88025FIBER = 115 +pkg syscall (netbsd-arm64-cgo), const IFT_ISO88025FIBER ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_ISO88025 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_ISO88026 = 10 +pkg syscall (netbsd-arm64-cgo), const IFT_ISO88026 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_ISUP = 179 +pkg syscall (netbsd-arm64-cgo), const IFT_ISUP ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_L2VLAN = 135 +pkg syscall (netbsd-arm64-cgo), const IFT_L2VLAN ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_L3IPVLAN = 136 +pkg syscall (netbsd-arm64-cgo), const IFT_L3IPVLAN ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_L3IPXVLAN = 137 +pkg syscall (netbsd-arm64-cgo), const IFT_L3IPXVLAN ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_LAPB = 16 +pkg syscall (netbsd-arm64-cgo), const IFT_LAPB ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_LAPD = 77 +pkg syscall (netbsd-arm64-cgo), const IFT_LAPD ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_LAPF = 119 +pkg syscall (netbsd-arm64-cgo), const IFT_LAPF ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_LINEGROUP = 210 +pkg syscall (netbsd-arm64-cgo), const IFT_LINEGROUP ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_LOCALTALK = 42 +pkg syscall (netbsd-arm64-cgo), const IFT_LOCALTALK ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_LOOP = 24 +pkg syscall (netbsd-arm64-cgo), const IFT_LOOP ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_MEDIAMAILOVERIP = 139 +pkg syscall (netbsd-arm64-cgo), const IFT_MEDIAMAILOVERIP ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_MFSIGLINK = 167 +pkg syscall (netbsd-arm64-cgo), const IFT_MFSIGLINK ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_MIOX25 = 38 +pkg syscall (netbsd-arm64-cgo), const IFT_MIOX25 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_MODEM = 48 +pkg syscall (netbsd-arm64-cgo), const IFT_MODEM ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_MPC = 113 +pkg syscall (netbsd-arm64-cgo), const IFT_MPC ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_MPLS = 166 +pkg syscall (netbsd-arm64-cgo), const IFT_MPLS ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_MPLSTUNNEL = 150 +pkg syscall (netbsd-arm64-cgo), const IFT_MPLSTUNNEL ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_MSDSL = 143 +pkg syscall (netbsd-arm64-cgo), const IFT_MSDSL ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_MVL = 191 +pkg syscall (netbsd-arm64-cgo), const IFT_MVL ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_MYRINET = 99 +pkg syscall (netbsd-arm64-cgo), const IFT_MYRINET ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_NFAS = 175 +pkg syscall (netbsd-arm64-cgo), const IFT_NFAS ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_NSIP = 27 +pkg syscall (netbsd-arm64-cgo), const IFT_NSIP ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_OPTICALCHANNEL = 195 +pkg syscall (netbsd-arm64-cgo), const IFT_OPTICALCHANNEL ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_OPTICALTRANSPORT = 196 +pkg syscall (netbsd-arm64-cgo), const IFT_OPTICALTRANSPORT ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_OTHER = 1 +pkg syscall (netbsd-arm64-cgo), const IFT_OTHER ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_P10 = 12 +pkg syscall (netbsd-arm64-cgo), const IFT_P10 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_P80 = 13 +pkg syscall (netbsd-arm64-cgo), const IFT_P80 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_PARA = 34 +pkg syscall (netbsd-arm64-cgo), const IFT_PARA ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_PFLOG = 245 +pkg syscall (netbsd-arm64-cgo), const IFT_PFLOG ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_PFSYNC = 246 +pkg syscall (netbsd-arm64-cgo), const IFT_PFSYNC ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_PLC = 174 +pkg syscall (netbsd-arm64-cgo), const IFT_PLC ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_PON155 = 207 +pkg syscall (netbsd-arm64-cgo), const IFT_PON155 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_PON622 = 208 +pkg syscall (netbsd-arm64-cgo), const IFT_PON622 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_POS = 171 +pkg syscall (netbsd-arm64-cgo), const IFT_POS ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_PPP = 23 +pkg syscall (netbsd-arm64-cgo), const IFT_PPP ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_PPPMULTILINKBUNDLE = 108 +pkg syscall (netbsd-arm64-cgo), const IFT_PPPMULTILINKBUNDLE ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_PROPATM = 197 +pkg syscall (netbsd-arm64-cgo), const IFT_PROPATM ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_PROPBWAP2MP = 184 +pkg syscall (netbsd-arm64-cgo), const IFT_PROPBWAP2MP ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_PROPCNLS = 89 +pkg syscall (netbsd-arm64-cgo), const IFT_PROPCNLS ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_PROPDOCSWIRELESSDOWNSTREAM = 181 +pkg syscall (netbsd-arm64-cgo), const IFT_PROPDOCSWIRELESSDOWNSTREAM ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_PROPDOCSWIRELESSMACLAYER = 180 +pkg syscall (netbsd-arm64-cgo), const IFT_PROPDOCSWIRELESSMACLAYER ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_PROPDOCSWIRELESSUPSTREAM = 182 +pkg syscall (netbsd-arm64-cgo), const IFT_PROPDOCSWIRELESSUPSTREAM ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_PROPMUX = 54 +pkg syscall (netbsd-arm64-cgo), const IFT_PROPMUX ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_PROPVIRTUAL = 53 +pkg syscall (netbsd-arm64-cgo), const IFT_PROPVIRTUAL ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_PROPWIRELESSP2P = 157 +pkg syscall (netbsd-arm64-cgo), const IFT_PROPWIRELESSP2P ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_PTPSERIAL = 22 +pkg syscall (netbsd-arm64-cgo), const IFT_PTPSERIAL ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_PVC = 241 +pkg syscall (netbsd-arm64-cgo), const IFT_PVC ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_Q2931 = 201 +pkg syscall (netbsd-arm64-cgo), const IFT_Q2931 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_QLLC = 68 +pkg syscall (netbsd-arm64-cgo), const IFT_QLLC ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_RADIOMAC = 188 +pkg syscall (netbsd-arm64-cgo), const IFT_RADIOMAC ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_RADSL = 95 +pkg syscall (netbsd-arm64-cgo), const IFT_RADSL ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_REACHDSL = 192 +pkg syscall (netbsd-arm64-cgo), const IFT_REACHDSL ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_RFC1483 = 159 +pkg syscall (netbsd-arm64-cgo), const IFT_RFC1483 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_RS232 = 33 +pkg syscall (netbsd-arm64-cgo), const IFT_RS232 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_RSRB = 79 +pkg syscall (netbsd-arm64-cgo), const IFT_RSRB ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_SDLC = 17 +pkg syscall (netbsd-arm64-cgo), const IFT_SDLC ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_SDSL = 96 +pkg syscall (netbsd-arm64-cgo), const IFT_SDSL ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_SHDSL = 169 +pkg syscall (netbsd-arm64-cgo), const IFT_SHDSL ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_SIP = 31 +pkg syscall (netbsd-arm64-cgo), const IFT_SIP ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_SIPSIG = 204 +pkg syscall (netbsd-arm64-cgo), const IFT_SIPSIG ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_SIPTG = 203 +pkg syscall (netbsd-arm64-cgo), const IFT_SIPTG ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_SLIP = 28 +pkg syscall (netbsd-arm64-cgo), const IFT_SLIP ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_SMDSDXI = 43 +pkg syscall (netbsd-arm64-cgo), const IFT_SMDSDXI ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_SMDSICIP = 52 +pkg syscall (netbsd-arm64-cgo), const IFT_SMDSICIP ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_SONET = 39 +pkg syscall (netbsd-arm64-cgo), const IFT_SONET ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_SONETOVERHEADCHANNEL = 185 +pkg syscall (netbsd-arm64-cgo), const IFT_SONETOVERHEADCHANNEL ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_SONETPATH = 50 +pkg syscall (netbsd-arm64-cgo), const IFT_SONETPATH ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_SONETVT = 51 +pkg syscall (netbsd-arm64-cgo), const IFT_SONETVT ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_SRP = 151 +pkg syscall (netbsd-arm64-cgo), const IFT_SRP ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_SS7SIGLINK = 156 +pkg syscall (netbsd-arm64-cgo), const IFT_SS7SIGLINK ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_STACKTOSTACK = 111 +pkg syscall (netbsd-arm64-cgo), const IFT_STACKTOSTACK ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_STARLAN = 11 +pkg syscall (netbsd-arm64-cgo), const IFT_STARLAN ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_STF = 215 +pkg syscall (netbsd-arm64-cgo), const IFT_STF ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_T1 = 18 +pkg syscall (netbsd-arm64-cgo), const IFT_T1 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_TDLC = 116 +pkg syscall (netbsd-arm64-cgo), const IFT_TDLC ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_TELINK = 200 +pkg syscall (netbsd-arm64-cgo), const IFT_TELINK ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_TERMPAD = 91 +pkg syscall (netbsd-arm64-cgo), const IFT_TERMPAD ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_TR008 = 176 +pkg syscall (netbsd-arm64-cgo), const IFT_TR008 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_TRANSPHDLC = 123 +pkg syscall (netbsd-arm64-cgo), const IFT_TRANSPHDLC ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_TUNNEL = 131 +pkg syscall (netbsd-arm64-cgo), const IFT_TUNNEL ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_ULTRA = 29 +pkg syscall (netbsd-arm64-cgo), const IFT_ULTRA ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_USB = 160 +pkg syscall (netbsd-arm64-cgo), const IFT_USB ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_V11 = 64 +pkg syscall (netbsd-arm64-cgo), const IFT_V11 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_V35 = 45 +pkg syscall (netbsd-arm64-cgo), const IFT_V35 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_V36 = 65 +pkg syscall (netbsd-arm64-cgo), const IFT_V36 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_V37 = 120 +pkg syscall (netbsd-arm64-cgo), const IFT_V37 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_VDSL = 97 +pkg syscall (netbsd-arm64-cgo), const IFT_VDSL ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_VIRTUALIPADDRESS = 112 +pkg syscall (netbsd-arm64-cgo), const IFT_VIRTUALIPADDRESS ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_VIRTUALTG = 202 +pkg syscall (netbsd-arm64-cgo), const IFT_VIRTUALTG ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_VOICEDID = 213 +pkg syscall (netbsd-arm64-cgo), const IFT_VOICEDID ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_VOICEEM = 100 +pkg syscall (netbsd-arm64-cgo), const IFT_VOICEEMFGD = 211 +pkg syscall (netbsd-arm64-cgo), const IFT_VOICEEMFGD ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_VOICEEM ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_VOICEENCAP = 103 +pkg syscall (netbsd-arm64-cgo), const IFT_VOICEENCAP ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_VOICEFGDEANA = 212 +pkg syscall (netbsd-arm64-cgo), const IFT_VOICEFGDEANA ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_VOICEFXO = 101 +pkg syscall (netbsd-arm64-cgo), const IFT_VOICEFXO ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_VOICEFXS = 102 +pkg syscall (netbsd-arm64-cgo), const IFT_VOICEFXS ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_VOICEOVERATM = 152 +pkg syscall (netbsd-arm64-cgo), const IFT_VOICEOVERATM ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_VOICEOVERCABLE = 198 +pkg syscall (netbsd-arm64-cgo), const IFT_VOICEOVERCABLE ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_VOICEOVERFRAMERELAY = 153 +pkg syscall (netbsd-arm64-cgo), const IFT_VOICEOVERFRAMERELAY ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_VOICEOVERIP = 104 +pkg syscall (netbsd-arm64-cgo), const IFT_VOICEOVERIP ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_X213 = 93 +pkg syscall (netbsd-arm64-cgo), const IFT_X213 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_X25 = 5 +pkg syscall (netbsd-arm64-cgo), const IFT_X25DDN = 4 +pkg syscall (netbsd-arm64-cgo), const IFT_X25DDN ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_X25HUNTGROUP = 122 +pkg syscall (netbsd-arm64-cgo), const IFT_X25HUNTGROUP ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_X25 ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_X25MLP = 121 +pkg syscall (netbsd-arm64-cgo), const IFT_X25MLP ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_X25PLE = 40 +pkg syscall (netbsd-arm64-cgo), const IFT_X25PLE ideal-int +pkg syscall (netbsd-arm64-cgo), const IFT_XETHER = 26 +pkg syscall (netbsd-arm64-cgo), const IFT_XETHER ideal-int +pkg syscall (netbsd-arm64-cgo), const IGNBRK = 1 +pkg syscall (netbsd-arm64-cgo), const IGNBRK ideal-int +pkg syscall (netbsd-arm64-cgo), const IGNCR = 128 +pkg syscall (netbsd-arm64-cgo), const IGNCR ideal-int +pkg syscall (netbsd-arm64-cgo), const IGNPAR = 4 +pkg syscall (netbsd-arm64-cgo), const IGNPAR ideal-int +pkg syscall (netbsd-arm64-cgo), const IMAXBEL = 8192 +pkg syscall (netbsd-arm64-cgo), const IMAXBEL ideal-int +pkg syscall (netbsd-arm64-cgo), const IN_CLASSA_HOST = 16777215 +pkg syscall (netbsd-arm64-cgo), const IN_CLASSA_HOST ideal-int +pkg syscall (netbsd-arm64-cgo), const IN_CLASSA_MAX = 128 +pkg syscall (netbsd-arm64-cgo), const IN_CLASSA_MAX ideal-int +pkg syscall (netbsd-arm64-cgo), const IN_CLASSA_NET = 4278190080 +pkg syscall (netbsd-arm64-cgo), const IN_CLASSA_NET ideal-int +pkg syscall (netbsd-arm64-cgo), const IN_CLASSA_NSHIFT = 24 +pkg syscall (netbsd-arm64-cgo), const IN_CLASSA_NSHIFT ideal-int +pkg syscall (netbsd-arm64-cgo), const IN_CLASSB_HOST = 65535 +pkg syscall (netbsd-arm64-cgo), const IN_CLASSB_HOST ideal-int +pkg syscall (netbsd-arm64-cgo), const IN_CLASSB_MAX = 65536 +pkg syscall (netbsd-arm64-cgo), const IN_CLASSB_MAX ideal-int +pkg syscall (netbsd-arm64-cgo), const IN_CLASSB_NET = 4294901760 +pkg syscall (netbsd-arm64-cgo), const IN_CLASSB_NET ideal-int +pkg syscall (netbsd-arm64-cgo), const IN_CLASSB_NSHIFT = 16 +pkg syscall (netbsd-arm64-cgo), const IN_CLASSB_NSHIFT ideal-int +pkg syscall (netbsd-arm64-cgo), const IN_CLASSC_HOST = 255 +pkg syscall (netbsd-arm64-cgo), const IN_CLASSC_HOST ideal-int +pkg syscall (netbsd-arm64-cgo), const IN_CLASSC_NET = 4294967040 +pkg syscall (netbsd-arm64-cgo), const IN_CLASSC_NET ideal-int +pkg syscall (netbsd-arm64-cgo), const IN_CLASSC_NSHIFT = 8 +pkg syscall (netbsd-arm64-cgo), const IN_CLASSC_NSHIFT ideal-int +pkg syscall (netbsd-arm64-cgo), const IN_CLASSD_HOST = 268435455 +pkg syscall (netbsd-arm64-cgo), const IN_CLASSD_HOST ideal-int +pkg syscall (netbsd-arm64-cgo), const IN_CLASSD_NET = 4026531840 +pkg syscall (netbsd-arm64-cgo), const IN_CLASSD_NET ideal-int +pkg syscall (netbsd-arm64-cgo), const IN_CLASSD_NSHIFT = 28 +pkg syscall (netbsd-arm64-cgo), const IN_CLASSD_NSHIFT ideal-int +pkg syscall (netbsd-arm64-cgo), const INLCR = 64 +pkg syscall (netbsd-arm64-cgo), const INLCR ideal-int +pkg syscall (netbsd-arm64-cgo), const IN_LOOPBACKNET = 127 +pkg syscall (netbsd-arm64-cgo), const IN_LOOPBACKNET ideal-int +pkg syscall (netbsd-arm64-cgo), const INPCK = 16 +pkg syscall (netbsd-arm64-cgo), const INPCK ideal-int +pkg syscall (netbsd-arm64-cgo), const IP_ADD_MEMBERSHIP = 12 +pkg syscall (netbsd-arm64-cgo), const IP_DEFAULT_MULTICAST_LOOP = 1 +pkg syscall (netbsd-arm64-cgo), const IP_DEFAULT_MULTICAST_LOOP ideal-int +pkg syscall (netbsd-arm64-cgo), const IP_DEFAULT_MULTICAST_TTL = 1 +pkg syscall (netbsd-arm64-cgo), const IP_DEFAULT_MULTICAST_TTL ideal-int +pkg syscall (netbsd-arm64-cgo), const IP_DF = 16384 +pkg syscall (netbsd-arm64-cgo), const IP_DF ideal-int +pkg syscall (netbsd-arm64-cgo), const IP_DROP_MEMBERSHIP = 13 +pkg syscall (netbsd-arm64-cgo), const IP_EF = 32768 +pkg syscall (netbsd-arm64-cgo), const IP_EF ideal-int +pkg syscall (netbsd-arm64-cgo), const IP_ERRORMTU = 21 +pkg syscall (netbsd-arm64-cgo), const IP_ERRORMTU ideal-int +pkg syscall (netbsd-arm64-cgo), const IP_HDRINCL = 2 +pkg syscall (netbsd-arm64-cgo), const IP_HDRINCL ideal-int +pkg syscall (netbsd-arm64-cgo), const IP_IPSEC_POLICY = 22 +pkg syscall (netbsd-arm64-cgo), const IP_IPSEC_POLICY ideal-int +pkg syscall (netbsd-arm64-cgo), const IP_MAX_MEMBERSHIPS = 20 +pkg syscall (netbsd-arm64-cgo), const IP_MAX_MEMBERSHIPS ideal-int +pkg syscall (netbsd-arm64-cgo), const IP_MAXPACKET = 65535 +pkg syscall (netbsd-arm64-cgo), const IP_MAXPACKET ideal-int +pkg syscall (netbsd-arm64-cgo), const IP_MF = 8192 +pkg syscall (netbsd-arm64-cgo), const IP_MF ideal-int +pkg syscall (netbsd-arm64-cgo), const IP_MINFRAGSIZE = 69 +pkg syscall (netbsd-arm64-cgo), const IP_MINFRAGSIZE ideal-int +pkg syscall (netbsd-arm64-cgo), const IP_MINTTL = 24 +pkg syscall (netbsd-arm64-cgo), const IP_MINTTL ideal-int +pkg syscall (netbsd-arm64-cgo), const IP_MSS = 576 +pkg syscall (netbsd-arm64-cgo), const IP_MSS ideal-int +pkg syscall (netbsd-arm64-cgo), const IP_MULTICAST_IF = 9 +pkg syscall (netbsd-arm64-cgo), const IP_MULTICAST_LOOP = 11 +pkg syscall (netbsd-arm64-cgo), const IP_MULTICAST_TTL = 10 +pkg syscall (netbsd-arm64-cgo), const IP_OFFMASK = 8191 +pkg syscall (netbsd-arm64-cgo), const IP_OFFMASK ideal-int +pkg syscall (netbsd-arm64-cgo), const IP_OPTIONS = 1 +pkg syscall (netbsd-arm64-cgo), const IP_OPTIONS ideal-int +pkg syscall (netbsd-arm64-cgo), const IP_PORTRANGE = 19 +pkg syscall (netbsd-arm64-cgo), const IP_PORTRANGE_DEFAULT = 0 +pkg syscall (netbsd-arm64-cgo), const IP_PORTRANGE_DEFAULT ideal-int +pkg syscall (netbsd-arm64-cgo), const IP_PORTRANGE_HIGH = 1 +pkg syscall (netbsd-arm64-cgo), const IP_PORTRANGE_HIGH ideal-int +pkg syscall (netbsd-arm64-cgo), const IP_PORTRANGE ideal-int +pkg syscall (netbsd-arm64-cgo), const IP_PORTRANGE_LOW = 2 +pkg syscall (netbsd-arm64-cgo), const IP_PORTRANGE_LOW ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_AH = 51 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_AH ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_CARP = 112 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_CARP ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_DONE = 257 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_DONE ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_DSTOPTS = 60 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_DSTOPTS ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_EGP = 8 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_EGP ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_ENCAP = 98 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_ENCAP ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_EON = 80 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_EON ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_ESP = 50 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_ESP ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_ETHERIP = 97 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_ETHERIP ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_FRAGMENT = 44 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_FRAGMENT ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_GGP = 3 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_GGP ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_GRE = 47 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_GRE ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_HOPOPTS = 0 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_HOPOPTS ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_ICMP = 1 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_ICMP ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_ICMPV6 = 58 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_ICMPV6 ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_IDP = 22 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_IDP ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_IGMP = 2 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_IGMP ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_IPCOMP = 108 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_IPCOMP ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_IPIP = 4 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_IPIP ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_IPV4 = 4 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_IPV4 ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_IPV6_ICMP = 58 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_IPV6_ICMP ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_MAX = 256 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_MAXID = 52 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_MAX ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_MAXID ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_MOBILE = 55 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_MOBILE ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_NONE = 59 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_NONE ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_PFSYNC = 240 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_PFSYNC ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_PIM = 103 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_PIM ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_PUP = 12 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_PUP ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_RAW = 255 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_RAW ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_ROUTING = 43 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_ROUTING ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_RSVP = 46 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_RSVP ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_TP = 29 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_TP ideal-int +pkg syscall (netbsd-arm64-cgo), const IPPROTO_VRRP = 112 +pkg syscall (netbsd-arm64-cgo), const IPPROTO_VRRP ideal-int +pkg syscall (netbsd-arm64-cgo), const IP_RECVDSTADDR = 7 +pkg syscall (netbsd-arm64-cgo), const IP_RECVDSTADDR ideal-int +pkg syscall (netbsd-arm64-cgo), const IP_RECVIF = 20 +pkg syscall (netbsd-arm64-cgo), const IP_RECVIF ideal-int +pkg syscall (netbsd-arm64-cgo), const IP_RECVOPTS = 5 +pkg syscall (netbsd-arm64-cgo), const IP_RECVOPTS ideal-int +pkg syscall (netbsd-arm64-cgo), const IP_RECVRETOPTS = 6 +pkg syscall (netbsd-arm64-cgo), const IP_RECVRETOPTS ideal-int +pkg syscall (netbsd-arm64-cgo), const IP_RECVTTL = 23 +pkg syscall (netbsd-arm64-cgo), const IP_RECVTTL ideal-int +pkg syscall (netbsd-arm64-cgo), const IP_RETOPTS = 8 +pkg syscall (netbsd-arm64-cgo), const IP_RETOPTS ideal-int +pkg syscall (netbsd-arm64-cgo), const IP_RF = 32768 +pkg syscall (netbsd-arm64-cgo), const IP_RF ideal-int +pkg syscall (netbsd-arm64-cgo), const IP_TOS = 3 +pkg syscall (netbsd-arm64-cgo), const IP_TTL = 4 +pkg syscall (netbsd-arm64-cgo), const IPV6_CHECKSUM = 26 +pkg syscall (netbsd-arm64-cgo), const IPV6_CHECKSUM ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_DEFAULT_MULTICAST_HOPS = 1 +pkg syscall (netbsd-arm64-cgo), const IPV6_DEFAULT_MULTICAST_HOPS ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_DEFAULT_MULTICAST_LOOP = 1 +pkg syscall (netbsd-arm64-cgo), const IPV6_DEFAULT_MULTICAST_LOOP ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_DEFHLIM = 64 +pkg syscall (netbsd-arm64-cgo), const IPV6_DEFHLIM ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_DONTFRAG = 62 +pkg syscall (netbsd-arm64-cgo), const IPV6_DONTFRAG ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_DSTOPTS = 50 +pkg syscall (netbsd-arm64-cgo), const IPV6_DSTOPTS ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_FAITH = 29 +pkg syscall (netbsd-arm64-cgo), const IPV6_FAITH ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_FLOWINFO_MASK = 4294967055 +pkg syscall (netbsd-arm64-cgo), const IPV6_FLOWINFO_MASK ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_FLOWLABEL_MASK = 4294905600 +pkg syscall (netbsd-arm64-cgo), const IPV6_FLOWLABEL_MASK ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_FRAGTTL = 120 +pkg syscall (netbsd-arm64-cgo), const IPV6_FRAGTTL ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_HLIMDEC = 1 +pkg syscall (netbsd-arm64-cgo), const IPV6_HLIMDEC ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_HOPLIMIT = 47 +pkg syscall (netbsd-arm64-cgo), const IPV6_HOPLIMIT ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_HOPOPTS = 49 +pkg syscall (netbsd-arm64-cgo), const IPV6_HOPOPTS ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_IPSEC_POLICY = 28 +pkg syscall (netbsd-arm64-cgo), const IPV6_IPSEC_POLICY ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_JOIN_GROUP = 12 +pkg syscall (netbsd-arm64-cgo), const IPV6_LEAVE_GROUP = 13 +pkg syscall (netbsd-arm64-cgo), const IPV6_MAXHLIM = 255 +pkg syscall (netbsd-arm64-cgo), const IPV6_MAXHLIM ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_MAXPACKET = 65535 +pkg syscall (netbsd-arm64-cgo), const IPV6_MAXPACKET ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_MMTU = 1280 +pkg syscall (netbsd-arm64-cgo), const IPV6_MMTU ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_MULTICAST_HOPS = 10 +pkg syscall (netbsd-arm64-cgo), const IPV6_MULTICAST_IF = 9 +pkg syscall (netbsd-arm64-cgo), const IPV6_MULTICAST_LOOP = 11 +pkg syscall (netbsd-arm64-cgo), const IPV6_NEXTHOP = 48 +pkg syscall (netbsd-arm64-cgo), const IPV6_NEXTHOP ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_PATHMTU = 44 +pkg syscall (netbsd-arm64-cgo), const IPV6_PATHMTU ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_PKTINFO = 46 +pkg syscall (netbsd-arm64-cgo), const IPV6_PKTINFO ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_PORTRANGE = 14 +pkg syscall (netbsd-arm64-cgo), const IPV6_PORTRANGE_DEFAULT = 0 +pkg syscall (netbsd-arm64-cgo), const IPV6_PORTRANGE_DEFAULT ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_PORTRANGE_HIGH = 1 +pkg syscall (netbsd-arm64-cgo), const IPV6_PORTRANGE_HIGH ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_PORTRANGE ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_PORTRANGE_LOW = 2 +pkg syscall (netbsd-arm64-cgo), const IPV6_PORTRANGE_LOW ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_RECVDSTOPTS = 40 +pkg syscall (netbsd-arm64-cgo), const IPV6_RECVDSTOPTS ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_RECVHOPLIMIT = 37 +pkg syscall (netbsd-arm64-cgo), const IPV6_RECVHOPLIMIT ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_RECVHOPOPTS = 39 +pkg syscall (netbsd-arm64-cgo), const IPV6_RECVHOPOPTS ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_RECVPATHMTU = 43 +pkg syscall (netbsd-arm64-cgo), const IPV6_RECVPATHMTU ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_RECVPKTINFO = 36 +pkg syscall (netbsd-arm64-cgo), const IPV6_RECVPKTINFO ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_RECVRTHDR = 38 +pkg syscall (netbsd-arm64-cgo), const IPV6_RECVRTHDR ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_RECVTCLASS = 57 +pkg syscall (netbsd-arm64-cgo), const IPV6_RECVTCLASS ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_RTHDR = 51 +pkg syscall (netbsd-arm64-cgo), const IPV6_RTHDRDSTOPTS = 35 +pkg syscall (netbsd-arm64-cgo), const IPV6_RTHDRDSTOPTS ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_RTHDR ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_RTHDR_LOOSE = 0 +pkg syscall (netbsd-arm64-cgo), const IPV6_RTHDR_LOOSE ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_RTHDR_STRICT = 1 +pkg syscall (netbsd-arm64-cgo), const IPV6_RTHDR_STRICT ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_RTHDR_TYPE_0 = 0 +pkg syscall (netbsd-arm64-cgo), const IPV6_RTHDR_TYPE_0 ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_SOCKOPT_RESERVED1 = 3 +pkg syscall (netbsd-arm64-cgo), const IPV6_SOCKOPT_RESERVED1 ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_TCLASS = 61 +pkg syscall (netbsd-arm64-cgo), const IPV6_TCLASS ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_UNICAST_HOPS = 4 +pkg syscall (netbsd-arm64-cgo), const IPV6_USE_MIN_MTU = 42 +pkg syscall (netbsd-arm64-cgo), const IPV6_USE_MIN_MTU ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_V6ONLY = 27 +pkg syscall (netbsd-arm64-cgo), const IPV6_VERSION = 96 +pkg syscall (netbsd-arm64-cgo), const IPV6_VERSION ideal-int +pkg syscall (netbsd-arm64-cgo), const IPV6_VERSION_MASK = 240 +pkg syscall (netbsd-arm64-cgo), const IPV6_VERSION_MASK ideal-int +pkg syscall (netbsd-arm64-cgo), const ISIG = 128 +pkg syscall (netbsd-arm64-cgo), const ISIG ideal-int +pkg syscall (netbsd-arm64-cgo), const ISTRIP = 32 +pkg syscall (netbsd-arm64-cgo), const ISTRIP ideal-int +pkg syscall (netbsd-arm64-cgo), const IXANY = 2048 +pkg syscall (netbsd-arm64-cgo), const IXANY ideal-int +pkg syscall (netbsd-arm64-cgo), const IXOFF = 1024 +pkg syscall (netbsd-arm64-cgo), const IXOFF ideal-int +pkg syscall (netbsd-arm64-cgo), const IXON = 512 +pkg syscall (netbsd-arm64-cgo), const IXON ideal-int +pkg syscall (netbsd-arm64-cgo), const LOCK_EX = 2 +pkg syscall (netbsd-arm64-cgo), const LOCK_EX ideal-int +pkg syscall (netbsd-arm64-cgo), const LOCK_NB = 4 +pkg syscall (netbsd-arm64-cgo), const LOCK_NB ideal-int +pkg syscall (netbsd-arm64-cgo), const LOCK_SH = 1 +pkg syscall (netbsd-arm64-cgo), const LOCK_SH ideal-int +pkg syscall (netbsd-arm64-cgo), const LOCK_UN = 8 +pkg syscall (netbsd-arm64-cgo), const LOCK_UN ideal-int +pkg syscall (netbsd-arm64-cgo), const MADV_DONTNEED = 4 +pkg syscall (netbsd-arm64-cgo), const MADV_DONTNEED ideal-int +pkg syscall (netbsd-arm64-cgo), const MADV_FREE = 6 +pkg syscall (netbsd-arm64-cgo), const MADV_FREE ideal-int +pkg syscall (netbsd-arm64-cgo), const MADV_NORMAL = 0 +pkg syscall (netbsd-arm64-cgo), const MADV_NORMAL ideal-int +pkg syscall (netbsd-arm64-cgo), const MADV_RANDOM = 1 +pkg syscall (netbsd-arm64-cgo), const MADV_RANDOM ideal-int +pkg syscall (netbsd-arm64-cgo), const MADV_SEQUENTIAL = 2 +pkg syscall (netbsd-arm64-cgo), const MADV_SEQUENTIAL ideal-int +pkg syscall (netbsd-arm64-cgo), const MADV_SPACEAVAIL = 5 +pkg syscall (netbsd-arm64-cgo), const MADV_SPACEAVAIL ideal-int +pkg syscall (netbsd-arm64-cgo), const MADV_WILLNEED = 3 +pkg syscall (netbsd-arm64-cgo), const MADV_WILLNEED ideal-int +pkg syscall (netbsd-arm64-cgo), const MAP_ALIGNMENT_16MB = 402653184 +pkg syscall (netbsd-arm64-cgo), const MAP_ALIGNMENT_16MB ideal-int +pkg syscall (netbsd-arm64-cgo), const MAP_ALIGNMENT_1TB = 671088640 +pkg syscall (netbsd-arm64-cgo), const MAP_ALIGNMENT_1TB ideal-int +pkg syscall (netbsd-arm64-cgo), const MAP_ALIGNMENT_256TB = 805306368 +pkg syscall (netbsd-arm64-cgo), const MAP_ALIGNMENT_256TB ideal-int +pkg syscall (netbsd-arm64-cgo), const MAP_ALIGNMENT_4GB = 536870912 +pkg syscall (netbsd-arm64-cgo), const MAP_ALIGNMENT_4GB ideal-int +pkg syscall (netbsd-arm64-cgo), const MAP_ALIGNMENT_64KB = 268435456 +pkg syscall (netbsd-arm64-cgo), const MAP_ALIGNMENT_64KB ideal-int +pkg syscall (netbsd-arm64-cgo), const MAP_ALIGNMENT_64PB = 939524096 +pkg syscall (netbsd-arm64-cgo), const MAP_ALIGNMENT_64PB ideal-int +pkg syscall (netbsd-arm64-cgo), const MAP_ALIGNMENT_MASK = -16777216 +pkg syscall (netbsd-arm64-cgo), const MAP_ALIGNMENT_MASK ideal-int +pkg syscall (netbsd-arm64-cgo), const MAP_ALIGNMENT_SHIFT = 24 +pkg syscall (netbsd-arm64-cgo), const MAP_ALIGNMENT_SHIFT ideal-int +pkg syscall (netbsd-arm64-cgo), const MAP_ANON = 4096 +pkg syscall (netbsd-arm64-cgo), const MAP_ANON ideal-int +pkg syscall (netbsd-arm64-cgo), const MAP_FILE = 0 +pkg syscall (netbsd-arm64-cgo), const MAP_FILE ideal-int +pkg syscall (netbsd-arm64-cgo), const MAP_FIXED = 16 +pkg syscall (netbsd-arm64-cgo), const MAP_FIXED ideal-int +pkg syscall (netbsd-arm64-cgo), const MAP_HASSEMAPHORE = 512 +pkg syscall (netbsd-arm64-cgo), const MAP_HASSEMAPHORE ideal-int +pkg syscall (netbsd-arm64-cgo), const MAP_INHERIT = 128 +pkg syscall (netbsd-arm64-cgo), const MAP_INHERIT_COPY = 1 +pkg syscall (netbsd-arm64-cgo), const MAP_INHERIT_COPY ideal-int +pkg syscall (netbsd-arm64-cgo), const MAP_INHERIT_DEFAULT = 1 +pkg syscall (netbsd-arm64-cgo), const MAP_INHERIT_DEFAULT ideal-int +pkg syscall (netbsd-arm64-cgo), const MAP_INHERIT_DONATE_COPY = 3 +pkg syscall (netbsd-arm64-cgo), const MAP_INHERIT_DONATE_COPY ideal-int +pkg syscall (netbsd-arm64-cgo), const MAP_INHERIT ideal-int +pkg syscall (netbsd-arm64-cgo), const MAP_INHERIT_NONE = 2 +pkg syscall (netbsd-arm64-cgo), const MAP_INHERIT_NONE ideal-int +pkg syscall (netbsd-arm64-cgo), const MAP_INHERIT_SHARE = 0 +pkg syscall (netbsd-arm64-cgo), const MAP_INHERIT_SHARE ideal-int +pkg syscall (netbsd-arm64-cgo), const MAP_NORESERVE = 64 +pkg syscall (netbsd-arm64-cgo), const MAP_NORESERVE ideal-int +pkg syscall (netbsd-arm64-cgo), const MAP_PRIVATE = 2 +pkg syscall (netbsd-arm64-cgo), const MAP_PRIVATE ideal-int +pkg syscall (netbsd-arm64-cgo), const MAP_RENAME = 32 +pkg syscall (netbsd-arm64-cgo), const MAP_RENAME ideal-int +pkg syscall (netbsd-arm64-cgo), const MAP_SHARED = 1 +pkg syscall (netbsd-arm64-cgo), const MAP_SHARED ideal-int +pkg syscall (netbsd-arm64-cgo), const MAP_STACK = 8192 +pkg syscall (netbsd-arm64-cgo), const MAP_STACK ideal-int +pkg syscall (netbsd-arm64-cgo), const MAP_TRYFIXED = 1024 +pkg syscall (netbsd-arm64-cgo), const MAP_TRYFIXED ideal-int +pkg syscall (netbsd-arm64-cgo), const MAP_WIRED = 2048 +pkg syscall (netbsd-arm64-cgo), const MAP_WIRED ideal-int +pkg syscall (netbsd-arm64-cgo), const MCL_CURRENT = 1 +pkg syscall (netbsd-arm64-cgo), const MCL_CURRENT ideal-int +pkg syscall (netbsd-arm64-cgo), const MCL_FUTURE = 2 +pkg syscall (netbsd-arm64-cgo), const MCL_FUTURE ideal-int +pkg syscall (netbsd-arm64-cgo), const MS_ASYNC = 1 +pkg syscall (netbsd-arm64-cgo), const MS_ASYNC ideal-int +pkg syscall (netbsd-arm64-cgo), const MSG_BCAST = 256 +pkg syscall (netbsd-arm64-cgo), const MSG_BCAST ideal-int +pkg syscall (netbsd-arm64-cgo), const MSG_CMSG_CLOEXEC = 2048 +pkg syscall (netbsd-arm64-cgo), const MSG_CMSG_CLOEXEC ideal-int +pkg syscall (netbsd-arm64-cgo), const MSG_CONTROLMBUF = 33554432 +pkg syscall (netbsd-arm64-cgo), const MSG_CONTROLMBUF ideal-int +pkg syscall (netbsd-arm64-cgo), const MSG_CTRUNC = 32 +pkg syscall (netbsd-arm64-cgo), const MSG_CTRUNC ideal-int +pkg syscall (netbsd-arm64-cgo), const MSG_DONTROUTE = 4 +pkg syscall (netbsd-arm64-cgo), const MSG_DONTROUTE ideal-int +pkg syscall (netbsd-arm64-cgo), const MSG_DONTWAIT = 128 +pkg syscall (netbsd-arm64-cgo), const MSG_DONTWAIT ideal-int +pkg syscall (netbsd-arm64-cgo), const MSG_EOR = 8 +pkg syscall (netbsd-arm64-cgo), const MSG_EOR ideal-int +pkg syscall (netbsd-arm64-cgo), const MSG_IOVUSRSPACE = 67108864 +pkg syscall (netbsd-arm64-cgo), const MSG_IOVUSRSPACE ideal-int +pkg syscall (netbsd-arm64-cgo), const MSG_LENUSRSPACE = 134217728 +pkg syscall (netbsd-arm64-cgo), const MSG_LENUSRSPACE ideal-int +pkg syscall (netbsd-arm64-cgo), const MSG_MCAST = 512 +pkg syscall (netbsd-arm64-cgo), const MSG_MCAST ideal-int +pkg syscall (netbsd-arm64-cgo), const MSG_NAMEMBUF = 16777216 +pkg syscall (netbsd-arm64-cgo), const MSG_NAMEMBUF ideal-int +pkg syscall (netbsd-arm64-cgo), const MSG_NBIO = 4096 +pkg syscall (netbsd-arm64-cgo), const MSG_NBIO ideal-int +pkg syscall (netbsd-arm64-cgo), const MSG_NOSIGNAL = 1024 +pkg syscall (netbsd-arm64-cgo), const MSG_NOSIGNAL ideal-int +pkg syscall (netbsd-arm64-cgo), const MSG_OOB = 1 +pkg syscall (netbsd-arm64-cgo), const MSG_OOB ideal-int +pkg syscall (netbsd-arm64-cgo), const MSG_PEEK = 2 +pkg syscall (netbsd-arm64-cgo), const MSG_PEEK ideal-int +pkg syscall (netbsd-arm64-cgo), const MSG_TRUNC = 16 +pkg syscall (netbsd-arm64-cgo), const MSG_TRUNC ideal-int +pkg syscall (netbsd-arm64-cgo), const MSG_USERFLAGS = 16777215 +pkg syscall (netbsd-arm64-cgo), const MSG_USERFLAGS ideal-int +pkg syscall (netbsd-arm64-cgo), const MSG_WAITALL = 64 +pkg syscall (netbsd-arm64-cgo), const MSG_WAITALL ideal-int +pkg syscall (netbsd-arm64-cgo), const MS_INVALIDATE = 2 +pkg syscall (netbsd-arm64-cgo), const MS_INVALIDATE ideal-int +pkg syscall (netbsd-arm64-cgo), const MS_SYNC = 4 +pkg syscall (netbsd-arm64-cgo), const MS_SYNC ideal-int +pkg syscall (netbsd-arm64-cgo), const NAME_MAX = 511 +pkg syscall (netbsd-arm64-cgo), const NAME_MAX ideal-int +pkg syscall (netbsd-arm64-cgo), const NET_RT_DUMP = 1 +pkg syscall (netbsd-arm64-cgo), const NET_RT_DUMP ideal-int +pkg syscall (netbsd-arm64-cgo), const NET_RT_FLAGS = 2 +pkg syscall (netbsd-arm64-cgo), const NET_RT_FLAGS ideal-int +pkg syscall (netbsd-arm64-cgo), const NET_RT_IFLIST = 5 +pkg syscall (netbsd-arm64-cgo), const NET_RT_IFLIST ideal-int +pkg syscall (netbsd-arm64-cgo), const NET_RT_MAXID = 6 +pkg syscall (netbsd-arm64-cgo), const NET_RT_MAXID ideal-int +pkg syscall (netbsd-arm64-cgo), const NET_RT_OIFLIST = 4 +pkg syscall (netbsd-arm64-cgo), const NET_RT_OIFLIST ideal-int +pkg syscall (netbsd-arm64-cgo), const NET_RT_OOIFLIST = 3 +pkg syscall (netbsd-arm64-cgo), const NET_RT_OOIFLIST ideal-int +pkg syscall (netbsd-arm64-cgo), const NOFLSH = 2147483648 +pkg syscall (netbsd-arm64-cgo), const NOFLSH ideal-int +pkg syscall (netbsd-arm64-cgo), const NOTE_ATTRIB = 8 +pkg syscall (netbsd-arm64-cgo), const NOTE_ATTRIB ideal-int +pkg syscall (netbsd-arm64-cgo), const NOTE_CHILD = 4 +pkg syscall (netbsd-arm64-cgo), const NOTE_CHILD ideal-int +pkg syscall (netbsd-arm64-cgo), const NOTE_DELETE = 1 +pkg syscall (netbsd-arm64-cgo), const NOTE_DELETE ideal-int +pkg syscall (netbsd-arm64-cgo), const NOTE_EXEC = 536870912 +pkg syscall (netbsd-arm64-cgo), const NOTE_EXEC ideal-int +pkg syscall (netbsd-arm64-cgo), const NOTE_EXIT = 2147483648 +pkg syscall (netbsd-arm64-cgo), const NOTE_EXIT ideal-int +pkg syscall (netbsd-arm64-cgo), const NOTE_EXTEND = 4 +pkg syscall (netbsd-arm64-cgo), const NOTE_EXTEND ideal-int +pkg syscall (netbsd-arm64-cgo), const NOTE_FORK = 1073741824 +pkg syscall (netbsd-arm64-cgo), const NOTE_FORK ideal-int +pkg syscall (netbsd-arm64-cgo), const NOTE_LINK = 16 +pkg syscall (netbsd-arm64-cgo), const NOTE_LINK ideal-int +pkg syscall (netbsd-arm64-cgo), const NOTE_LOWAT = 1 +pkg syscall (netbsd-arm64-cgo), const NOTE_LOWAT ideal-int +pkg syscall (netbsd-arm64-cgo), const NOTE_PCTRLMASK = 4026531840 +pkg syscall (netbsd-arm64-cgo), const NOTE_PCTRLMASK ideal-int +pkg syscall (netbsd-arm64-cgo), const NOTE_PDATAMASK = 1048575 +pkg syscall (netbsd-arm64-cgo), const NOTE_PDATAMASK ideal-int +pkg syscall (netbsd-arm64-cgo), const NOTE_RENAME = 32 +pkg syscall (netbsd-arm64-cgo), const NOTE_RENAME ideal-int +pkg syscall (netbsd-arm64-cgo), const NOTE_REVOKE = 64 +pkg syscall (netbsd-arm64-cgo), const NOTE_REVOKE ideal-int +pkg syscall (netbsd-arm64-cgo), const NOTE_TRACK = 1 +pkg syscall (netbsd-arm64-cgo), const NOTE_TRACKERR = 2 +pkg syscall (netbsd-arm64-cgo), const NOTE_TRACKERR ideal-int +pkg syscall (netbsd-arm64-cgo), const NOTE_TRACK ideal-int +pkg syscall (netbsd-arm64-cgo), const NOTE_WRITE = 2 +pkg syscall (netbsd-arm64-cgo), const NOTE_WRITE ideal-int +pkg syscall (netbsd-arm64-cgo), const O_ACCMODE = 3 +pkg syscall (netbsd-arm64-cgo), const O_ACCMODE ideal-int +pkg syscall (netbsd-arm64-cgo), const O_ALT_IO = 262144 +pkg syscall (netbsd-arm64-cgo), const O_ALT_IO ideal-int +pkg syscall (netbsd-arm64-cgo), const O_APPEND = 8 +pkg syscall (netbsd-arm64-cgo), const O_ASYNC = 64 +pkg syscall (netbsd-arm64-cgo), const O_CLOEXEC = 4194304 +pkg syscall (netbsd-arm64-cgo), const O_CREAT = 512 +pkg syscall (netbsd-arm64-cgo), const OCRNL = 16 +pkg syscall (netbsd-arm64-cgo), const OCRNL ideal-int +pkg syscall (netbsd-arm64-cgo), const O_DIRECT = 524288 +pkg syscall (netbsd-arm64-cgo), const O_DIRECT ideal-int +pkg syscall (netbsd-arm64-cgo), const O_DIRECTORY = 2097152 +pkg syscall (netbsd-arm64-cgo), const O_DIRECTORY ideal-int +pkg syscall (netbsd-arm64-cgo), const O_DSYNC = 65536 +pkg syscall (netbsd-arm64-cgo), const O_DSYNC ideal-int +pkg syscall (netbsd-arm64-cgo), const O_EXCL = 2048 +pkg syscall (netbsd-arm64-cgo), const O_EXLOCK = 32 +pkg syscall (netbsd-arm64-cgo), const O_EXLOCK ideal-int +pkg syscall (netbsd-arm64-cgo), const OFIOGETBMAP = 3221513850 +pkg syscall (netbsd-arm64-cgo), const OFIOGETBMAP ideal-int +pkg syscall (netbsd-arm64-cgo), const O_FSYNC = 128 +pkg syscall (netbsd-arm64-cgo), const O_FSYNC ideal-int +pkg syscall (netbsd-arm64-cgo), const O_NDELAY = 4 +pkg syscall (netbsd-arm64-cgo), const O_NDELAY ideal-int +pkg syscall (netbsd-arm64-cgo), const ONLCR = 2 +pkg syscall (netbsd-arm64-cgo), const ONLCR ideal-int +pkg syscall (netbsd-arm64-cgo), const ONLRET = 64 +pkg syscall (netbsd-arm64-cgo), const ONLRET ideal-int +pkg syscall (netbsd-arm64-cgo), const ONOCR = 32 +pkg syscall (netbsd-arm64-cgo), const ONOCR ideal-int +pkg syscall (netbsd-arm64-cgo), const O_NOCTTY = 32768 +pkg syscall (netbsd-arm64-cgo), const ONOEOT = 8 +pkg syscall (netbsd-arm64-cgo), const ONOEOT ideal-int +pkg syscall (netbsd-arm64-cgo), const O_NOFOLLOW = 256 +pkg syscall (netbsd-arm64-cgo), const O_NOFOLLOW ideal-int +pkg syscall (netbsd-arm64-cgo), const O_NONBLOCK = 4 +pkg syscall (netbsd-arm64-cgo), const O_NOSIGPIPE = 16777216 +pkg syscall (netbsd-arm64-cgo), const O_NOSIGPIPE ideal-int +pkg syscall (netbsd-arm64-cgo), const OPOST = 1 +pkg syscall (netbsd-arm64-cgo), const OPOST ideal-int +pkg syscall (netbsd-arm64-cgo), const O_RSYNC = 131072 +pkg syscall (netbsd-arm64-cgo), const O_RSYNC ideal-int +pkg syscall (netbsd-arm64-cgo), const O_SHLOCK = 16 +pkg syscall (netbsd-arm64-cgo), const O_SHLOCK ideal-int +pkg syscall (netbsd-arm64-cgo), const O_SYNC = 128 +pkg syscall (netbsd-arm64-cgo), const O_TRUNC = 1024 +pkg syscall (netbsd-arm64-cgo), const PARENB = 4096 +pkg syscall (netbsd-arm64-cgo), const PARENB ideal-int +pkg syscall (netbsd-arm64-cgo), const PARMRK = 8 +pkg syscall (netbsd-arm64-cgo), const PARMRK ideal-int +pkg syscall (netbsd-arm64-cgo), const PARODD = 8192 +pkg syscall (netbsd-arm64-cgo), const PARODD ideal-int +pkg syscall (netbsd-arm64-cgo), const PENDIN = 536870912 +pkg syscall (netbsd-arm64-cgo), const PENDIN ideal-int +pkg syscall (netbsd-arm64-cgo), const PRI_IOFLUSH = 124 +pkg syscall (netbsd-arm64-cgo), const PRI_IOFLUSH ideal-int +pkg syscall (netbsd-arm64-cgo), const PRIO_PGRP = 1 +pkg syscall (netbsd-arm64-cgo), const PRIO_PGRP ideal-int +pkg syscall (netbsd-arm64-cgo), const PRIO_PROCESS = 0 +pkg syscall (netbsd-arm64-cgo), const PRIO_PROCESS ideal-int +pkg syscall (netbsd-arm64-cgo), const PRIO_USER = 2 +pkg syscall (netbsd-arm64-cgo), const PRIO_USER ideal-int +pkg syscall (netbsd-arm64-cgo), const PROT_EXEC = 4 +pkg syscall (netbsd-arm64-cgo), const PROT_EXEC ideal-int +pkg syscall (netbsd-arm64-cgo), const PROT_NONE = 0 +pkg syscall (netbsd-arm64-cgo), const PROT_NONE ideal-int +pkg syscall (netbsd-arm64-cgo), const PROT_READ = 1 +pkg syscall (netbsd-arm64-cgo), const PROT_READ ideal-int +pkg syscall (netbsd-arm64-cgo), const PROT_WRITE = 2 +pkg syscall (netbsd-arm64-cgo), const PROT_WRITE ideal-int +pkg syscall (netbsd-arm64-cgo), const PTRACE_CONT = 7 +pkg syscall (netbsd-arm64-cgo), const PTRACE_CONT ideal-int +pkg syscall (netbsd-arm64-cgo), const PTRACE_KILL = 8 +pkg syscall (netbsd-arm64-cgo), const PTRACE_KILL ideal-int +pkg syscall (netbsd-arm64-cgo), const PTRACE_TRACEME = 0 +pkg syscall (netbsd-arm64-cgo), const PTRACE_TRACEME ideal-int +pkg syscall (netbsd-arm64-cgo), const RLIM_INFINITY = 9223372036854775807 +pkg syscall (netbsd-arm64-cgo), const RLIM_INFINITY ideal-int +pkg syscall (netbsd-arm64-cgo), const RLIMIT_AS = 10 +pkg syscall (netbsd-arm64-cgo), const RLIMIT_AS ideal-int +pkg syscall (netbsd-arm64-cgo), const RLIMIT_CORE = 4 +pkg syscall (netbsd-arm64-cgo), const RLIMIT_CORE ideal-int +pkg syscall (netbsd-arm64-cgo), const RLIMIT_CPU = 0 +pkg syscall (netbsd-arm64-cgo), const RLIMIT_CPU ideal-int +pkg syscall (netbsd-arm64-cgo), const RLIMIT_DATA = 2 +pkg syscall (netbsd-arm64-cgo), const RLIMIT_DATA ideal-int +pkg syscall (netbsd-arm64-cgo), const RLIMIT_FSIZE = 1 +pkg syscall (netbsd-arm64-cgo), const RLIMIT_FSIZE ideal-int +pkg syscall (netbsd-arm64-cgo), const RLIMIT_NOFILE = 8 +pkg syscall (netbsd-arm64-cgo), const RLIMIT_NOFILE ideal-int +pkg syscall (netbsd-arm64-cgo), const RLIMIT_STACK = 3 +pkg syscall (netbsd-arm64-cgo), const RLIMIT_STACK ideal-int +pkg syscall (netbsd-arm64-cgo), const RTA_AUTHOR = 64 +pkg syscall (netbsd-arm64-cgo), const RTA_AUTHOR ideal-int +pkg syscall (netbsd-arm64-cgo), const RTA_BRD = 128 +pkg syscall (netbsd-arm64-cgo), const RTA_BRD ideal-int +pkg syscall (netbsd-arm64-cgo), const RTA_DST = 1 +pkg syscall (netbsd-arm64-cgo), const RTA_DST ideal-int +pkg syscall (netbsd-arm64-cgo), const RTA_GATEWAY = 2 +pkg syscall (netbsd-arm64-cgo), const RTA_GATEWAY ideal-int +pkg syscall (netbsd-arm64-cgo), const RTA_GENMASK = 8 +pkg syscall (netbsd-arm64-cgo), const RTA_GENMASK ideal-int +pkg syscall (netbsd-arm64-cgo), const RTA_IFA = 32 +pkg syscall (netbsd-arm64-cgo), const RTA_IFA ideal-int +pkg syscall (netbsd-arm64-cgo), const RTA_IFP = 16 +pkg syscall (netbsd-arm64-cgo), const RTA_IFP ideal-int +pkg syscall (netbsd-arm64-cgo), const RTA_NETMASK = 4 +pkg syscall (netbsd-arm64-cgo), const RTA_NETMASK ideal-int +pkg syscall (netbsd-arm64-cgo), const RTA_TAG = 256 +pkg syscall (netbsd-arm64-cgo), const RTA_TAG ideal-int +pkg syscall (netbsd-arm64-cgo), const RTAX_AUTHOR = 6 +pkg syscall (netbsd-arm64-cgo), const RTAX_AUTHOR ideal-int +pkg syscall (netbsd-arm64-cgo), const RTAX_BRD = 7 +pkg syscall (netbsd-arm64-cgo), const RTAX_BRD ideal-int +pkg syscall (netbsd-arm64-cgo), const RTAX_DST = 0 +pkg syscall (netbsd-arm64-cgo), const RTAX_DST ideal-int +pkg syscall (netbsd-arm64-cgo), const RTAX_GATEWAY = 1 +pkg syscall (netbsd-arm64-cgo), const RTAX_GATEWAY ideal-int +pkg syscall (netbsd-arm64-cgo), const RTAX_GENMASK = 3 +pkg syscall (netbsd-arm64-cgo), const RTAX_GENMASK ideal-int +pkg syscall (netbsd-arm64-cgo), const RTAX_IFA = 5 +pkg syscall (netbsd-arm64-cgo), const RTAX_IFA ideal-int +pkg syscall (netbsd-arm64-cgo), const RTAX_IFP = 4 +pkg syscall (netbsd-arm64-cgo), const RTAX_IFP ideal-int +pkg syscall (netbsd-arm64-cgo), const RTAX_MAX = 9 +pkg syscall (netbsd-arm64-cgo), const RTAX_MAX ideal-int +pkg syscall (netbsd-arm64-cgo), const RTAX_NETMASK = 2 +pkg syscall (netbsd-arm64-cgo), const RTAX_NETMASK ideal-int +pkg syscall (netbsd-arm64-cgo), const RTAX_TAG = 8 +pkg syscall (netbsd-arm64-cgo), const RTAX_TAG ideal-int +pkg syscall (netbsd-arm64-cgo), const RTF_ANNOUNCE = 131072 +pkg syscall (netbsd-arm64-cgo), const RTF_ANNOUNCE ideal-int +pkg syscall (netbsd-arm64-cgo), const RTF_BLACKHOLE = 4096 +pkg syscall (netbsd-arm64-cgo), const RTF_BLACKHOLE ideal-int +pkg syscall (netbsd-arm64-cgo), const RTF_CLONED = 8192 +pkg syscall (netbsd-arm64-cgo), const RTF_CLONED ideal-int +pkg syscall (netbsd-arm64-cgo), const RTF_CLONING = 256 +pkg syscall (netbsd-arm64-cgo), const RTF_CLONING ideal-int +pkg syscall (netbsd-arm64-cgo), const RTF_DONE = 64 +pkg syscall (netbsd-arm64-cgo), const RTF_DONE ideal-int +pkg syscall (netbsd-arm64-cgo), const RTF_DYNAMIC = 16 +pkg syscall (netbsd-arm64-cgo), const RTF_DYNAMIC ideal-int +pkg syscall (netbsd-arm64-cgo), const RTF_GATEWAY = 2 +pkg syscall (netbsd-arm64-cgo), const RTF_GATEWAY ideal-int +pkg syscall (netbsd-arm64-cgo), const RTF_HOST = 4 +pkg syscall (netbsd-arm64-cgo), const RTF_HOST ideal-int +pkg syscall (netbsd-arm64-cgo), const RTF_LLINFO = 1024 +pkg syscall (netbsd-arm64-cgo), const RTF_LLINFO ideal-int +pkg syscall (netbsd-arm64-cgo), const RTF_MASK = 128 +pkg syscall (netbsd-arm64-cgo), const RTF_MASK ideal-int +pkg syscall (netbsd-arm64-cgo), const RTF_MODIFIED = 32 +pkg syscall (netbsd-arm64-cgo), const RTF_MODIFIED ideal-int +pkg syscall (netbsd-arm64-cgo), const RTF_PROTO1 = 32768 +pkg syscall (netbsd-arm64-cgo), const RTF_PROTO1 ideal-int +pkg syscall (netbsd-arm64-cgo), const RTF_PROTO2 = 16384 +pkg syscall (netbsd-arm64-cgo), const RTF_PROTO2 ideal-int +pkg syscall (netbsd-arm64-cgo), const RTF_REJECT = 8 +pkg syscall (netbsd-arm64-cgo), const RTF_REJECT ideal-int +pkg syscall (netbsd-arm64-cgo), const RTF_SRC = 65536 +pkg syscall (netbsd-arm64-cgo), const RTF_SRC ideal-int +pkg syscall (netbsd-arm64-cgo), const RTF_STATIC = 2048 +pkg syscall (netbsd-arm64-cgo), const RTF_STATIC ideal-int +pkg syscall (netbsd-arm64-cgo), const RTF_UP = 1 +pkg syscall (netbsd-arm64-cgo), const RTF_UP ideal-int +pkg syscall (netbsd-arm64-cgo), const RTF_XRESOLVE = 512 +pkg syscall (netbsd-arm64-cgo), const RTF_XRESOLVE ideal-int +pkg syscall (netbsd-arm64-cgo), const RTM_ADD = 1 +pkg syscall (netbsd-arm64-cgo), const RTM_ADD ideal-int +pkg syscall (netbsd-arm64-cgo), const RTM_CHANGE = 3 +pkg syscall (netbsd-arm64-cgo), const RTM_CHANGE ideal-int +pkg syscall (netbsd-arm64-cgo), const RTM_CHGADDR = 21 +pkg syscall (netbsd-arm64-cgo), const RTM_CHGADDR ideal-int +pkg syscall (netbsd-arm64-cgo), const RTM_DELADDR = 13 +pkg syscall (netbsd-arm64-cgo), const RTM_DELADDR ideal-int +pkg syscall (netbsd-arm64-cgo), const RTM_DELETE = 2 +pkg syscall (netbsd-arm64-cgo), const RTM_DELETE ideal-int +pkg syscall (netbsd-arm64-cgo), const RTM_GET = 4 +pkg syscall (netbsd-arm64-cgo), const RTM_GET ideal-int +pkg syscall (netbsd-arm64-cgo), const RTM_IEEE80211 = 17 +pkg syscall (netbsd-arm64-cgo), const RTM_IEEE80211 ideal-int +pkg syscall (netbsd-arm64-cgo), const RTM_IFANNOUNCE = 16 +pkg syscall (netbsd-arm64-cgo), const RTM_IFANNOUNCE ideal-int +pkg syscall (netbsd-arm64-cgo), const RTM_IFINFO = 20 +pkg syscall (netbsd-arm64-cgo), const RTM_IFINFO ideal-int +pkg syscall (netbsd-arm64-cgo), const RTM_LLINFO_UPD = 19 +pkg syscall (netbsd-arm64-cgo), const RTM_LLINFO_UPD ideal-int +pkg syscall (netbsd-arm64-cgo), const RTM_LOCK = 8 +pkg syscall (netbsd-arm64-cgo), const RTM_LOCK ideal-int +pkg syscall (netbsd-arm64-cgo), const RTM_LOSING = 5 +pkg syscall (netbsd-arm64-cgo), const RTM_LOSING ideal-int +pkg syscall (netbsd-arm64-cgo), const RTM_MISS = 7 +pkg syscall (netbsd-arm64-cgo), const RTM_MISS ideal-int +pkg syscall (netbsd-arm64-cgo), const RTM_NEWADDR = 12 +pkg syscall (netbsd-arm64-cgo), const RTM_NEWADDR ideal-int +pkg syscall (netbsd-arm64-cgo), const RTM_OIFINFO = 15 +pkg syscall (netbsd-arm64-cgo), const RTM_OIFINFO ideal-int +pkg syscall (netbsd-arm64-cgo), const RTM_OLDADD = 9 +pkg syscall (netbsd-arm64-cgo), const RTM_OLDADD ideal-int +pkg syscall (netbsd-arm64-cgo), const RTM_OLDDEL = 10 +pkg syscall (netbsd-arm64-cgo), const RTM_OLDDEL ideal-int +pkg syscall (netbsd-arm64-cgo), const RTM_OOIFINFO = 14 +pkg syscall (netbsd-arm64-cgo), const RTM_OOIFINFO ideal-int +pkg syscall (netbsd-arm64-cgo), const RTM_REDIRECT = 6 +pkg syscall (netbsd-arm64-cgo), const RTM_REDIRECT ideal-int +pkg syscall (netbsd-arm64-cgo), const RTM_RESOLVE = 11 +pkg syscall (netbsd-arm64-cgo), const RTM_RESOLVE ideal-int +pkg syscall (netbsd-arm64-cgo), const RTM_RTTUNIT = 1000000 +pkg syscall (netbsd-arm64-cgo), const RTM_RTTUNIT ideal-int +pkg syscall (netbsd-arm64-cgo), const RTM_SETGATE = 18 +pkg syscall (netbsd-arm64-cgo), const RTM_SETGATE ideal-int +pkg syscall (netbsd-arm64-cgo), const RTM_VERSION = 4 +pkg syscall (netbsd-arm64-cgo), const RTM_VERSION ideal-int +pkg syscall (netbsd-arm64-cgo), const RTV_EXPIRE = 4 +pkg syscall (netbsd-arm64-cgo), const RTV_EXPIRE ideal-int +pkg syscall (netbsd-arm64-cgo), const RTV_HOPCOUNT = 2 +pkg syscall (netbsd-arm64-cgo), const RTV_HOPCOUNT ideal-int +pkg syscall (netbsd-arm64-cgo), const RTV_MTU = 1 +pkg syscall (netbsd-arm64-cgo), const RTV_MTU ideal-int +pkg syscall (netbsd-arm64-cgo), const RTV_RPIPE = 8 +pkg syscall (netbsd-arm64-cgo), const RTV_RPIPE ideal-int +pkg syscall (netbsd-arm64-cgo), const RTV_RTT = 64 +pkg syscall (netbsd-arm64-cgo), const RTV_RTT ideal-int +pkg syscall (netbsd-arm64-cgo), const RTV_RTTVAR = 128 +pkg syscall (netbsd-arm64-cgo), const RTV_RTTVAR ideal-int +pkg syscall (netbsd-arm64-cgo), const RTV_SPIPE = 16 +pkg syscall (netbsd-arm64-cgo), const RTV_SPIPE ideal-int +pkg syscall (netbsd-arm64-cgo), const RTV_SSTHRESH = 32 +pkg syscall (netbsd-arm64-cgo), const RTV_SSTHRESH ideal-int +pkg syscall (netbsd-arm64-cgo), const RUSAGE_CHILDREN = -1 +pkg syscall (netbsd-arm64-cgo), const RUSAGE_CHILDREN ideal-int +pkg syscall (netbsd-arm64-cgo), const RUSAGE_SELF = 0 +pkg syscall (netbsd-arm64-cgo), const RUSAGE_SELF ideal-int +pkg syscall (netbsd-arm64-cgo), const S_ARCH1 = 65536 +pkg syscall (netbsd-arm64-cgo), const S_ARCH1 ideal-int +pkg syscall (netbsd-arm64-cgo), const S_ARCH2 = 131072 +pkg syscall (netbsd-arm64-cgo), const S_ARCH2 ideal-int +pkg syscall (netbsd-arm64-cgo), const S_BLKSIZE = 512 +pkg syscall (netbsd-arm64-cgo), const S_BLKSIZE ideal-int +pkg syscall (netbsd-arm64-cgo), const SCM_CREDS = 4 +pkg syscall (netbsd-arm64-cgo), const SCM_CREDS ideal-int +pkg syscall (netbsd-arm64-cgo), const SCM_RIGHTS = 1 +pkg syscall (netbsd-arm64-cgo), const SCM_RIGHTS ideal-int +pkg syscall (netbsd-arm64-cgo), const SCM_TIMESTAMP = 8 +pkg syscall (netbsd-arm64-cgo), const SCM_TIMESTAMP ideal-int +pkg syscall (netbsd-arm64-cgo), const S_IEXEC = 64 +pkg syscall (netbsd-arm64-cgo), const S_IEXEC ideal-int +pkg syscall (netbsd-arm64-cgo), const S_IFMT = 61440 +pkg syscall (netbsd-arm64-cgo), const S_IFWHT = 57344 +pkg syscall (netbsd-arm64-cgo), const S_IFWHT ideal-int +pkg syscall (netbsd-arm64-cgo), const SIGBUS = 10 +pkg syscall (netbsd-arm64-cgo), const SIGCHLD = 20 +pkg syscall (netbsd-arm64-cgo), const SIGCHLD Signal +pkg syscall (netbsd-arm64-cgo), const SIGCONT = 19 +pkg syscall (netbsd-arm64-cgo), const SIGCONT Signal +pkg syscall (netbsd-arm64-cgo), const SIGEMT = 7 +pkg syscall (netbsd-arm64-cgo), const SIGEMT Signal +pkg syscall (netbsd-arm64-cgo), const SIGINFO = 29 +pkg syscall (netbsd-arm64-cgo), const SIGINFO Signal +pkg syscall (netbsd-arm64-cgo), const SIGIO = 23 +pkg syscall (netbsd-arm64-cgo), const SIGIO Signal +pkg syscall (netbsd-arm64-cgo), const SIGIOT = 6 +pkg syscall (netbsd-arm64-cgo), const SIGIOT Signal +pkg syscall (netbsd-arm64-cgo), const SIGPROF = 27 +pkg syscall (netbsd-arm64-cgo), const SIGPROF Signal +pkg syscall (netbsd-arm64-cgo), const SIGPWR = 32 +pkg syscall (netbsd-arm64-cgo), const SIGPWR Signal +pkg syscall (netbsd-arm64-cgo), const SIGSTOP = 17 +pkg syscall (netbsd-arm64-cgo), const SIGSTOP Signal +pkg syscall (netbsd-arm64-cgo), const SIGSYS = 12 +pkg syscall (netbsd-arm64-cgo), const SIGSYS Signal +pkg syscall (netbsd-arm64-cgo), const SIGTSTP = 18 +pkg syscall (netbsd-arm64-cgo), const SIGTSTP Signal +pkg syscall (netbsd-arm64-cgo), const SIGTTIN = 21 +pkg syscall (netbsd-arm64-cgo), const SIGTTIN Signal +pkg syscall (netbsd-arm64-cgo), const SIGTTOU = 22 +pkg syscall (netbsd-arm64-cgo), const SIGTTOU Signal +pkg syscall (netbsd-arm64-cgo), const SIGURG = 16 +pkg syscall (netbsd-arm64-cgo), const SIGURG Signal +pkg syscall (netbsd-arm64-cgo), const SIGUSR1 = 30 +pkg syscall (netbsd-arm64-cgo), const SIGUSR1 Signal +pkg syscall (netbsd-arm64-cgo), const SIGUSR2 = 31 +pkg syscall (netbsd-arm64-cgo), const SIGUSR2 Signal +pkg syscall (netbsd-arm64-cgo), const SIGVTALRM = 26 +pkg syscall (netbsd-arm64-cgo), const SIGVTALRM Signal +pkg syscall (netbsd-arm64-cgo), const SIGWINCH = 28 +pkg syscall (netbsd-arm64-cgo), const SIGWINCH Signal +pkg syscall (netbsd-arm64-cgo), const SIGXCPU = 24 +pkg syscall (netbsd-arm64-cgo), const SIGXCPU Signal +pkg syscall (netbsd-arm64-cgo), const SIGXFSZ = 25 +pkg syscall (netbsd-arm64-cgo), const SIGXFSZ Signal +pkg syscall (netbsd-arm64-cgo), const SIOCADDMULTI = 2156947761 +pkg syscall (netbsd-arm64-cgo), const SIOCADDMULTI ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCADDRT = 2151182858 +pkg syscall (netbsd-arm64-cgo), const SIOCADDRT ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCAIFADDR = 2151704858 +pkg syscall (netbsd-arm64-cgo), const SIOCAIFADDR ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCALIFADDR = 2165860636 +pkg syscall (netbsd-arm64-cgo), const SIOCALIFADDR ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCATMARK = 1074033415 +pkg syscall (netbsd-arm64-cgo), const SIOCATMARK ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCDELMULTI = 2156947762 +pkg syscall (netbsd-arm64-cgo), const SIOCDELMULTI ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCDELRT = 2151182859 +pkg syscall (netbsd-arm64-cgo), const SIOCDELRT ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCDIFADDR = 2156947737 +pkg syscall (netbsd-arm64-cgo), const SIOCDIFADDR ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCDIFPHYADDR = 2156947785 +pkg syscall (netbsd-arm64-cgo), const SIOCDIFPHYADDR ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCDLIFADDR = 2165860638 +pkg syscall (netbsd-arm64-cgo), const SIOCDLIFADDR ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCGDRVSPEC = 3223873915 +pkg syscall (netbsd-arm64-cgo), const SIOCGDRVSPEC ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCGETPFSYNC = 3230689784 +pkg syscall (netbsd-arm64-cgo), const SIOCGETPFSYNC ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCGETSGCNT = 3223352628 +pkg syscall (netbsd-arm64-cgo), const SIOCGETSGCNT ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCGETVIFCNT = 3223876915 +pkg syscall (netbsd-arm64-cgo), const SIOCGETVIFCNT ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCGHIWAT = 1074033409 +pkg syscall (netbsd-arm64-cgo), const SIOCGHIWAT ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCGIFADDR = 3230689569 +pkg syscall (netbsd-arm64-cgo), const SIOCGIFADDR ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCGIFADDRPREF = 3231213856 +pkg syscall (netbsd-arm64-cgo), const SIOCGIFADDRPREF ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCGIFALIAS = 3225446683 +pkg syscall (netbsd-arm64-cgo), const SIOCGIFALIAS ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCGIFBRDADDR = 3230689571 +pkg syscall (netbsd-arm64-cgo), const SIOCGIFBRDADDR ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCGIFCAP = 3223349622 +pkg syscall (netbsd-arm64-cgo), const SIOCGIFCAP ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCGIFCONF = 3222300966 +pkg syscall (netbsd-arm64-cgo), const SIOCGIFCONF ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCGIFDATA = 3231213957 +pkg syscall (netbsd-arm64-cgo), const SIOCGIFDATA ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCGIFDLT = 3230689655 +pkg syscall (netbsd-arm64-cgo), const SIOCGIFDLT ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCGIFDSTADDR = 3230689570 +pkg syscall (netbsd-arm64-cgo), const SIOCGIFDSTADDR ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCGIFFLAGS = 3230689553 +pkg syscall (netbsd-arm64-cgo), const SIOCGIFFLAGS ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCGIFGENERIC = 3230689594 +pkg syscall (netbsd-arm64-cgo), const SIOCGIFGENERIC ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCGIFMEDIA = 3224398134 +pkg syscall (netbsd-arm64-cgo), const SIOCGIFMEDIA ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCGIFMETRIC = 3230689559 +pkg syscall (netbsd-arm64-cgo), const SIOCGIFMETRIC ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCGIFMTU = 3230689662 +pkg syscall (netbsd-arm64-cgo), const SIOCGIFMTU ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCGIFNETMASK = 3230689573 +pkg syscall (netbsd-arm64-cgo), const SIOCGIFNETMASK ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCGIFPDSTADDR = 3230689608 +pkg syscall (netbsd-arm64-cgo), const SIOCGIFPDSTADDR ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCGIFPSRCADDR = 3230689607 +pkg syscall (netbsd-arm64-cgo), const SIOCGIFPSRCADDR ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCGLIFADDR = 3239602461 +pkg syscall (netbsd-arm64-cgo), const SIOCGLIFADDR ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCGLIFPHYADDR = 3239602507 +pkg syscall (netbsd-arm64-cgo), const SIOCGLIFPHYADDR ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCGLINKSTR = 3223873927 +pkg syscall (netbsd-arm64-cgo), const SIOCGLINKSTR ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCGLOWAT = 1074033411 +pkg syscall (netbsd-arm64-cgo), const SIOCGLOWAT ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCGPGRP = 1074033417 +pkg syscall (netbsd-arm64-cgo), const SIOCGPGRP ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCGVH = 3230689667 +pkg syscall (netbsd-arm64-cgo), const SIOCGVH ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCIFCREATE = 2156947834 +pkg syscall (netbsd-arm64-cgo), const SIOCIFCREATE ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCIFDESTROY = 2156947833 +pkg syscall (netbsd-arm64-cgo), const SIOCIFDESTROY ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCIFGCLONERS = 3222301048 +pkg syscall (netbsd-arm64-cgo), const SIOCIFGCLONERS ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCINITIFADDR = 3228592516 +pkg syscall (netbsd-arm64-cgo), const SIOCINITIFADDR ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCSDRVSPEC = 2150132091 +pkg syscall (netbsd-arm64-cgo), const SIOCSDRVSPEC ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCSETPFSYNC = 2156947959 +pkg syscall (netbsd-arm64-cgo), const SIOCSETPFSYNC ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCSHIWAT = 2147775232 +pkg syscall (netbsd-arm64-cgo), const SIOCSHIWAT ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCSIFADDR = 2156947724 +pkg syscall (netbsd-arm64-cgo), const SIOCSIFADDR ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCSIFADDRPREF = 2157472031 +pkg syscall (netbsd-arm64-cgo), const SIOCSIFADDRPREF ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCSIFBRDADDR = 2156947731 +pkg syscall (netbsd-arm64-cgo), const SIOCSIFBRDADDR ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCSIFCAP = 2149607797 +pkg syscall (netbsd-arm64-cgo), const SIOCSIFCAP ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCSIFDSTADDR = 2156947726 +pkg syscall (netbsd-arm64-cgo), const SIOCSIFDSTADDR ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCSIFFLAGS = 2156947728 +pkg syscall (netbsd-arm64-cgo), const SIOCSIFFLAGS ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCSIFGENERIC = 2156947769 +pkg syscall (netbsd-arm64-cgo), const SIOCSIFGENERIC ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCSIFMEDIA = 3230689589 +pkg syscall (netbsd-arm64-cgo), const SIOCSIFMEDIA ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCSIFMETRIC = 2156947736 +pkg syscall (netbsd-arm64-cgo), const SIOCSIFMETRIC ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCSIFMTU = 2156947839 +pkg syscall (netbsd-arm64-cgo), const SIOCSIFMTU ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCSIFNETMASK = 2156947734 +pkg syscall (netbsd-arm64-cgo), const SIOCSIFNETMASK ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCSIFPHYADDR = 2151704902 +pkg syscall (netbsd-arm64-cgo), const SIOCSIFPHYADDR ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCSLIFPHYADDR = 2165860682 +pkg syscall (netbsd-arm64-cgo), const SIOCSLIFPHYADDR ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCSLINKSTR = 2150132104 +pkg syscall (netbsd-arm64-cgo), const SIOCSLINKSTR ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCSLOWAT = 2147775234 +pkg syscall (netbsd-arm64-cgo), const SIOCSLOWAT ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCSPGRP = 2147775240 +pkg syscall (netbsd-arm64-cgo), const SIOCSPGRP ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCSVH = 3230689666 +pkg syscall (netbsd-arm64-cgo), const SIOCSVH ideal-int +pkg syscall (netbsd-arm64-cgo), const SIOCZIFDATA = 3231213958 +pkg syscall (netbsd-arm64-cgo), const SIOCZIFDATA ideal-int +pkg syscall (netbsd-arm64-cgo), const S_IREAD = 256 +pkg syscall (netbsd-arm64-cgo), const S_IREAD ideal-int +pkg syscall (netbsd-arm64-cgo), const S_IRGRP = 32 +pkg syscall (netbsd-arm64-cgo), const S_IRGRP ideal-int +pkg syscall (netbsd-arm64-cgo), const S_IROTH = 4 +pkg syscall (netbsd-arm64-cgo), const S_IROTH ideal-int +pkg syscall (netbsd-arm64-cgo), const S_IRWXG = 56 +pkg syscall (netbsd-arm64-cgo), const S_IRWXG ideal-int +pkg syscall (netbsd-arm64-cgo), const S_IRWXO = 7 +pkg syscall (netbsd-arm64-cgo), const S_IRWXO ideal-int +pkg syscall (netbsd-arm64-cgo), const S_IRWXU = 448 +pkg syscall (netbsd-arm64-cgo), const S_IRWXU ideal-int +pkg syscall (netbsd-arm64-cgo), const S_ISTXT = 512 +pkg syscall (netbsd-arm64-cgo), const S_ISTXT ideal-int +pkg syscall (netbsd-arm64-cgo), const S_IWGRP = 16 +pkg syscall (netbsd-arm64-cgo), const S_IWGRP ideal-int +pkg syscall (netbsd-arm64-cgo), const S_IWOTH = 2 +pkg syscall (netbsd-arm64-cgo), const S_IWOTH ideal-int +pkg syscall (netbsd-arm64-cgo), const S_IWRITE = 128 +pkg syscall (netbsd-arm64-cgo), const S_IWRITE ideal-int +pkg syscall (netbsd-arm64-cgo), const S_IXGRP = 8 +pkg syscall (netbsd-arm64-cgo), const S_IXGRP ideal-int +pkg syscall (netbsd-arm64-cgo), const S_IXOTH = 1 +pkg syscall (netbsd-arm64-cgo), const S_IXOTH ideal-int +pkg syscall (netbsd-arm64-cgo), const SizeofBpfHdr = 32 +pkg syscall (netbsd-arm64-cgo), const SizeofBpfHdr ideal-int +pkg syscall (netbsd-arm64-cgo), const SizeofBpfInsn = 8 +pkg syscall (netbsd-arm64-cgo), const SizeofBpfInsn ideal-int +pkg syscall (netbsd-arm64-cgo), const SizeofBpfProgram = 16 +pkg syscall (netbsd-arm64-cgo), const SizeofBpfProgram ideal-int +pkg syscall (netbsd-arm64-cgo), const SizeofBpfStat = 128 +pkg syscall (netbsd-arm64-cgo), const SizeofBpfStat ideal-int +pkg syscall (netbsd-arm64-cgo), const SizeofBpfVersion = 4 +pkg syscall (netbsd-arm64-cgo), const SizeofBpfVersion ideal-int +pkg syscall (netbsd-arm64-cgo), const SizeofCmsghdr = 12 +pkg syscall (netbsd-arm64-cgo), const SizeofCmsghdr ideal-int +pkg syscall (netbsd-arm64-cgo), const SizeofICMPv6Filter = 32 +pkg syscall (netbsd-arm64-cgo), const SizeofICMPv6Filter ideal-int +pkg syscall (netbsd-arm64-cgo), const SizeofIfaMsghdr = 24 +pkg syscall (netbsd-arm64-cgo), const SizeofIfaMsghdr ideal-int +pkg syscall (netbsd-arm64-cgo), const SizeofIfAnnounceMsghdr = 24 +pkg syscall (netbsd-arm64-cgo), const SizeofIfAnnounceMsghdr ideal-int +pkg syscall (netbsd-arm64-cgo), const SizeofIfData = 136 +pkg syscall (netbsd-arm64-cgo), const SizeofIfData ideal-int +pkg syscall (netbsd-arm64-cgo), const SizeofIfMsghdr = 152 +pkg syscall (netbsd-arm64-cgo), const SizeofIfMsghdr ideal-int +pkg syscall (netbsd-arm64-cgo), const SizeofInet6Pktinfo = 20 +pkg syscall (netbsd-arm64-cgo), const SizeofInet6Pktinfo ideal-int +pkg syscall (netbsd-arm64-cgo), const SizeofIPMreq = 8 +pkg syscall (netbsd-arm64-cgo), const SizeofIPMreq ideal-int +pkg syscall (netbsd-arm64-cgo), const SizeofIPv6Mreq = 20 +pkg syscall (netbsd-arm64-cgo), const SizeofIPv6Mreq ideal-int +pkg syscall (netbsd-arm64-cgo), const SizeofIPv6MTUInfo = 32 +pkg syscall (netbsd-arm64-cgo), const SizeofIPv6MTUInfo ideal-int +pkg syscall (netbsd-arm64-cgo), const SizeofLinger = 8 +pkg syscall (netbsd-arm64-cgo), const SizeofLinger ideal-int +pkg syscall (netbsd-arm64-cgo), const SizeofMsghdr = 48 +pkg syscall (netbsd-arm64-cgo), const SizeofMsghdr ideal-int +pkg syscall (netbsd-arm64-cgo), const SizeofRtMetrics = 80 +pkg syscall (netbsd-arm64-cgo), const SizeofRtMetrics ideal-int +pkg syscall (netbsd-arm64-cgo), const SizeofRtMsghdr = 120 +pkg syscall (netbsd-arm64-cgo), const SizeofRtMsghdr ideal-int +pkg syscall (netbsd-arm64-cgo), const SizeofSockaddrAny = 108 +pkg syscall (netbsd-arm64-cgo), const SizeofSockaddrAny ideal-int +pkg syscall (netbsd-arm64-cgo), const SizeofSockaddrDatalink = 20 +pkg syscall (netbsd-arm64-cgo), const SizeofSockaddrDatalink ideal-int +pkg syscall (netbsd-arm64-cgo), const SizeofSockaddrInet4 = 16 +pkg syscall (netbsd-arm64-cgo), const SizeofSockaddrInet4 ideal-int +pkg syscall (netbsd-arm64-cgo), const SizeofSockaddrInet6 = 28 +pkg syscall (netbsd-arm64-cgo), const SizeofSockaddrInet6 ideal-int +pkg syscall (netbsd-arm64-cgo), const SizeofSockaddrUnix = 106 +pkg syscall (netbsd-arm64-cgo), const SizeofSockaddrUnix ideal-int +pkg syscall (netbsd-arm64-cgo), const S_LOGIN_SET = 1 +pkg syscall (netbsd-arm64-cgo), const S_LOGIN_SET ideal-int +pkg syscall (netbsd-arm64-cgo), const SO_ACCEPTCONN = 2 +pkg syscall (netbsd-arm64-cgo), const SO_ACCEPTCONN ideal-int +pkg syscall (netbsd-arm64-cgo), const SO_ACCEPTFILTER = 4096 +pkg syscall (netbsd-arm64-cgo), const SO_ACCEPTFILTER ideal-int +pkg syscall (netbsd-arm64-cgo), const SO_BROADCAST = 32 +pkg syscall (netbsd-arm64-cgo), const SOCK_CLOEXEC = 268435456 +pkg syscall (netbsd-arm64-cgo), const SOCK_CLOEXEC ideal-int +pkg syscall (netbsd-arm64-cgo), const SOCK_FLAGS_MASK = 4026531840 +pkg syscall (netbsd-arm64-cgo), const SOCK_FLAGS_MASK ideal-int +pkg syscall (netbsd-arm64-cgo), const SOCK_NONBLOCK = 536870912 +pkg syscall (netbsd-arm64-cgo), const SOCK_NONBLOCK ideal-int +pkg syscall (netbsd-arm64-cgo), const SOCK_NOSIGPIPE = 1073741824 +pkg syscall (netbsd-arm64-cgo), const SOCK_NOSIGPIPE ideal-int +pkg syscall (netbsd-arm64-cgo), const SOCK_RDM = 4 +pkg syscall (netbsd-arm64-cgo), const SOCK_RDM ideal-int +pkg syscall (netbsd-arm64-cgo), const SO_DEBUG = 1 +pkg syscall (netbsd-arm64-cgo), const SO_DEBUG ideal-int +pkg syscall (netbsd-arm64-cgo), const SO_DONTROUTE = 16 +pkg syscall (netbsd-arm64-cgo), const SO_ERROR = 4103 +pkg syscall (netbsd-arm64-cgo), const SO_ERROR ideal-int +pkg syscall (netbsd-arm64-cgo), const SO_KEEPALIVE = 8 +pkg syscall (netbsd-arm64-cgo), const SO_LINGER = 128 +pkg syscall (netbsd-arm64-cgo), const SOL_SOCKET = 65535 +pkg syscall (netbsd-arm64-cgo), const SOMAXCONN = 128 +pkg syscall (netbsd-arm64-cgo), const SO_NOHEADER = 4106 +pkg syscall (netbsd-arm64-cgo), const SO_NOHEADER ideal-int +pkg syscall (netbsd-arm64-cgo), const SO_NOSIGPIPE = 2048 +pkg syscall (netbsd-arm64-cgo), const SO_NOSIGPIPE ideal-int +pkg syscall (netbsd-arm64-cgo), const SO_OOBINLINE = 256 +pkg syscall (netbsd-arm64-cgo), const SO_OOBINLINE ideal-int +pkg syscall (netbsd-arm64-cgo), const SO_OVERFLOWED = 4105 +pkg syscall (netbsd-arm64-cgo), const SO_OVERFLOWED ideal-int +pkg syscall (netbsd-arm64-cgo), const SO_RCVBUF = 4098 +pkg syscall (netbsd-arm64-cgo), const SO_RCVLOWAT = 4100 +pkg syscall (netbsd-arm64-cgo), const SO_RCVLOWAT ideal-int +pkg syscall (netbsd-arm64-cgo), const SO_RCVTIMEO = 4108 +pkg syscall (netbsd-arm64-cgo), const SO_RCVTIMEO ideal-int +pkg syscall (netbsd-arm64-cgo), const SO_REUSEADDR = 4 +pkg syscall (netbsd-arm64-cgo), const SO_REUSEPORT = 512 +pkg syscall (netbsd-arm64-cgo), const SO_REUSEPORT ideal-int +pkg syscall (netbsd-arm64-cgo), const SO_SNDBUF = 4097 +pkg syscall (netbsd-arm64-cgo), const SO_SNDLOWAT = 4099 +pkg syscall (netbsd-arm64-cgo), const SO_SNDLOWAT ideal-int +pkg syscall (netbsd-arm64-cgo), const SO_SNDTIMEO = 4107 +pkg syscall (netbsd-arm64-cgo), const SO_SNDTIMEO ideal-int +pkg syscall (netbsd-arm64-cgo), const SO_TIMESTAMP = 8192 +pkg syscall (netbsd-arm64-cgo), const SO_TIMESTAMP ideal-int +pkg syscall (netbsd-arm64-cgo), const SO_TYPE = 4104 +pkg syscall (netbsd-arm64-cgo), const SO_TYPE ideal-int +pkg syscall (netbsd-arm64-cgo), const SO_USELOOPBACK = 64 +pkg syscall (netbsd-arm64-cgo), const SO_USELOOPBACK ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_ACCEPT = 30 +pkg syscall (netbsd-arm64-cgo), const SYS_ACCEPT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_ACCESS = 33 +pkg syscall (netbsd-arm64-cgo), const SYS_ACCESS ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_ACCT = 51 +pkg syscall (netbsd-arm64-cgo), const SYS_ACCT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_ADJTIME = 421 +pkg syscall (netbsd-arm64-cgo), const SYS_ADJTIME ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_BIND = 104 +pkg syscall (netbsd-arm64-cgo), const SYS_BIND ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_BREAK = 17 +pkg syscall (netbsd-arm64-cgo), const SYS_BREAK ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_CHDIR = 12 +pkg syscall (netbsd-arm64-cgo), const SYS_CHDIR ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_CHFLAGS = 34 +pkg syscall (netbsd-arm64-cgo), const SYS_CHFLAGS ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_CHMOD = 15 +pkg syscall (netbsd-arm64-cgo), const SYS_CHMOD ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_CHOWN = 16 +pkg syscall (netbsd-arm64-cgo), const SYS_CHOWN ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_CHROOT = 61 +pkg syscall (netbsd-arm64-cgo), const SYS_CHROOT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_CLOCK_GETRES = 429 +pkg syscall (netbsd-arm64-cgo), const SYS_CLOCK_GETRES ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_CLOCK_GETTIME = 427 +pkg syscall (netbsd-arm64-cgo), const SYS_CLOCK_GETTIME ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_CLOCK_SETTIME = 428 +pkg syscall (netbsd-arm64-cgo), const SYS_CLOCK_SETTIME ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS___CLONE = 287 +pkg syscall (netbsd-arm64-cgo), const SYS___CLONE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_CLOSE = 6 +pkg syscall (netbsd-arm64-cgo), const SYS_CLOSE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_CONNECT = 98 +pkg syscall (netbsd-arm64-cgo), const SYS_CONNECT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYSCTL_VERS_0 = 0 +pkg syscall (netbsd-arm64-cgo), const SYSCTL_VERS_0 ideal-int +pkg syscall (netbsd-arm64-cgo), const SYSCTL_VERS_1 = 16777216 +pkg syscall (netbsd-arm64-cgo), const SYSCTL_VERS_1 ideal-int +pkg syscall (netbsd-arm64-cgo), const SYSCTL_VERSION = 16777216 +pkg syscall (netbsd-arm64-cgo), const SYSCTL_VERSION ideal-int +pkg syscall (netbsd-arm64-cgo), const SYSCTL_VERS_MASK = 4278190080 +pkg syscall (netbsd-arm64-cgo), const SYSCTL_VERS_MASK ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_DUP2 = 90 +pkg syscall (netbsd-arm64-cgo), const SYS_DUP2 ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_DUP3 = 454 +pkg syscall (netbsd-arm64-cgo), const SYS_DUP3 ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_DUP = 41 +pkg syscall (netbsd-arm64-cgo), const SYS_DUP ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_EXECVE = 59 +pkg syscall (netbsd-arm64-cgo), const SYS_EXECVE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_EXIT = 1 +pkg syscall (netbsd-arm64-cgo), const SYS_EXIT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTRCTL = 360 +pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTRCTL ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_DELETE_FD = 366 +pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_DELETE_FD ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_DELETE_FILE = 363 +pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_DELETE_FILE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_DELETE_LINK = 369 +pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_DELETE_LINK ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_GET_FD = 365 +pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_GET_FD ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_GET_FILE = 362 +pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_GET_FILE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_GET_LINK = 368 +pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_GET_LINK ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_LIST_FD = 370 +pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_LIST_FD ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_LIST_FILE = 371 +pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_LIST_FILE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_LIST_LINK = 372 +pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_LIST_LINK ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_SET_FD = 364 +pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_SET_FD ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_SET_FILE = 361 +pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_SET_FILE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_SET_LINK = 367 +pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_SET_LINK ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_FACCESSAT = 462 +pkg syscall (netbsd-arm64-cgo), const SYS_FACCESSAT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_FCHDIR = 13 +pkg syscall (netbsd-arm64-cgo), const SYS_FCHDIR ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_FCHFLAGS = 35 +pkg syscall (netbsd-arm64-cgo), const SYS_FCHFLAGS ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_FCHMOD = 124 +pkg syscall (netbsd-arm64-cgo), const SYS_FCHMODAT = 463 +pkg syscall (netbsd-arm64-cgo), const SYS_FCHMODAT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_FCHMOD ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_FCHOWN = 123 +pkg syscall (netbsd-arm64-cgo), const SYS_FCHOWNAT = 464 +pkg syscall (netbsd-arm64-cgo), const SYS_FCHOWNAT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_FCHOWN ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_FCHROOT = 297 +pkg syscall (netbsd-arm64-cgo), const SYS_FCHROOT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_FCNTL = 92 +pkg syscall (netbsd-arm64-cgo), const SYS_FCNTL ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_FDATASYNC = 241 +pkg syscall (netbsd-arm64-cgo), const SYS_FDATASYNC ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_FEXECVE = 465 +pkg syscall (netbsd-arm64-cgo), const SYS_FEXECVE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_FGETXATTR = 380 +pkg syscall (netbsd-arm64-cgo), const SYS_FGETXATTR ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_FHSTAT = 451 +pkg syscall (netbsd-arm64-cgo), const SYS_FHSTAT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_FKTRACE = 288 +pkg syscall (netbsd-arm64-cgo), const SYS_FKTRACE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_FLISTXATTR = 383 +pkg syscall (netbsd-arm64-cgo), const SYS_FLISTXATTR ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_FLOCK = 131 +pkg syscall (netbsd-arm64-cgo), const SYS_FLOCK ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_FORK = 2 +pkg syscall (netbsd-arm64-cgo), const SYS_FORK ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_FPATHCONF = 192 +pkg syscall (netbsd-arm64-cgo), const SYS_FPATHCONF ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_FREMOVEXATTR = 386 +pkg syscall (netbsd-arm64-cgo), const SYS_FREMOVEXATTR ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_FSETXATTR = 377 +pkg syscall (netbsd-arm64-cgo), const SYS_FSETXATTR ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_FSTAT = 440 +pkg syscall (netbsd-arm64-cgo), const SYS_FSTATAT = 466 +pkg syscall (netbsd-arm64-cgo), const SYS_FSTATAT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_FSTAT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_FSTATVFS1 = 358 +pkg syscall (netbsd-arm64-cgo), const SYS_FSTATVFS1 ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_FSYNC = 95 +pkg syscall (netbsd-arm64-cgo), const SYS_FSYNC ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_FSYNC_RANGE = 354 +pkg syscall (netbsd-arm64-cgo), const SYS_FSYNC_RANGE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_FTRUNCATE = 201 +pkg syscall (netbsd-arm64-cgo), const SYS_FTRUNCATE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_FUTIMENS = 472 +pkg syscall (netbsd-arm64-cgo), const SYS_FUTIMENS ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_FUTIMES = 423 +pkg syscall (netbsd-arm64-cgo), const SYS_FUTIMES ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_GETCONTEXT = 307 +pkg syscall (netbsd-arm64-cgo), const SYS_GETCONTEXT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS___GETCWD = 296 +pkg syscall (netbsd-arm64-cgo), const SYS___GETCWD ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_GETDENTS = 390 +pkg syscall (netbsd-arm64-cgo), const SYS_GETDENTS ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_GETEGID = 43 +pkg syscall (netbsd-arm64-cgo), const SYS_GETEGID ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_GETEUID = 25 +pkg syscall (netbsd-arm64-cgo), const SYS_GETEUID ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_GETFH = 395 +pkg syscall (netbsd-arm64-cgo), const SYS_GETFH ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_GETGID = 47 +pkg syscall (netbsd-arm64-cgo), const SYS_GETGID ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_GETGROUPS = 79 +pkg syscall (netbsd-arm64-cgo), const SYS_GETGROUPS ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_GETITIMER = 426 +pkg syscall (netbsd-arm64-cgo), const SYS_GETITIMER ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS___GETLOGIN = 49 +pkg syscall (netbsd-arm64-cgo), const SYS___GETLOGIN ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_GETPEERNAME = 31 +pkg syscall (netbsd-arm64-cgo), const SYS_GETPEERNAME ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_GETPGID = 207 +pkg syscall (netbsd-arm64-cgo), const SYS_GETPGID ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_GETPGRP = 81 +pkg syscall (netbsd-arm64-cgo), const SYS_GETPGRP ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_GETPID = 20 +pkg syscall (netbsd-arm64-cgo), const SYS_GETPID ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_GETPPID = 39 +pkg syscall (netbsd-arm64-cgo), const SYS_GETPPID ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_GETPRIORITY = 100 +pkg syscall (netbsd-arm64-cgo), const SYS_GETPRIORITY ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_GETRLIMIT = 194 +pkg syscall (netbsd-arm64-cgo), const SYS_GETRLIMIT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_GETRUSAGE = 445 +pkg syscall (netbsd-arm64-cgo), const SYS_GETRUSAGE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_GETSID = 286 +pkg syscall (netbsd-arm64-cgo), const SYS_GETSID ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_GETSOCKNAME = 32 +pkg syscall (netbsd-arm64-cgo), const SYS_GETSOCKNAME ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_GETSOCKOPT = 118 +pkg syscall (netbsd-arm64-cgo), const SYS_GETSOCKOPT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_GETTIMEOFDAY = 418 +pkg syscall (netbsd-arm64-cgo), const SYS_GETTIMEOFDAY ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_GETUID = 24 +pkg syscall (netbsd-arm64-cgo), const SYS_GETUID ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_GETVFSSTAT = 356 +pkg syscall (netbsd-arm64-cgo), const SYS_GETVFSSTAT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_GETXATTR = 378 +pkg syscall (netbsd-arm64-cgo), const SYS_GETXATTR ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_IOCTL = 54 +pkg syscall (netbsd-arm64-cgo), const SYS_IOCTL ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_ISSETUGID = 305 +pkg syscall (netbsd-arm64-cgo), const SYS_ISSETUGID ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_KEVENT = 435 +pkg syscall (netbsd-arm64-cgo), const SYS_KEVENT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_KILL = 37 +pkg syscall (netbsd-arm64-cgo), const SYS_KILL ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_KQUEUE1 = 455 +pkg syscall (netbsd-arm64-cgo), const SYS_KQUEUE1 ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_KQUEUE = 344 +pkg syscall (netbsd-arm64-cgo), const SYS_KQUEUE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_KTRACE = 45 +pkg syscall (netbsd-arm64-cgo), const SYS_KTRACE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_LCHFLAGS = 304 +pkg syscall (netbsd-arm64-cgo), const SYS_LCHFLAGS ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_LCHMOD = 274 +pkg syscall (netbsd-arm64-cgo), const SYS_LCHMOD ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_LCHOWN = 275 +pkg syscall (netbsd-arm64-cgo), const SYS_LCHOWN ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_LGETXATTR = 379 +pkg syscall (netbsd-arm64-cgo), const SYS_LGETXATTR ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_LINK = 9 +pkg syscall (netbsd-arm64-cgo), const SYS_LINKAT = 457 +pkg syscall (netbsd-arm64-cgo), const SYS_LINKAT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_LINK ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_LISTEN = 106 +pkg syscall (netbsd-arm64-cgo), const SYS_LISTEN ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_LISTXATTR = 381 +pkg syscall (netbsd-arm64-cgo), const SYS_LISTXATTR ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_LLISTXATTR = 382 +pkg syscall (netbsd-arm64-cgo), const SYS_LLISTXATTR ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_LREMOVEXATTR = 385 +pkg syscall (netbsd-arm64-cgo), const SYS_LREMOVEXATTR ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_LSEEK = 199 +pkg syscall (netbsd-arm64-cgo), const SYS_LSEEK ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_LSETXATTR = 376 +pkg syscall (netbsd-arm64-cgo), const SYS_LSETXATTR ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_LSTAT = 441 +pkg syscall (netbsd-arm64-cgo), const SYS_LSTAT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_LUTIMES = 424 +pkg syscall (netbsd-arm64-cgo), const SYS_LUTIMES ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_CONTINUE = 314 +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_CONTINUE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_CREATE = 309 +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_CREATE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_CTL = 325 +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_CTL ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_DETACH = 319 +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_DETACH ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_EXIT = 310 +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_EXIT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_GETNAME = 324 +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_GETNAME ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_GETPRIVATE = 316 +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_GETPRIVATE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_KILL = 318 +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_KILL ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_PARK = 434 +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_PARK ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_SELF = 311 +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_SELF ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_SETNAME = 323 +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_SETNAME ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_SETPRIVATE = 317 +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_SETPRIVATE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_SUSPEND = 313 +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_SUSPEND ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_UNPARK = 321 +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_UNPARK_ALL = 322 +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_UNPARK_ALL ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_UNPARK ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_WAIT = 312 +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_WAIT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_WAKEUP = 315 +pkg syscall (netbsd-arm64-cgo), const SYS__LWP_WAKEUP ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_MADVISE = 75 +pkg syscall (netbsd-arm64-cgo), const SYS_MADVISE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_MINCORE = 78 +pkg syscall (netbsd-arm64-cgo), const SYS_MINCORE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_MINHERIT = 273 +pkg syscall (netbsd-arm64-cgo), const SYS_MINHERIT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_MKDIR = 136 +pkg syscall (netbsd-arm64-cgo), const SYS_MKDIRAT = 461 +pkg syscall (netbsd-arm64-cgo), const SYS_MKDIRAT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_MKDIR ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_MKFIFO = 132 +pkg syscall (netbsd-arm64-cgo), const SYS_MKFIFOAT = 459 +pkg syscall (netbsd-arm64-cgo), const SYS_MKFIFOAT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_MKFIFO ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_MKNOD = 450 +pkg syscall (netbsd-arm64-cgo), const SYS_MKNODAT = 460 +pkg syscall (netbsd-arm64-cgo), const SYS_MKNODAT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_MKNOD ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_MLOCK = 203 +pkg syscall (netbsd-arm64-cgo), const SYS_MLOCKALL = 242 +pkg syscall (netbsd-arm64-cgo), const SYS_MLOCKALL ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_MLOCK ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_MMAP = 197 +pkg syscall (netbsd-arm64-cgo), const SYS_MMAP ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_MODCTL = 246 +pkg syscall (netbsd-arm64-cgo), const SYS_MODCTL ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_MOUNT = 410 +pkg syscall (netbsd-arm64-cgo), const SYS_MOUNT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_MPROTECT = 74 +pkg syscall (netbsd-arm64-cgo), const SYS_MPROTECT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_MREMAP = 411 +pkg syscall (netbsd-arm64-cgo), const SYS_MREMAP ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_MSGCTL = 444 +pkg syscall (netbsd-arm64-cgo), const SYS_MSGCTL ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_MSGGET = 225 +pkg syscall (netbsd-arm64-cgo), const SYS_MSGGET ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_MSGRCV = 227 +pkg syscall (netbsd-arm64-cgo), const SYS_MSGRCV ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_MSGSND = 226 +pkg syscall (netbsd-arm64-cgo), const SYS_MSGSND ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_MUNLOCK = 204 +pkg syscall (netbsd-arm64-cgo), const SYS_MUNLOCKALL = 243 +pkg syscall (netbsd-arm64-cgo), const SYS_MUNLOCKALL ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_MUNLOCK ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_MUNMAP = 73 +pkg syscall (netbsd-arm64-cgo), const SYS_MUNMAP ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_NANOSLEEP = 430 +pkg syscall (netbsd-arm64-cgo), const SYS_NANOSLEEP ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_NTP_ADJTIME = 176 +pkg syscall (netbsd-arm64-cgo), const SYS_NTP_ADJTIME ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_NTP_GETTIME = 448 +pkg syscall (netbsd-arm64-cgo), const SYS_NTP_GETTIME ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_OPEN = 5 +pkg syscall (netbsd-arm64-cgo), const SYS_OPENAT = 468 +pkg syscall (netbsd-arm64-cgo), const SYS_OPENAT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_OPEN ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_PACCEPT = 456 +pkg syscall (netbsd-arm64-cgo), const SYS_PACCEPT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_PATHCONF = 191 +pkg syscall (netbsd-arm64-cgo), const SYS_PATHCONF ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_PIPE2 = 453 +pkg syscall (netbsd-arm64-cgo), const SYS_PIPE2 ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_PIPE = 42 +pkg syscall (netbsd-arm64-cgo), const SYS_PIPE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_PMC_CONTROL = 342 +pkg syscall (netbsd-arm64-cgo), const SYS_PMC_CONTROL ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_PMC_GET_INFO = 341 +pkg syscall (netbsd-arm64-cgo), const SYS_PMC_GET_INFO ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_POLL = 209 +pkg syscall (netbsd-arm64-cgo), const SYS_POLL ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_POLLTS = 437 +pkg syscall (netbsd-arm64-cgo), const SYS_POLLTS ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS___POSIX_CHOWN = 283 +pkg syscall (netbsd-arm64-cgo), const SYS___POSIX_CHOWN ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_POSIX_FADVISE = 416 +pkg syscall (netbsd-arm64-cgo), const SYS_POSIX_FADVISE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS___POSIX_FCHOWN = 284 +pkg syscall (netbsd-arm64-cgo), const SYS___POSIX_FCHOWN ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS___POSIX_LCHOWN = 285 +pkg syscall (netbsd-arm64-cgo), const SYS___POSIX_LCHOWN ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS___POSIX_RENAME = 270 +pkg syscall (netbsd-arm64-cgo), const SYS___POSIX_RENAME ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_POSIX_SPAWN = 474 +pkg syscall (netbsd-arm64-cgo), const SYS_POSIX_SPAWN ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_PREAD = 173 +pkg syscall (netbsd-arm64-cgo), const SYS_PREAD ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_PREADV = 289 +pkg syscall (netbsd-arm64-cgo), const SYS_PREADV ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_PROFIL = 44 +pkg syscall (netbsd-arm64-cgo), const SYS_PROFIL ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_PSELECT = 436 +pkg syscall (netbsd-arm64-cgo), const SYS_PSELECT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_PSET_ASSIGN = 414 +pkg syscall (netbsd-arm64-cgo), const SYS_PSET_ASSIGN ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS__PSET_BIND = 415 +pkg syscall (netbsd-arm64-cgo), const SYS__PSET_BIND ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_PSET_CREATE = 412 +pkg syscall (netbsd-arm64-cgo), const SYS_PSET_CREATE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_PSET_DESTROY = 413 +pkg syscall (netbsd-arm64-cgo), const SYS_PSET_DESTROY ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_PTRACE = 26 +pkg syscall (netbsd-arm64-cgo), const SYS_PTRACE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_PWRITE = 174 +pkg syscall (netbsd-arm64-cgo), const SYS_PWRITE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_PWRITEV = 290 +pkg syscall (netbsd-arm64-cgo), const SYS_PWRITEV ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS___QUOTACTL = 473 +pkg syscall (netbsd-arm64-cgo), const SYS___QUOTACTL ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_RASCTL = 343 +pkg syscall (netbsd-arm64-cgo), const SYS_RASCTL ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_READ = 3 +pkg syscall (netbsd-arm64-cgo), const SYS_READ ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_READLINK = 58 +pkg syscall (netbsd-arm64-cgo), const SYS_READLINKAT = 469 +pkg syscall (netbsd-arm64-cgo), const SYS_READLINKAT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_READLINK ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_READV = 120 +pkg syscall (netbsd-arm64-cgo), const SYS_READV ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_REBOOT = 208 +pkg syscall (netbsd-arm64-cgo), const SYS_REBOOT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_RECVFROM = 29 +pkg syscall (netbsd-arm64-cgo), const SYS_RECVFROM ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_RECVMMSG = 475 +pkg syscall (netbsd-arm64-cgo), const SYS_RECVMMSG ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_RECVMSG = 27 +pkg syscall (netbsd-arm64-cgo), const SYS_RECVMSG ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_REMOVEXATTR = 384 +pkg syscall (netbsd-arm64-cgo), const SYS_REMOVEXATTR ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_RENAME = 128 +pkg syscall (netbsd-arm64-cgo), const SYS_RENAMEAT = 458 +pkg syscall (netbsd-arm64-cgo), const SYS_RENAMEAT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_RENAME ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_REVOKE = 56 +pkg syscall (netbsd-arm64-cgo), const SYS_REVOKE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_RMDIR = 137 +pkg syscall (netbsd-arm64-cgo), const SYS_RMDIR ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SBRK = 69 +pkg syscall (netbsd-arm64-cgo), const SYS_SBRK ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS__SCHED_GETAFFINITY = 349 +pkg syscall (netbsd-arm64-cgo), const SYS__SCHED_GETAFFINITY ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS__SCHED_GETPARAM = 347 +pkg syscall (netbsd-arm64-cgo), const SYS__SCHED_GETPARAM ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS__SCHED_SETAFFINITY = 348 +pkg syscall (netbsd-arm64-cgo), const SYS__SCHED_SETAFFINITY ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS__SCHED_SETPARAM = 346 +pkg syscall (netbsd-arm64-cgo), const SYS__SCHED_SETPARAM ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SCHED_YIELD = 350 +pkg syscall (netbsd-arm64-cgo), const SYS_SCHED_YIELD ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SELECT = 417 +pkg syscall (netbsd-arm64-cgo), const SYS_SELECT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SEMCONFIG = 223 +pkg syscall (netbsd-arm64-cgo), const SYS_SEMCONFIG ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS___SEMCTL = 442 +pkg syscall (netbsd-arm64-cgo), const SYS___SEMCTL ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SEMGET = 221 +pkg syscall (netbsd-arm64-cgo), const SYS_SEMGET ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SEMOP = 222 +pkg syscall (netbsd-arm64-cgo), const SYS_SEMOP ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SENDMMSG = 476 +pkg syscall (netbsd-arm64-cgo), const SYS_SENDMMSG ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SENDMSG = 28 +pkg syscall (netbsd-arm64-cgo), const SYS_SENDMSG ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SENDTO = 133 +pkg syscall (netbsd-arm64-cgo), const SYS_SENDTO ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SETCONTEXT = 308 +pkg syscall (netbsd-arm64-cgo), const SYS_SETCONTEXT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SETEGID = 182 +pkg syscall (netbsd-arm64-cgo), const SYS_SETEGID ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SETEUID = 183 +pkg syscall (netbsd-arm64-cgo), const SYS_SETEUID ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SETGID = 181 +pkg syscall (netbsd-arm64-cgo), const SYS_SETGID ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SETGROUPS = 80 +pkg syscall (netbsd-arm64-cgo), const SYS_SETGROUPS ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SETITIMER = 425 +pkg syscall (netbsd-arm64-cgo), const SYS_SETITIMER ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS___SETLOGIN = 50 +pkg syscall (netbsd-arm64-cgo), const SYS___SETLOGIN ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SETPGID = 82 +pkg syscall (netbsd-arm64-cgo), const SYS_SETPGID ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SETPRIORITY = 96 +pkg syscall (netbsd-arm64-cgo), const SYS_SETPRIORITY ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SETREGID = 127 +pkg syscall (netbsd-arm64-cgo), const SYS_SETREGID ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SETREUID = 126 +pkg syscall (netbsd-arm64-cgo), const SYS_SETREUID ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SETRLIMIT = 195 +pkg syscall (netbsd-arm64-cgo), const SYS_SETRLIMIT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SETSID = 147 +pkg syscall (netbsd-arm64-cgo), const SYS_SETSID ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SETSOCKOPT = 105 +pkg syscall (netbsd-arm64-cgo), const SYS_SETSOCKOPT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SETTIMEOFDAY = 419 +pkg syscall (netbsd-arm64-cgo), const SYS_SETTIMEOFDAY ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SETUID = 23 +pkg syscall (netbsd-arm64-cgo), const SYS_SETUID ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SETXATTR = 375 +pkg syscall (netbsd-arm64-cgo), const SYS_SETXATTR ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SHMAT = 228 +pkg syscall (netbsd-arm64-cgo), const SYS_SHMAT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SHMCTL = 443 +pkg syscall (netbsd-arm64-cgo), const SYS_SHMCTL ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SHMDT = 230 +pkg syscall (netbsd-arm64-cgo), const SYS_SHMDT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SHMGET = 231 +pkg syscall (netbsd-arm64-cgo), const SYS_SHMGET ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SHUTDOWN = 134 +pkg syscall (netbsd-arm64-cgo), const SYS_SHUTDOWN ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS___SIGACTION_SIGTRAMP = 340 +pkg syscall (netbsd-arm64-cgo), const SYS___SIGACTION_SIGTRAMP ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SIGQUEUEINFO = 245 +pkg syscall (netbsd-arm64-cgo), const SYS_SIGQUEUEINFO ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS___SIGTIMEDWAIT = 431 +pkg syscall (netbsd-arm64-cgo), const SYS___SIGTIMEDWAIT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SOCKET = 394 +pkg syscall (netbsd-arm64-cgo), const SYS_SOCKET ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SOCKETPAIR = 135 +pkg syscall (netbsd-arm64-cgo), const SYS_SOCKETPAIR ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SSTK = 70 +pkg syscall (netbsd-arm64-cgo), const SYS_SSTK ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_STAT = 439 +pkg syscall (netbsd-arm64-cgo), const SYS_STAT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_STATVFS1 = 357 +pkg syscall (netbsd-arm64-cgo), const SYS_STATVFS1 ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SWAPCTL = 271 +pkg syscall (netbsd-arm64-cgo), const SYS_SWAPCTL ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SYMLINK = 57 +pkg syscall (netbsd-arm64-cgo), const SYS_SYMLINKAT = 470 +pkg syscall (netbsd-arm64-cgo), const SYS_SYMLINKAT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SYMLINK ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SYNC = 36 +pkg syscall (netbsd-arm64-cgo), const SYS_SYNC ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_SYSARCH = 165 +pkg syscall (netbsd-arm64-cgo), const SYS_SYSARCH ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS___SYSCTL = 202 +pkg syscall (netbsd-arm64-cgo), const SYS___SYSCTL ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_TIMER_CREATE = 235 +pkg syscall (netbsd-arm64-cgo), const SYS_TIMER_CREATE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_TIMER_DELETE = 236 +pkg syscall (netbsd-arm64-cgo), const SYS_TIMER_DELETE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_TIMER_GETOVERRUN = 239 +pkg syscall (netbsd-arm64-cgo), const SYS_TIMER_GETOVERRUN ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_TIMER_GETTIME = 447 +pkg syscall (netbsd-arm64-cgo), const SYS_TIMER_GETTIME ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_TIMER_SETTIME = 446 +pkg syscall (netbsd-arm64-cgo), const SYS_TIMER_SETTIME ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_TRUNCATE = 200 +pkg syscall (netbsd-arm64-cgo), const SYS_TRUNCATE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_UMASK = 60 +pkg syscall (netbsd-arm64-cgo), const SYS_UMASK ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_UNDELETE = 205 +pkg syscall (netbsd-arm64-cgo), const SYS_UNDELETE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_UNLINK = 10 +pkg syscall (netbsd-arm64-cgo), const SYS_UNLINKAT = 471 +pkg syscall (netbsd-arm64-cgo), const SYS_UNLINKAT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_UNLINK ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_UNMOUNT = 22 +pkg syscall (netbsd-arm64-cgo), const SYS_UNMOUNT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_UTIMENSAT = 467 +pkg syscall (netbsd-arm64-cgo), const SYS_UTIMENSAT ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_UTIMES = 420 +pkg syscall (netbsd-arm64-cgo), const SYS_UTIMES ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_UTRACE = 306 +pkg syscall (netbsd-arm64-cgo), const SYS_UTRACE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_UUIDGEN = 355 +pkg syscall (netbsd-arm64-cgo), const SYS_UUIDGEN ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_VADVISE = 72 +pkg syscall (netbsd-arm64-cgo), const SYS_VADVISE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_VFORK = 66 +pkg syscall (netbsd-arm64-cgo), const SYS_VFORK ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_WAIT4 = 449 +pkg syscall (netbsd-arm64-cgo), const SYS_WAIT4 ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_WRITE = 4 +pkg syscall (netbsd-arm64-cgo), const SYS_WRITE ideal-int +pkg syscall (netbsd-arm64-cgo), const SYS_WRITEV = 121 +pkg syscall (netbsd-arm64-cgo), const SYS_WRITEV ideal-int +pkg syscall (netbsd-arm64-cgo), const TCIFLUSH = 1 +pkg syscall (netbsd-arm64-cgo), const TCIFLUSH ideal-int +pkg syscall (netbsd-arm64-cgo), const TCIOFLUSH = 3 +pkg syscall (netbsd-arm64-cgo), const TCIOFLUSH ideal-int +pkg syscall (netbsd-arm64-cgo), const TCOFLUSH = 2 +pkg syscall (netbsd-arm64-cgo), const TCOFLUSH ideal-int +pkg syscall (netbsd-arm64-cgo), const TCP_CONGCTL = 32 +pkg syscall (netbsd-arm64-cgo), const TCP_CONGCTL ideal-int +pkg syscall (netbsd-arm64-cgo), const TCP_KEEPCNT = 6 +pkg syscall (netbsd-arm64-cgo), const TCP_KEEPCNT ideal-int +pkg syscall (netbsd-arm64-cgo), const TCP_KEEPIDLE = 3 +pkg syscall (netbsd-arm64-cgo), const TCP_KEEPIDLE ideal-int +pkg syscall (netbsd-arm64-cgo), const TCP_KEEPINIT = 7 +pkg syscall (netbsd-arm64-cgo), const TCP_KEEPINIT ideal-int +pkg syscall (netbsd-arm64-cgo), const TCP_KEEPINTVL = 5 +pkg syscall (netbsd-arm64-cgo), const TCP_KEEPINTVL ideal-int +pkg syscall (netbsd-arm64-cgo), const TCP_MAXBURST = 4 +pkg syscall (netbsd-arm64-cgo), const TCP_MAXBURST ideal-int +pkg syscall (netbsd-arm64-cgo), const TCP_MAXSEG = 2 +pkg syscall (netbsd-arm64-cgo), const TCP_MAXSEG ideal-int +pkg syscall (netbsd-arm64-cgo), const TCP_MAXWIN = 65535 +pkg syscall (netbsd-arm64-cgo), const TCP_MAXWIN ideal-int +pkg syscall (netbsd-arm64-cgo), const TCP_MAX_WINSHIFT = 14 +pkg syscall (netbsd-arm64-cgo), const TCP_MAX_WINSHIFT ideal-int +pkg syscall (netbsd-arm64-cgo), const TCP_MD5SIG = 16 +pkg syscall (netbsd-arm64-cgo), const TCP_MD5SIG ideal-int +pkg syscall (netbsd-arm64-cgo), const TCP_MINMSS = 216 +pkg syscall (netbsd-arm64-cgo), const TCP_MINMSS ideal-int +pkg syscall (netbsd-arm64-cgo), const TCP_MSS = 536 +pkg syscall (netbsd-arm64-cgo), const TCP_MSS ideal-int +pkg syscall (netbsd-arm64-cgo), const TCSAFLUSH = 2 +pkg syscall (netbsd-arm64-cgo), const TCSAFLUSH ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCCBRK = 536900730 +pkg syscall (netbsd-arm64-cgo), const TIOCCBRK ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCCDTR = 536900728 +pkg syscall (netbsd-arm64-cgo), const TIOCCDTR ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCCONS = 2147775586 +pkg syscall (netbsd-arm64-cgo), const TIOCCONS ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCDCDTIMESTAMP = 1074820184 +pkg syscall (netbsd-arm64-cgo), const TIOCDCDTIMESTAMP ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCDRAIN = 536900702 +pkg syscall (netbsd-arm64-cgo), const TIOCDRAIN ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCEXCL = 536900621 +pkg syscall (netbsd-arm64-cgo), const TIOCEXCL ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCEXT = 2147775584 +pkg syscall (netbsd-arm64-cgo), const TIOCEXT ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCFLAG_CDTRCTS = 16 +pkg syscall (netbsd-arm64-cgo), const TIOCFLAG_CDTRCTS ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCFLAG_CLOCAL = 2 +pkg syscall (netbsd-arm64-cgo), const TIOCFLAG_CLOCAL ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCFLAG_CRTSCTS = 4 +pkg syscall (netbsd-arm64-cgo), const TIOCFLAG_CRTSCTS ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCFLAG_MDMBUF = 8 +pkg syscall (netbsd-arm64-cgo), const TIOCFLAG_MDMBUF ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCFLAG_SOFTCAR = 1 +pkg syscall (netbsd-arm64-cgo), const TIOCFLAG_SOFTCAR ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCFLUSH = 2147775504 +pkg syscall (netbsd-arm64-cgo), const TIOCFLUSH ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCGETA = 1076655123 +pkg syscall (netbsd-arm64-cgo), const TIOCGETA ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCGETD = 1074033690 +pkg syscall (netbsd-arm64-cgo), const TIOCGETD ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCGFLAGS = 1074033757 +pkg syscall (netbsd-arm64-cgo), const TIOCGFLAGS ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCGLINED = 1075868738 +pkg syscall (netbsd-arm64-cgo), const TIOCGLINED ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCGPGRP = 1074033783 +pkg syscall (netbsd-arm64-cgo), const TIOCGPGRP ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCGQSIZE = 1074033793 +pkg syscall (netbsd-arm64-cgo), const TIOCGQSIZE ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCGRANTPT = 536900679 +pkg syscall (netbsd-arm64-cgo), const TIOCGRANTPT ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCGSID = 1074033763 +pkg syscall (netbsd-arm64-cgo), const TIOCGSID ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCGSIZE = 1074295912 +pkg syscall (netbsd-arm64-cgo), const TIOCGSIZE ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCGWINSZ = 1074295912 +pkg syscall (netbsd-arm64-cgo), const TIOCGWINSZ ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCMBIC = 2147775595 +pkg syscall (netbsd-arm64-cgo), const TIOCMBIC ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCMBIS = 2147775596 +pkg syscall (netbsd-arm64-cgo), const TIOCMBIS ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCM_CAR = 64 +pkg syscall (netbsd-arm64-cgo), const TIOCM_CAR ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCM_CD = 64 +pkg syscall (netbsd-arm64-cgo), const TIOCM_CD ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCM_CTS = 32 +pkg syscall (netbsd-arm64-cgo), const TIOCM_CTS ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCM_DSR = 256 +pkg syscall (netbsd-arm64-cgo), const TIOCM_DSR ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCM_DTR = 2 +pkg syscall (netbsd-arm64-cgo), const TIOCM_DTR ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCMGET = 1074033770 +pkg syscall (netbsd-arm64-cgo), const TIOCMGET ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCM_LE = 1 +pkg syscall (netbsd-arm64-cgo), const TIOCM_LE ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCM_RI = 128 +pkg syscall (netbsd-arm64-cgo), const TIOCM_RI ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCM_RNG = 128 +pkg syscall (netbsd-arm64-cgo), const TIOCM_RNG ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCM_RTS = 4 +pkg syscall (netbsd-arm64-cgo), const TIOCM_RTS ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCMSET = 2147775597 +pkg syscall (netbsd-arm64-cgo), const TIOCMSET ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCM_SR = 16 +pkg syscall (netbsd-arm64-cgo), const TIOCM_SR ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCM_ST = 8 +pkg syscall (netbsd-arm64-cgo), const TIOCM_ST ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCNOTTY = 536900721 +pkg syscall (netbsd-arm64-cgo), const TIOCNOTTY ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCNXCL = 536900622 +pkg syscall (netbsd-arm64-cgo), const TIOCNXCL ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCOUTQ = 1074033779 +pkg syscall (netbsd-arm64-cgo), const TIOCOUTQ ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCPKT = 2147775600 +pkg syscall (netbsd-arm64-cgo), const TIOCPKT_DATA = 0 +pkg syscall (netbsd-arm64-cgo), const TIOCPKT_DATA ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCPKT_DOSTOP = 32 +pkg syscall (netbsd-arm64-cgo), const TIOCPKT_DOSTOP ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCPKT_FLUSHREAD = 1 +pkg syscall (netbsd-arm64-cgo), const TIOCPKT_FLUSHREAD ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCPKT_FLUSHWRITE = 2 +pkg syscall (netbsd-arm64-cgo), const TIOCPKT_FLUSHWRITE ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCPKT ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCPKT_IOCTL = 64 +pkg syscall (netbsd-arm64-cgo), const TIOCPKT_IOCTL ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCPKT_NOSTOP = 16 +pkg syscall (netbsd-arm64-cgo), const TIOCPKT_NOSTOP ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCPKT_START = 8 +pkg syscall (netbsd-arm64-cgo), const TIOCPKT_START ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCPKT_STOP = 4 +pkg syscall (netbsd-arm64-cgo), const TIOCPKT_STOP ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCPTMGET = 1076393030 +pkg syscall (netbsd-arm64-cgo), const TIOCPTMGET ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCPTSNAME = 1076393032 +pkg syscall (netbsd-arm64-cgo), const TIOCPTSNAME ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCRCVFRAME = 2148037701 +pkg syscall (netbsd-arm64-cgo), const TIOCRCVFRAME ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCREMOTE = 2147775593 +pkg syscall (netbsd-arm64-cgo), const TIOCREMOTE ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCSBRK = 536900731 +pkg syscall (netbsd-arm64-cgo), const TIOCSBRK ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCSCTTY = 536900705 +pkg syscall (netbsd-arm64-cgo), const TIOCSCTTY ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCSDTR = 536900729 +pkg syscall (netbsd-arm64-cgo), const TIOCSDTR ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCSETA = 2150396948 +pkg syscall (netbsd-arm64-cgo), const TIOCSETAF = 2150396950 +pkg syscall (netbsd-arm64-cgo), const TIOCSETAF ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCSETA ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCSETAW = 2150396949 +pkg syscall (netbsd-arm64-cgo), const TIOCSETAW ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCSETD = 2147775515 +pkg syscall (netbsd-arm64-cgo), const TIOCSETD ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCSFLAGS = 2147775580 +pkg syscall (netbsd-arm64-cgo), const TIOCSFLAGS ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCSIG = 536900703 +pkg syscall (netbsd-arm64-cgo), const TIOCSIG ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCSLINED = 2149610563 +pkg syscall (netbsd-arm64-cgo), const TIOCSLINED ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCSPGRP = 2147775606 +pkg syscall (netbsd-arm64-cgo), const TIOCSPGRP ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCSQSIZE = 2147775616 +pkg syscall (netbsd-arm64-cgo), const TIOCSQSIZE ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCSSIZE = 2148037735 +pkg syscall (netbsd-arm64-cgo), const TIOCSSIZE ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCSTART = 536900718 +pkg syscall (netbsd-arm64-cgo), const TIOCSTART ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCSTAT = 2147775589 +pkg syscall (netbsd-arm64-cgo), const TIOCSTAT ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCSTI = 2147578994 +pkg syscall (netbsd-arm64-cgo), const TIOCSTI ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCSTOP = 536900719 +pkg syscall (netbsd-arm64-cgo), const TIOCSTOP ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCSWINSZ = 2148037735 +pkg syscall (netbsd-arm64-cgo), const TIOCSWINSZ ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCUCNTL = 2147775590 +pkg syscall (netbsd-arm64-cgo), const TIOCUCNTL ideal-int +pkg syscall (netbsd-arm64-cgo), const TIOCXMTFRAME = 2148037700 +pkg syscall (netbsd-arm64-cgo), const TIOCXMTFRAME ideal-int +pkg syscall (netbsd-arm64-cgo), const TOSTOP = 4194304 +pkg syscall (netbsd-arm64-cgo), const TOSTOP ideal-int +pkg syscall (netbsd-arm64-cgo), const VDISCARD = 15 +pkg syscall (netbsd-arm64-cgo), const VDISCARD ideal-int +pkg syscall (netbsd-arm64-cgo), const VDSUSP = 11 +pkg syscall (netbsd-arm64-cgo), const VDSUSP ideal-int +pkg syscall (netbsd-arm64-cgo), const VEOF = 0 +pkg syscall (netbsd-arm64-cgo), const VEOF ideal-int +pkg syscall (netbsd-arm64-cgo), const VEOL = 1 +pkg syscall (netbsd-arm64-cgo), const VEOL2 = 2 +pkg syscall (netbsd-arm64-cgo), const VEOL2 ideal-int +pkg syscall (netbsd-arm64-cgo), const VEOL ideal-int +pkg syscall (netbsd-arm64-cgo), const VERASE = 3 +pkg syscall (netbsd-arm64-cgo), const VERASE ideal-int +pkg syscall (netbsd-arm64-cgo), const VINTR = 8 +pkg syscall (netbsd-arm64-cgo), const VINTR ideal-int +pkg syscall (netbsd-arm64-cgo), const VKILL = 5 +pkg syscall (netbsd-arm64-cgo), const VKILL ideal-int +pkg syscall (netbsd-arm64-cgo), const VLNEXT = 14 +pkg syscall (netbsd-arm64-cgo), const VLNEXT ideal-int +pkg syscall (netbsd-arm64-cgo), const VMIN = 16 +pkg syscall (netbsd-arm64-cgo), const VMIN ideal-int +pkg syscall (netbsd-arm64-cgo), const VQUIT = 9 +pkg syscall (netbsd-arm64-cgo), const VQUIT ideal-int +pkg syscall (netbsd-arm64-cgo), const VREPRINT = 6 +pkg syscall (netbsd-arm64-cgo), const VREPRINT ideal-int +pkg syscall (netbsd-arm64-cgo), const VSTART = 12 +pkg syscall (netbsd-arm64-cgo), const VSTART ideal-int +pkg syscall (netbsd-arm64-cgo), const VSTATUS = 18 +pkg syscall (netbsd-arm64-cgo), const VSTATUS ideal-int +pkg syscall (netbsd-arm64-cgo), const VSTOP = 13 +pkg syscall (netbsd-arm64-cgo), const VSTOP ideal-int +pkg syscall (netbsd-arm64-cgo), const VSUSP = 10 +pkg syscall (netbsd-arm64-cgo), const VSUSP ideal-int +pkg syscall (netbsd-arm64-cgo), const VTIME = 17 +pkg syscall (netbsd-arm64-cgo), const VTIME ideal-int +pkg syscall (netbsd-arm64-cgo), const VWERASE = 4 +pkg syscall (netbsd-arm64-cgo), const VWERASE ideal-int +pkg syscall (netbsd-arm64-cgo), const WALL = 8 +pkg syscall (netbsd-arm64-cgo), const WALL ideal-int +pkg syscall (netbsd-arm64-cgo), const WALLSIG = 8 +pkg syscall (netbsd-arm64-cgo), const WALLSIG ideal-int +pkg syscall (netbsd-arm64-cgo), const WALTSIG = 4 +pkg syscall (netbsd-arm64-cgo), const WALTSIG ideal-int +pkg syscall (netbsd-arm64-cgo), const WCLONE = 4 +pkg syscall (netbsd-arm64-cgo), const WCLONE ideal-int +pkg syscall (netbsd-arm64-cgo), const WCOREFLAG = 128 +pkg syscall (netbsd-arm64-cgo), const WCOREFLAG ideal-int +pkg syscall (netbsd-arm64-cgo), const WNOHANG = 1 +pkg syscall (netbsd-arm64-cgo), const WNOHANG ideal-int +pkg syscall (netbsd-arm64-cgo), const WNOWAIT = 65536 +pkg syscall (netbsd-arm64-cgo), const WNOWAIT ideal-int +pkg syscall (netbsd-arm64-cgo), const WNOZOMBIE = 131072 +pkg syscall (netbsd-arm64-cgo), const WNOZOMBIE ideal-int +pkg syscall (netbsd-arm64-cgo), const WOPTSCHECKED = 262144 +pkg syscall (netbsd-arm64-cgo), const WOPTSCHECKED ideal-int +pkg syscall (netbsd-arm64-cgo), const WSTOPPED = 127 +pkg syscall (netbsd-arm64-cgo), const WSTOPPED ideal-int +pkg syscall (netbsd-arm64-cgo), const WUNTRACED = 2 +pkg syscall (netbsd-arm64-cgo), const WUNTRACED ideal-int +pkg syscall (netbsd-arm64-cgo), func Accept4(int, int) (int, Sockaddr, error) +pkg syscall (netbsd-arm64-cgo), func Accept(int) (int, Sockaddr, error) +pkg syscall (netbsd-arm64-cgo), func Access(string, uint32) error +pkg syscall (netbsd-arm64-cgo), func Adjtime(*Timeval, *Timeval) error +pkg syscall (netbsd-arm64-cgo), func Bind(int, Sockaddr) error +pkg syscall (netbsd-arm64-cgo), func BpfBuflen(int) (int, error) +pkg syscall (netbsd-arm64-cgo), func BpfDatalink(int) (int, error) +pkg syscall (netbsd-arm64-cgo), func BpfHeadercmpl(int) (int, error) +pkg syscall (netbsd-arm64-cgo), func BpfInterface(int, string) (string, error) +pkg syscall (netbsd-arm64-cgo), func BpfJump(int, int, int, int) *BpfInsn +pkg syscall (netbsd-arm64-cgo), func BpfStats(int) (*BpfStat, error) +pkg syscall (netbsd-arm64-cgo), func BpfStmt(int, int) *BpfInsn +pkg syscall (netbsd-arm64-cgo), func BpfTimeout(int) (*Timeval, error) +pkg syscall (netbsd-arm64-cgo), func CheckBpfVersion(int) error +pkg syscall (netbsd-arm64-cgo), func Chflags(string, int) error +pkg syscall (netbsd-arm64-cgo), func Chroot(string) error +pkg syscall (netbsd-arm64-cgo), func Close(int) error +pkg syscall (netbsd-arm64-cgo), func CloseOnExec(int) +pkg syscall (netbsd-arm64-cgo), func CmsgLen(int) int +pkg syscall (netbsd-arm64-cgo), func CmsgSpace(int) int +pkg syscall (netbsd-arm64-cgo), func Connect(int, Sockaddr) error +pkg syscall (netbsd-arm64-cgo), func Dup2(int, int) error +pkg syscall (netbsd-arm64-cgo), func Dup(int) (int, error) +pkg syscall (netbsd-arm64-cgo), func Fchdir(int) error +pkg syscall (netbsd-arm64-cgo), func Fchflags(int, int) error +pkg syscall (netbsd-arm64-cgo), func Fchmod(int, uint32) error +pkg syscall (netbsd-arm64-cgo), func Fchown(int, int, int) error +pkg syscall (netbsd-arm64-cgo), func FcntlFlock(uintptr, int, *Flock_t) error +pkg syscall (netbsd-arm64-cgo), func Flock(int, int) error +pkg syscall (netbsd-arm64-cgo), func FlushBpf(int) error +pkg syscall (netbsd-arm64-cgo), func ForkExec(string, []string, *ProcAttr) (int, error) +pkg syscall (netbsd-arm64-cgo), func Fpathconf(int, int) (int, error) +pkg syscall (netbsd-arm64-cgo), func Fstat(int, *Stat_t) error +pkg syscall (netbsd-arm64-cgo), func Fsync(int) error +pkg syscall (netbsd-arm64-cgo), func Ftruncate(int, int64) error +pkg syscall (netbsd-arm64-cgo), func Futimes(int, []Timeval) error +pkg syscall (netbsd-arm64-cgo), func Getdirentries(int, []uint8, *uintptr) (int, error) +pkg syscall (netbsd-arm64-cgo), func Getpeername(int) (Sockaddr, error) +pkg syscall (netbsd-arm64-cgo), func Getpgid(int) (int, error) +pkg syscall (netbsd-arm64-cgo), func Getpgrp() int +pkg syscall (netbsd-arm64-cgo), func Getpriority(int, int) (int, error) +pkg syscall (netbsd-arm64-cgo), func Getrlimit(int, *Rlimit) error +pkg syscall (netbsd-arm64-cgo), func Getrusage(int, *Rusage) error +pkg syscall (netbsd-arm64-cgo), func Getsid(int) (int, error) +pkg syscall (netbsd-arm64-cgo), func Getsockname(int) (Sockaddr, error) +pkg syscall (netbsd-arm64-cgo), func GetsockoptByte(int, int, int) (uint8, error) +pkg syscall (netbsd-arm64-cgo), func GetsockoptICMPv6Filter(int, int, int) (*ICMPv6Filter, error) +pkg syscall (netbsd-arm64-cgo), func GetsockoptInet4Addr(int, int, int) ([4]uint8, error) +pkg syscall (netbsd-arm64-cgo), func GetsockoptInt(int, int, int) (int, error) +pkg syscall (netbsd-arm64-cgo), func GetsockoptIPMreq(int, int, int) (*IPMreq, error) +pkg syscall (netbsd-arm64-cgo), func GetsockoptIPv6Mreq(int, int, int) (*IPv6Mreq, error) +pkg syscall (netbsd-arm64-cgo), func GetsockoptIPv6MTUInfo(int, int, int) (*IPv6MTUInfo, error) +pkg syscall (netbsd-arm64-cgo), func Issetugid() bool +pkg syscall (netbsd-arm64-cgo), func Kevent(int, []Kevent_t, []Kevent_t, *Timespec) (int, error) +pkg syscall (netbsd-arm64-cgo), func Kill(int, Signal) error +pkg syscall (netbsd-arm64-cgo), func Kqueue() (int, error) +pkg syscall (netbsd-arm64-cgo), func Listen(int, int) error +pkg syscall (netbsd-arm64-cgo), func Lstat(string, *Stat_t) error +pkg syscall (netbsd-arm64-cgo), func Mkfifo(string, uint32) error +pkg syscall (netbsd-arm64-cgo), func Mknod(string, uint32, int) error +pkg syscall (netbsd-arm64-cgo), func Mmap(int, int64, int, int, int) ([]uint8, error) +pkg syscall (netbsd-arm64-cgo), func Munmap([]uint8) error +pkg syscall (netbsd-arm64-cgo), func Nanosleep(*Timespec, *Timespec) error +pkg syscall (netbsd-arm64-cgo), func Open(string, int, uint32) (int, error) +pkg syscall (netbsd-arm64-cgo), func ParseDirent([]uint8, int, []string) (int, int, []string) +pkg syscall (netbsd-arm64-cgo), func ParseRoutingMessage([]uint8) ([]RoutingMessage, error) +pkg syscall (netbsd-arm64-cgo), func ParseRoutingSockaddr(RoutingMessage) ([]Sockaddr, error) +pkg syscall (netbsd-arm64-cgo), func ParseSocketControlMessage([]uint8) ([]SocketControlMessage, error) +pkg syscall (netbsd-arm64-cgo), func ParseUnixRights(*SocketControlMessage) ([]int, error) +pkg syscall (netbsd-arm64-cgo), func Pathconf(string, int) (int, error) +pkg syscall (netbsd-arm64-cgo), func Pipe2([]int, int) error +pkg syscall (netbsd-arm64-cgo), func Pipe([]int) error +pkg syscall (netbsd-arm64-cgo), func Pread(int, []uint8, int64) (int, error) +pkg syscall (netbsd-arm64-cgo), func Pwrite(int, []uint8, int64) (int, error) +pkg syscall (netbsd-arm64-cgo), func RawSyscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) +pkg syscall (netbsd-arm64-cgo), func RawSyscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) +pkg syscall (netbsd-arm64-cgo), func ReadDirent(int, []uint8) (int, error) +pkg syscall (netbsd-arm64-cgo), func Read(int, []uint8) (int, error) +pkg syscall (netbsd-arm64-cgo), func Recvfrom(int, []uint8, int) (int, Sockaddr, error) +pkg syscall (netbsd-arm64-cgo), func Recvmsg(int, []uint8, []uint8, int) (int, int, int, Sockaddr, error) +pkg syscall (netbsd-arm64-cgo), func Revoke(string) error +pkg syscall (netbsd-arm64-cgo), func RouteRIB(int, int) ([]uint8, error) +pkg syscall (netbsd-arm64-cgo), func Seek(int, int64, int) (int64, error) +pkg syscall (netbsd-arm64-cgo), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) error +pkg syscall (netbsd-arm64-cgo), func Sendfile(int, int, *int64, int) (int, error) +pkg syscall (netbsd-arm64-cgo), func Sendmsg(int, []uint8, []uint8, Sockaddr, int) error +pkg syscall (netbsd-arm64-cgo), func SendmsgN(int, []uint8, []uint8, Sockaddr, int) (int, error) +pkg syscall (netbsd-arm64-cgo), func Sendto(int, []uint8, int, Sockaddr) error +pkg syscall (netbsd-arm64-cgo), func SetBpfBuflen(int, int) (int, error) +pkg syscall (netbsd-arm64-cgo), func SetBpfDatalink(int, int) (int, error) +pkg syscall (netbsd-arm64-cgo), func SetBpfHeadercmpl(int, int) error +pkg syscall (netbsd-arm64-cgo), func SetBpfImmediate(int, int) error +pkg syscall (netbsd-arm64-cgo), func SetBpf(int, []BpfInsn) error +pkg syscall (netbsd-arm64-cgo), func SetBpfInterface(int, string) error +pkg syscall (netbsd-arm64-cgo), func SetBpfPromisc(int, int) error +pkg syscall (netbsd-arm64-cgo), func SetBpfTimeout(int, *Timeval) error +pkg syscall (netbsd-arm64-cgo), func Setegid(int) error +pkg syscall (netbsd-arm64-cgo), func Seteuid(int) error +pkg syscall (netbsd-arm64-cgo), func Setgid(int) error +pkg syscall (netbsd-arm64-cgo), func Setgroups([]int) error +pkg syscall (netbsd-arm64-cgo), func SetKevent(*Kevent_t, int, int, int) +pkg syscall (netbsd-arm64-cgo), func SetNonblock(int, bool) error +pkg syscall (netbsd-arm64-cgo), func Setpgid(int, int) error +pkg syscall (netbsd-arm64-cgo), func Setpriority(int, int, int) error +pkg syscall (netbsd-arm64-cgo), func Setregid(int, int) error +pkg syscall (netbsd-arm64-cgo), func Setreuid(int, int) error +pkg syscall (netbsd-arm64-cgo), func Setrlimit(int, *Rlimit) error +pkg syscall (netbsd-arm64-cgo), func Setsid() (int, error) +pkg syscall (netbsd-arm64-cgo), func SetsockoptByte(int, int, int, uint8) error +pkg syscall (netbsd-arm64-cgo), func SetsockoptICMPv6Filter(int, int, int, *ICMPv6Filter) error +pkg syscall (netbsd-arm64-cgo), func SetsockoptInet4Addr(int, int, int, [4]uint8) error +pkg syscall (netbsd-arm64-cgo), func SetsockoptInt(int, int, int, int) error +pkg syscall (netbsd-arm64-cgo), func SetsockoptIPMreq(int, int, int, *IPMreq) error +pkg syscall (netbsd-arm64-cgo), func SetsockoptIPv6Mreq(int, int, int, *IPv6Mreq) error +pkg syscall (netbsd-arm64-cgo), func SetsockoptLinger(int, int, int, *Linger) error +pkg syscall (netbsd-arm64-cgo), func SetsockoptString(int, int, int, string) error +pkg syscall (netbsd-arm64-cgo), func SetsockoptTimeval(int, int, int, *Timeval) error +pkg syscall (netbsd-arm64-cgo), func Settimeofday(*Timeval) error +pkg syscall (netbsd-arm64-cgo), func Setuid(int) error +pkg syscall (netbsd-arm64-cgo), func Shutdown(int, int) error +pkg syscall (netbsd-arm64-cgo), func SlicePtrFromStrings([]string) ([]*uint8, error) +pkg syscall (netbsd-arm64-cgo), func Socket(int, int, int) (int, error) +pkg syscall (netbsd-arm64-cgo), func Socketpair(int, int, int) ([2]int, error) +pkg syscall (netbsd-arm64-cgo), func Stat(string, *Stat_t) error +pkg syscall (netbsd-arm64-cgo), func StringSlicePtr([]string) []*uint8 +pkg syscall (netbsd-arm64-cgo), func Sync() error +pkg syscall (netbsd-arm64-cgo), func Syscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) +pkg syscall (netbsd-arm64-cgo), func Syscall9(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) +pkg syscall (netbsd-arm64-cgo), func Syscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) +pkg syscall (netbsd-arm64-cgo), func Sysctl(string) (string, error) +pkg syscall (netbsd-arm64-cgo), func SysctlUint32(string) (uint32, error) +pkg syscall (netbsd-arm64-cgo), func TimevalToNsec(Timeval) int64 +pkg syscall (netbsd-arm64-cgo), func Truncate(string, int64) error +pkg syscall (netbsd-arm64-cgo), func Umask(int) int +pkg syscall (netbsd-arm64-cgo), func UnixRights(...int) []uint8 +pkg syscall (netbsd-arm64-cgo), func Unmount(string, int) error +pkg syscall (netbsd-arm64-cgo), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) +pkg syscall (netbsd-arm64-cgo), func Write(int, []uint8) (int, error) +pkg syscall (netbsd-arm64-cgo), method (*Cmsghdr) SetLen(int) +pkg syscall (netbsd-arm64-cgo), method (*Iovec) SetLen(int) +pkg syscall (netbsd-arm64-cgo), method (*Msghdr) SetControllen(int) +pkg syscall (netbsd-arm64-cgo), type BpfHdr struct +pkg syscall (netbsd-arm64-cgo), type BpfHdr struct, Caplen uint32 +pkg syscall (netbsd-arm64-cgo), type BpfHdr struct, Datalen uint32 +pkg syscall (netbsd-arm64-cgo), type BpfHdr struct, Hdrlen uint16 +pkg syscall (netbsd-arm64-cgo), type BpfHdr struct, Pad_cgo_0 [6]uint8 +pkg syscall (netbsd-arm64-cgo), type BpfHdr struct, Tstamp BpfTimeval +pkg syscall (netbsd-arm64-cgo), type BpfInsn struct +pkg syscall (netbsd-arm64-cgo), type BpfInsn struct, Code uint16 +pkg syscall (netbsd-arm64-cgo), type BpfInsn struct, Jf uint8 +pkg syscall (netbsd-arm64-cgo), type BpfInsn struct, Jt uint8 +pkg syscall (netbsd-arm64-cgo), type BpfInsn struct, K uint32 +pkg syscall (netbsd-arm64-cgo), type BpfProgram struct +pkg syscall (netbsd-arm64-cgo), type BpfProgram struct, Insns *BpfInsn +pkg syscall (netbsd-arm64-cgo), type BpfProgram struct, Len uint32 +pkg syscall (netbsd-arm64-cgo), type BpfProgram struct, Pad_cgo_0 [4]uint8 +pkg syscall (netbsd-arm64-cgo), type BpfStat struct +pkg syscall (netbsd-arm64-cgo), type BpfStat struct, Capt uint64 +pkg syscall (netbsd-arm64-cgo), type BpfStat struct, Drop uint64 +pkg syscall (netbsd-arm64-cgo), type BpfStat struct, Padding [13]uint64 +pkg syscall (netbsd-arm64-cgo), type BpfStat struct, Recv uint64 +pkg syscall (netbsd-arm64-cgo), type BpfTimeval struct +pkg syscall (netbsd-arm64-cgo), type BpfTimeval struct, Sec int64 +pkg syscall (netbsd-arm64-cgo), type BpfTimeval struct, Usec int64 +pkg syscall (netbsd-arm64-cgo), type BpfVersion struct +pkg syscall (netbsd-arm64-cgo), type BpfVersion struct, Major uint16 +pkg syscall (netbsd-arm64-cgo), type BpfVersion struct, Minor uint16 +pkg syscall (netbsd-arm64-cgo), type Cmsghdr struct +pkg syscall (netbsd-arm64-cgo), type Cmsghdr struct, Len uint32 +pkg syscall (netbsd-arm64-cgo), type Cmsghdr struct, Level int32 +pkg syscall (netbsd-arm64-cgo), type Cmsghdr struct, Type int32 +pkg syscall (netbsd-arm64-cgo), type Credential struct +pkg syscall (netbsd-arm64-cgo), type Credential struct, Gid uint32 +pkg syscall (netbsd-arm64-cgo), type Credential struct, Groups []uint32 +pkg syscall (netbsd-arm64-cgo), type Credential struct, NoSetGroups bool +pkg syscall (netbsd-arm64-cgo), type Credential struct, Uid uint32 +pkg syscall (netbsd-arm64-cgo), type Dirent struct +pkg syscall (netbsd-arm64-cgo), type Dirent struct, Fileno uint64 +pkg syscall (netbsd-arm64-cgo), type Dirent struct, Name [512]int8 +pkg syscall (netbsd-arm64-cgo), type Dirent struct, Namlen uint16 +pkg syscall (netbsd-arm64-cgo), type Dirent struct, Pad_cgo_0 [3]uint8 +pkg syscall (netbsd-arm64-cgo), type Dirent struct, Reclen uint16 +pkg syscall (netbsd-arm64-cgo), type Dirent struct, Type uint8 +pkg syscall (netbsd-arm64-cgo), type FdSet struct +pkg syscall (netbsd-arm64-cgo), type FdSet struct, Bits [8]uint32 +pkg syscall (netbsd-arm64-cgo), type Flock_t struct +pkg syscall (netbsd-arm64-cgo), type Flock_t struct, Len int64 +pkg syscall (netbsd-arm64-cgo), type Flock_t struct, Pid int32 +pkg syscall (netbsd-arm64-cgo), type Flock_t struct, Start int64 +pkg syscall (netbsd-arm64-cgo), type Flock_t struct, Type int16 +pkg syscall (netbsd-arm64-cgo), type Flock_t struct, Whence int16 +pkg syscall (netbsd-arm64-cgo), type Fsid struct +pkg syscall (netbsd-arm64-cgo), type Fsid struct, X__fsid_val [2]int32 +pkg syscall (netbsd-arm64-cgo), type ICMPv6Filter struct +pkg syscall (netbsd-arm64-cgo), type ICMPv6Filter struct, Filt [8]uint32 +pkg syscall (netbsd-arm64-cgo), type IfaMsghdr struct +pkg syscall (netbsd-arm64-cgo), type IfaMsghdr struct, Addrs int32 +pkg syscall (netbsd-arm64-cgo), type IfaMsghdr struct, Flags int32 +pkg syscall (netbsd-arm64-cgo), type IfaMsghdr struct, Index uint16 +pkg syscall (netbsd-arm64-cgo), type IfaMsghdr struct, Metric int32 +pkg syscall (netbsd-arm64-cgo), type IfaMsghdr struct, Msglen uint16 +pkg syscall (netbsd-arm64-cgo), type IfaMsghdr struct, Pad_cgo_0 [6]uint8 +pkg syscall (netbsd-arm64-cgo), type IfaMsghdr struct, Type uint8 +pkg syscall (netbsd-arm64-cgo), type IfaMsghdr struct, Version uint8 +pkg syscall (netbsd-arm64-cgo), type IfAnnounceMsghdr struct +pkg syscall (netbsd-arm64-cgo), type IfAnnounceMsghdr struct, Index uint16 +pkg syscall (netbsd-arm64-cgo), type IfAnnounceMsghdr struct, Msglen uint16 +pkg syscall (netbsd-arm64-cgo), type IfAnnounceMsghdr struct, Name [16]int8 +pkg syscall (netbsd-arm64-cgo), type IfAnnounceMsghdr struct, Type uint8 +pkg syscall (netbsd-arm64-cgo), type IfAnnounceMsghdr struct, Version uint8 +pkg syscall (netbsd-arm64-cgo), type IfAnnounceMsghdr struct, What uint16 +pkg syscall (netbsd-arm64-cgo), type IfData struct +pkg syscall (netbsd-arm64-cgo), type IfData struct, Addrlen uint8 +pkg syscall (netbsd-arm64-cgo), type IfData struct, Baudrate uint64 +pkg syscall (netbsd-arm64-cgo), type IfData struct, Collisions uint64 +pkg syscall (netbsd-arm64-cgo), type IfData struct, Hdrlen uint8 +pkg syscall (netbsd-arm64-cgo), type IfData struct, Ibytes uint64 +pkg syscall (netbsd-arm64-cgo), type IfData struct, Ierrors uint64 +pkg syscall (netbsd-arm64-cgo), type IfData struct, Imcasts uint64 +pkg syscall (netbsd-arm64-cgo), type IfData struct, Ipackets uint64 +pkg syscall (netbsd-arm64-cgo), type IfData struct, Iqdrops uint64 +pkg syscall (netbsd-arm64-cgo), type IfData struct, Lastchange Timespec +pkg syscall (netbsd-arm64-cgo), type IfData struct, Link_state int32 +pkg syscall (netbsd-arm64-cgo), type IfData struct, Metric uint64 +pkg syscall (netbsd-arm64-cgo), type IfData struct, Mtu uint64 +pkg syscall (netbsd-arm64-cgo), type IfData struct, Noproto uint64 +pkg syscall (netbsd-arm64-cgo), type IfData struct, Obytes uint64 +pkg syscall (netbsd-arm64-cgo), type IfData struct, Oerrors uint64 +pkg syscall (netbsd-arm64-cgo), type IfData struct, Omcasts uint64 +pkg syscall (netbsd-arm64-cgo), type IfData struct, Opackets uint64 +pkg syscall (netbsd-arm64-cgo), type IfData struct, Pad_cgo_0 [1]uint8 +pkg syscall (netbsd-arm64-cgo), type IfData struct, Type uint8 +pkg syscall (netbsd-arm64-cgo), type IfMsghdr struct +pkg syscall (netbsd-arm64-cgo), type IfMsghdr struct, Addrs int32 +pkg syscall (netbsd-arm64-cgo), type IfMsghdr struct, Data IfData +pkg syscall (netbsd-arm64-cgo), type IfMsghdr struct, Flags int32 +pkg syscall (netbsd-arm64-cgo), type IfMsghdr struct, Index uint16 +pkg syscall (netbsd-arm64-cgo), type IfMsghdr struct, Msglen uint16 +pkg syscall (netbsd-arm64-cgo), type IfMsghdr struct, Pad_cgo_0 [2]uint8 +pkg syscall (netbsd-arm64-cgo), type IfMsghdr struct, Type uint8 +pkg syscall (netbsd-arm64-cgo), type IfMsghdr struct, Version uint8 +pkg syscall (netbsd-arm64-cgo), type Inet6Pktinfo struct +pkg syscall (netbsd-arm64-cgo), type Inet6Pktinfo struct, Addr [16]uint8 +pkg syscall (netbsd-arm64-cgo), type Inet6Pktinfo struct, Ifindex uint32 +pkg syscall (netbsd-arm64-cgo), type InterfaceAddrMessage struct +pkg syscall (netbsd-arm64-cgo), type InterfaceAddrMessage struct, Data []uint8 +pkg syscall (netbsd-arm64-cgo), type InterfaceAddrMessage struct, Header IfaMsghdr +pkg syscall (netbsd-arm64-cgo), type InterfaceAnnounceMessage struct +pkg syscall (netbsd-arm64-cgo), type InterfaceAnnounceMessage struct, Header IfAnnounceMsghdr +pkg syscall (netbsd-arm64-cgo), type InterfaceMessage struct +pkg syscall (netbsd-arm64-cgo), type InterfaceMessage struct, Data []uint8 +pkg syscall (netbsd-arm64-cgo), type InterfaceMessage struct, Header IfMsghdr +pkg syscall (netbsd-arm64-cgo), type Iovec struct +pkg syscall (netbsd-arm64-cgo), type Iovec struct, Base *uint8 +pkg syscall (netbsd-arm64-cgo), type Iovec struct, Len uint64 +pkg syscall (netbsd-arm64-cgo), type IPv6MTUInfo struct +pkg syscall (netbsd-arm64-cgo), type IPv6MTUInfo struct, Addr RawSockaddrInet6 +pkg syscall (netbsd-arm64-cgo), type IPv6MTUInfo struct, Mtu uint32 +pkg syscall (netbsd-arm64-cgo), type Kevent_t struct +pkg syscall (netbsd-arm64-cgo), type Kevent_t struct, Data int64 +pkg syscall (netbsd-arm64-cgo), type Kevent_t struct, Fflags uint32 +pkg syscall (netbsd-arm64-cgo), type Kevent_t struct, Filter uint32 +pkg syscall (netbsd-arm64-cgo), type Kevent_t struct, Flags uint32 +pkg syscall (netbsd-arm64-cgo), type Kevent_t struct, Ident uint64 +pkg syscall (netbsd-arm64-cgo), type Kevent_t struct, Pad_cgo_0 [4]uint8 +pkg syscall (netbsd-arm64-cgo), type Kevent_t struct, Udata int64 +pkg syscall (netbsd-arm64-cgo), type Mclpool [0]uint8 +pkg syscall (netbsd-arm64-cgo), type Msghdr struct +pkg syscall (netbsd-arm64-cgo), type Msghdr struct, Controllen uint32 +pkg syscall (netbsd-arm64-cgo), type Msghdr struct, Control *uint8 +pkg syscall (netbsd-arm64-cgo), type Msghdr struct, Flags int32 +pkg syscall (netbsd-arm64-cgo), type Msghdr struct, Iov *Iovec +pkg syscall (netbsd-arm64-cgo), type Msghdr struct, Iovlen int32 +pkg syscall (netbsd-arm64-cgo), type Msghdr struct, Namelen uint32 +pkg syscall (netbsd-arm64-cgo), type Msghdr struct, Name *uint8 +pkg syscall (netbsd-arm64-cgo), type Msghdr struct, Pad_cgo_0 [4]uint8 +pkg syscall (netbsd-arm64-cgo), type Msghdr struct, Pad_cgo_1 [4]uint8 +pkg syscall (netbsd-arm64-cgo), type RawSockaddrAny struct, Pad [92]int8 +pkg syscall (netbsd-arm64-cgo), type RawSockaddrDatalink struct +pkg syscall (netbsd-arm64-cgo), type RawSockaddrDatalink struct, Alen uint8 +pkg syscall (netbsd-arm64-cgo), type RawSockaddrDatalink struct, Data [12]int8 +pkg syscall (netbsd-arm64-cgo), type RawSockaddrDatalink struct, Family uint8 +pkg syscall (netbsd-arm64-cgo), type RawSockaddrDatalink struct, Index uint16 +pkg syscall (netbsd-arm64-cgo), type RawSockaddrDatalink struct, Len uint8 +pkg syscall (netbsd-arm64-cgo), type RawSockaddrDatalink struct, Nlen uint8 +pkg syscall (netbsd-arm64-cgo), type RawSockaddrDatalink struct, Slen uint8 +pkg syscall (netbsd-arm64-cgo), type RawSockaddrDatalink struct, Type uint8 +pkg syscall (netbsd-arm64-cgo), type RawSockaddrInet4 struct, Family uint8 +pkg syscall (netbsd-arm64-cgo), type RawSockaddrInet4 struct, Len uint8 +pkg syscall (netbsd-arm64-cgo), type RawSockaddrInet4 struct, Zero [8]int8 +pkg syscall (netbsd-arm64-cgo), type RawSockaddrInet6 struct, Family uint8 +pkg syscall (netbsd-arm64-cgo), type RawSockaddrInet6 struct, Len uint8 +pkg syscall (netbsd-arm64-cgo), type RawSockaddr struct, Data [14]int8 +pkg syscall (netbsd-arm64-cgo), type RawSockaddr struct, Family uint8 +pkg syscall (netbsd-arm64-cgo), type RawSockaddr struct, Len uint8 +pkg syscall (netbsd-arm64-cgo), type RawSockaddrUnix struct, Family uint8 +pkg syscall (netbsd-arm64-cgo), type RawSockaddrUnix struct, Len uint8 +pkg syscall (netbsd-arm64-cgo), type RawSockaddrUnix struct, Path [104]int8 +pkg syscall (netbsd-arm64-cgo), type Rlimit struct +pkg syscall (netbsd-arm64-cgo), type Rlimit struct, Cur uint64 +pkg syscall (netbsd-arm64-cgo), type Rlimit struct, Max uint64 +pkg syscall (netbsd-arm64-cgo), type RouteMessage struct +pkg syscall (netbsd-arm64-cgo), type RouteMessage struct, Data []uint8 +pkg syscall (netbsd-arm64-cgo), type RouteMessage struct, Header RtMsghdr +pkg syscall (netbsd-arm64-cgo), type RoutingMessage interface, unexported methods +pkg syscall (netbsd-arm64-cgo), type RtMetrics struct +pkg syscall (netbsd-arm64-cgo), type RtMetrics struct, Expire int64 +pkg syscall (netbsd-arm64-cgo), type RtMetrics struct, Hopcount uint64 +pkg syscall (netbsd-arm64-cgo), type RtMetrics struct, Locks uint64 +pkg syscall (netbsd-arm64-cgo), type RtMetrics struct, Mtu uint64 +pkg syscall (netbsd-arm64-cgo), type RtMetrics struct, Pksent int64 +pkg syscall (netbsd-arm64-cgo), type RtMetrics struct, Recvpipe uint64 +pkg syscall (netbsd-arm64-cgo), type RtMetrics struct, Rtt uint64 +pkg syscall (netbsd-arm64-cgo), type RtMetrics struct, Rttvar uint64 +pkg syscall (netbsd-arm64-cgo), type RtMetrics struct, Sendpipe uint64 +pkg syscall (netbsd-arm64-cgo), type RtMetrics struct, Ssthresh uint64 +pkg syscall (netbsd-arm64-cgo), type RtMsghdr struct +pkg syscall (netbsd-arm64-cgo), type RtMsghdr struct, Addrs int32 +pkg syscall (netbsd-arm64-cgo), type RtMsghdr struct, Errno int32 +pkg syscall (netbsd-arm64-cgo), type RtMsghdr struct, Flags int32 +pkg syscall (netbsd-arm64-cgo), type RtMsghdr struct, Index uint16 +pkg syscall (netbsd-arm64-cgo), type RtMsghdr struct, Inits int32 +pkg syscall (netbsd-arm64-cgo), type RtMsghdr struct, Msglen uint16 +pkg syscall (netbsd-arm64-cgo), type RtMsghdr struct, Pad_cgo_0 [2]uint8 +pkg syscall (netbsd-arm64-cgo), type RtMsghdr struct, Pad_cgo_1 [4]uint8 +pkg syscall (netbsd-arm64-cgo), type RtMsghdr struct, Pid int32 +pkg syscall (netbsd-arm64-cgo), type RtMsghdr struct, Rmx RtMetrics +pkg syscall (netbsd-arm64-cgo), type RtMsghdr struct, Seq int32 +pkg syscall (netbsd-arm64-cgo), type RtMsghdr struct, Type uint8 +pkg syscall (netbsd-arm64-cgo), type RtMsghdr struct, Use int32 +pkg syscall (netbsd-arm64-cgo), type RtMsghdr struct, Version uint8 +pkg syscall (netbsd-arm64-cgo), type Rusage struct, Idrss int64 +pkg syscall (netbsd-arm64-cgo), type Rusage struct, Inblock int64 +pkg syscall (netbsd-arm64-cgo), type Rusage struct, Isrss int64 +pkg syscall (netbsd-arm64-cgo), type Rusage struct, Ixrss int64 +pkg syscall (netbsd-arm64-cgo), type Rusage struct, Majflt int64 +pkg syscall (netbsd-arm64-cgo), type Rusage struct, Maxrss int64 +pkg syscall (netbsd-arm64-cgo), type Rusage struct, Minflt int64 +pkg syscall (netbsd-arm64-cgo), type Rusage struct, Msgrcv int64 +pkg syscall (netbsd-arm64-cgo), type Rusage struct, Msgsnd int64 +pkg syscall (netbsd-arm64-cgo), type Rusage struct, Nivcsw int64 +pkg syscall (netbsd-arm64-cgo), type Rusage struct, Nsignals int64 +pkg syscall (netbsd-arm64-cgo), type Rusage struct, Nswap int64 +pkg syscall (netbsd-arm64-cgo), type Rusage struct, Nvcsw int64 +pkg syscall (netbsd-arm64-cgo), type Rusage struct, Oublock int64 +pkg syscall (netbsd-arm64-cgo), type Rusage struct, Stime Timeval +pkg syscall (netbsd-arm64-cgo), type Rusage struct, Utime Timeval +pkg syscall (netbsd-arm64-cgo), type SockaddrDatalink struct +pkg syscall (netbsd-arm64-cgo), type SockaddrDatalink struct, Alen uint8 +pkg syscall (netbsd-arm64-cgo), type SockaddrDatalink struct, Data [12]int8 +pkg syscall (netbsd-arm64-cgo), type SockaddrDatalink struct, Family uint8 +pkg syscall (netbsd-arm64-cgo), type SockaddrDatalink struct, Index uint16 +pkg syscall (netbsd-arm64-cgo), type SockaddrDatalink struct, Len uint8 +pkg syscall (netbsd-arm64-cgo), type SockaddrDatalink struct, Nlen uint8 +pkg syscall (netbsd-arm64-cgo), type SockaddrDatalink struct, Slen uint8 +pkg syscall (netbsd-arm64-cgo), type SockaddrDatalink struct, Type uint8 +pkg syscall (netbsd-arm64-cgo), type SocketControlMessage struct +pkg syscall (netbsd-arm64-cgo), type SocketControlMessage struct, Data []uint8 +pkg syscall (netbsd-arm64-cgo), type SocketControlMessage struct, Header Cmsghdr +pkg syscall (netbsd-arm64-cgo), type Statfs_t [0]uint8 +pkg syscall (netbsd-arm64-cgo), type Stat_t struct +pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Atimespec Timespec +pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Birthtimespec Timespec +pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Blksize uint32 +pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Blocks int64 +pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Ctimespec Timespec +pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Dev uint64 +pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Flags uint32 +pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Gen uint32 +pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Gid uint32 +pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Ino uint64 +pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Mode uint32 +pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Mtimespec Timespec +pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Nlink uint32 +pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Pad_cgo_0 [4]uint8 +pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Pad_cgo_1 [4]uint8 +pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Pad_cgo_2 [4]uint8 +pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Rdev uint64 +pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Size int64 +pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Spare [2]uint32 +pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Uid uint32 +pkg syscall (netbsd-arm64-cgo), type Sysctlnode struct +pkg syscall (netbsd-arm64-cgo), type Sysctlnode struct, Flags uint32 +pkg syscall (netbsd-arm64-cgo), type Sysctlnode struct, Name [32]int8 +pkg syscall (netbsd-arm64-cgo), type Sysctlnode struct, Num int32 +pkg syscall (netbsd-arm64-cgo), type Sysctlnode struct, Un [16]uint8 +pkg syscall (netbsd-arm64-cgo), type Sysctlnode struct, Ver uint32 +pkg syscall (netbsd-arm64-cgo), type Sysctlnode struct, X__rsvd uint32 +pkg syscall (netbsd-arm64-cgo), type Sysctlnode struct, X_sysctl_desc [8]uint8 +pkg syscall (netbsd-arm64-cgo), type Sysctlnode struct, X_sysctl_func [8]uint8 +pkg syscall (netbsd-arm64-cgo), type Sysctlnode struct, X_sysctl_parent [8]uint8 +pkg syscall (netbsd-arm64-cgo), type Sysctlnode struct, X_sysctl_size [8]uint8 +pkg syscall (netbsd-arm64-cgo), type SysProcAttr struct, Chroot string +pkg syscall (netbsd-arm64-cgo), type SysProcAttr struct, Credential *Credential +pkg syscall (netbsd-arm64-cgo), type SysProcAttr struct, Ctty int +pkg syscall (netbsd-arm64-cgo), type SysProcAttr struct, Foreground bool +pkg syscall (netbsd-arm64-cgo), type SysProcAttr struct, Noctty bool +pkg syscall (netbsd-arm64-cgo), type SysProcAttr struct, Pgid int +pkg syscall (netbsd-arm64-cgo), type SysProcAttr struct, Ptrace bool +pkg syscall (netbsd-arm64-cgo), type SysProcAttr struct, Setctty bool +pkg syscall (netbsd-arm64-cgo), type SysProcAttr struct, Setpgid bool +pkg syscall (netbsd-arm64-cgo), type SysProcAttr struct, Setsid bool +pkg syscall (netbsd-arm64-cgo), type Termios struct +pkg syscall (netbsd-arm64-cgo), type Termios struct, Cc [20]uint8 +pkg syscall (netbsd-arm64-cgo), type Termios struct, Cflag uint32 +pkg syscall (netbsd-arm64-cgo), type Termios struct, Iflag uint32 +pkg syscall (netbsd-arm64-cgo), type Termios struct, Ispeed int32 +pkg syscall (netbsd-arm64-cgo), type Termios struct, Lflag uint32 +pkg syscall (netbsd-arm64-cgo), type Termios struct, Oflag uint32 +pkg syscall (netbsd-arm64-cgo), type Termios struct, Ospeed int32 +pkg syscall (netbsd-arm64-cgo), type Timespec struct, Nsec int64 +pkg syscall (netbsd-arm64-cgo), type Timespec struct, Sec int64 +pkg syscall (netbsd-arm64-cgo), type Timeval struct, Pad_cgo_0 [4]uint8 +pkg syscall (netbsd-arm64-cgo), type Timeval struct, Sec int64 +pkg syscall (netbsd-arm64-cgo), type Timeval struct, Usec int32 +pkg syscall (netbsd-arm64-cgo), type WaitStatus uint32 +pkg syscall (netbsd-arm64-cgo), var Stderr int +pkg syscall (netbsd-arm64-cgo), var Stdin int +pkg syscall (netbsd-arm64-cgo), var Stdout int +pkg syscall (netbsd-arm64), const AF_APPLETALK = 16 +pkg syscall (netbsd-arm64), const AF_APPLETALK ideal-int +pkg syscall (netbsd-arm64), const AF_ARP = 28 +pkg syscall (netbsd-arm64), const AF_ARP ideal-int +pkg syscall (netbsd-arm64), const AF_BLUETOOTH = 31 +pkg syscall (netbsd-arm64), const AF_BLUETOOTH ideal-int +pkg syscall (netbsd-arm64), const AF_CCITT = 10 +pkg syscall (netbsd-arm64), const AF_CCITT ideal-int +pkg syscall (netbsd-arm64), const AF_CHAOS = 5 +pkg syscall (netbsd-arm64), const AF_CHAOS ideal-int +pkg syscall (netbsd-arm64), const AF_CNT = 21 +pkg syscall (netbsd-arm64), const AF_CNT ideal-int +pkg syscall (netbsd-arm64), const AF_COIP = 20 +pkg syscall (netbsd-arm64), const AF_COIP ideal-int +pkg syscall (netbsd-arm64), const AF_DATAKIT = 9 +pkg syscall (netbsd-arm64), const AF_DATAKIT ideal-int +pkg syscall (netbsd-arm64), const AF_DECnet = 12 +pkg syscall (netbsd-arm64), const AF_DECnet ideal-int +pkg syscall (netbsd-arm64), const AF_DLI = 13 +pkg syscall (netbsd-arm64), const AF_DLI ideal-int +pkg syscall (netbsd-arm64), const AF_E164 = 26 +pkg syscall (netbsd-arm64), const AF_E164 ideal-int +pkg syscall (netbsd-arm64), const AF_ECMA = 8 +pkg syscall (netbsd-arm64), const AF_ECMA ideal-int +pkg syscall (netbsd-arm64), const AF_HYLINK = 15 +pkg syscall (netbsd-arm64), const AF_HYLINK ideal-int +pkg syscall (netbsd-arm64), const AF_IEEE80211 = 32 +pkg syscall (netbsd-arm64), const AF_IEEE80211 ideal-int +pkg syscall (netbsd-arm64), const AF_IMPLINK = 3 +pkg syscall (netbsd-arm64), const AF_IMPLINK ideal-int +pkg syscall (netbsd-arm64), const AF_INET6 = 24 +pkg syscall (netbsd-arm64), const AF_IPX = 23 +pkg syscall (netbsd-arm64), const AF_IPX ideal-int +pkg syscall (netbsd-arm64), const AF_ISDN = 26 +pkg syscall (netbsd-arm64), const AF_ISDN ideal-int +pkg syscall (netbsd-arm64), const AF_ISO = 7 +pkg syscall (netbsd-arm64), const AF_ISO ideal-int +pkg syscall (netbsd-arm64), const AF_LAT = 14 +pkg syscall (netbsd-arm64), const AF_LAT ideal-int +pkg syscall (netbsd-arm64), const AF_LINK = 18 +pkg syscall (netbsd-arm64), const AF_LINK ideal-int +pkg syscall (netbsd-arm64), const AF_LOCAL = 1 +pkg syscall (netbsd-arm64), const AF_LOCAL ideal-int +pkg syscall (netbsd-arm64), const AF_MAX = 35 +pkg syscall (netbsd-arm64), const AF_MAX ideal-int +pkg syscall (netbsd-arm64), const AF_MPLS = 33 +pkg syscall (netbsd-arm64), const AF_MPLS ideal-int +pkg syscall (netbsd-arm64), const AF_NATM = 27 +pkg syscall (netbsd-arm64), const AF_NATM ideal-int +pkg syscall (netbsd-arm64), const AF_NS = 6 +pkg syscall (netbsd-arm64), const AF_NS ideal-int +pkg syscall (netbsd-arm64), const AF_OROUTE = 17 +pkg syscall (netbsd-arm64), const AF_OROUTE ideal-int +pkg syscall (netbsd-arm64), const AF_OSI = 7 +pkg syscall (netbsd-arm64), const AF_OSI ideal-int +pkg syscall (netbsd-arm64), const AF_PUP = 4 +pkg syscall (netbsd-arm64), const AF_PUP ideal-int +pkg syscall (netbsd-arm64), const AF_ROUTE = 34 +pkg syscall (netbsd-arm64), const AF_ROUTE ideal-int +pkg syscall (netbsd-arm64), const AF_SNA = 11 +pkg syscall (netbsd-arm64), const AF_SNA ideal-int +pkg syscall (netbsd-arm64), const ARPHRD_ARCNET = 7 +pkg syscall (netbsd-arm64), const ARPHRD_ARCNET ideal-int +pkg syscall (netbsd-arm64), const ARPHRD_ETHER = 1 +pkg syscall (netbsd-arm64), const ARPHRD_ETHER ideal-int +pkg syscall (netbsd-arm64), const ARPHRD_FRELAY = 15 +pkg syscall (netbsd-arm64), const ARPHRD_FRELAY ideal-int +pkg syscall (netbsd-arm64), const ARPHRD_IEEE1394 = 24 +pkg syscall (netbsd-arm64), const ARPHRD_IEEE1394 ideal-int +pkg syscall (netbsd-arm64), const ARPHRD_IEEE802 = 6 +pkg syscall (netbsd-arm64), const ARPHRD_IEEE802 ideal-int +pkg syscall (netbsd-arm64), const ARPHRD_STRIP = 23 +pkg syscall (netbsd-arm64), const ARPHRD_STRIP ideal-int +pkg syscall (netbsd-arm64), const B0 = 0 +pkg syscall (netbsd-arm64), const B0 ideal-int +pkg syscall (netbsd-arm64), const B110 = 110 +pkg syscall (netbsd-arm64), const B110 ideal-int +pkg syscall (netbsd-arm64), const B115200 = 115200 +pkg syscall (netbsd-arm64), const B115200 ideal-int +pkg syscall (netbsd-arm64), const B1200 = 1200 +pkg syscall (netbsd-arm64), const B1200 ideal-int +pkg syscall (netbsd-arm64), const B134 = 134 +pkg syscall (netbsd-arm64), const B134 ideal-int +pkg syscall (netbsd-arm64), const B14400 = 14400 +pkg syscall (netbsd-arm64), const B14400 ideal-int +pkg syscall (netbsd-arm64), const B150 = 150 +pkg syscall (netbsd-arm64), const B150 ideal-int +pkg syscall (netbsd-arm64), const B1800 = 1800 +pkg syscall (netbsd-arm64), const B1800 ideal-int +pkg syscall (netbsd-arm64), const B19200 = 19200 +pkg syscall (netbsd-arm64), const B19200 ideal-int +pkg syscall (netbsd-arm64), const B200 = 200 +pkg syscall (netbsd-arm64), const B200 ideal-int +pkg syscall (netbsd-arm64), const B230400 = 230400 +pkg syscall (netbsd-arm64), const B230400 ideal-int +pkg syscall (netbsd-arm64), const B2400 = 2400 +pkg syscall (netbsd-arm64), const B2400 ideal-int +pkg syscall (netbsd-arm64), const B28800 = 28800 +pkg syscall (netbsd-arm64), const B28800 ideal-int +pkg syscall (netbsd-arm64), const B300 = 300 +pkg syscall (netbsd-arm64), const B300 ideal-int +pkg syscall (netbsd-arm64), const B38400 = 38400 +pkg syscall (netbsd-arm64), const B38400 ideal-int +pkg syscall (netbsd-arm64), const B460800 = 460800 +pkg syscall (netbsd-arm64), const B460800 ideal-int +pkg syscall (netbsd-arm64), const B4800 = 4800 +pkg syscall (netbsd-arm64), const B4800 ideal-int +pkg syscall (netbsd-arm64), const B50 = 50 +pkg syscall (netbsd-arm64), const B50 ideal-int +pkg syscall (netbsd-arm64), const B57600 = 57600 +pkg syscall (netbsd-arm64), const B57600 ideal-int +pkg syscall (netbsd-arm64), const B600 = 600 +pkg syscall (netbsd-arm64), const B600 ideal-int +pkg syscall (netbsd-arm64), const B7200 = 7200 +pkg syscall (netbsd-arm64), const B7200 ideal-int +pkg syscall (netbsd-arm64), const B75 = 75 +pkg syscall (netbsd-arm64), const B75 ideal-int +pkg syscall (netbsd-arm64), const B76800 = 76800 +pkg syscall (netbsd-arm64), const B76800 ideal-int +pkg syscall (netbsd-arm64), const B921600 = 921600 +pkg syscall (netbsd-arm64), const B921600 ideal-int +pkg syscall (netbsd-arm64), const B9600 = 9600 +pkg syscall (netbsd-arm64), const B9600 ideal-int +pkg syscall (netbsd-arm64), const BIOCFEEDBACK = 2147762813 +pkg syscall (netbsd-arm64), const BIOCFEEDBACK ideal-int +pkg syscall (netbsd-arm64), const BIOCFLUSH = 536887912 +pkg syscall (netbsd-arm64), const BIOCFLUSH ideal-int +pkg syscall (netbsd-arm64), const BIOCGBLEN = 1074020966 +pkg syscall (netbsd-arm64), const BIOCGBLEN ideal-int +pkg syscall (netbsd-arm64), const BIOCGDLT = 1074020970 +pkg syscall (netbsd-arm64), const BIOCGDLT ideal-int +pkg syscall (netbsd-arm64), const BIOCGDLTLIST = 3222291063 +pkg syscall (netbsd-arm64), const BIOCGDLTLIST ideal-int +pkg syscall (netbsd-arm64), const BIOCGETIF = 1083196011 +pkg syscall (netbsd-arm64), const BIOCGETIF ideal-int +pkg syscall (netbsd-arm64), const BIOCGFEEDBACK = 1074020988 +pkg syscall (netbsd-arm64), const BIOCGFEEDBACK ideal-int +pkg syscall (netbsd-arm64), const BIOCGHDRCMPLT = 1074020980 +pkg syscall (netbsd-arm64), const BIOCGHDRCMPLT ideal-int +pkg syscall (netbsd-arm64), const BIOCGRTIMEOUT = 1074807419 +pkg syscall (netbsd-arm64), const BIOCGRTIMEOUT ideal-int +pkg syscall (netbsd-arm64), const BIOCGSEESENT = 1074020984 +pkg syscall (netbsd-arm64), const BIOCGSEESENT ideal-int +pkg syscall (netbsd-arm64), const BIOCGSTATS = 1082147439 +pkg syscall (netbsd-arm64), const BIOCGSTATS ideal-int +pkg syscall (netbsd-arm64), const BIOCGSTATSOLD = 1074283119 +pkg syscall (netbsd-arm64), const BIOCGSTATSOLD ideal-int +pkg syscall (netbsd-arm64), const BIOCIMMEDIATE = 2147762800 +pkg syscall (netbsd-arm64), const BIOCIMMEDIATE ideal-int +pkg syscall (netbsd-arm64), const BIOCPROMISC = 536887913 +pkg syscall (netbsd-arm64), const BIOCPROMISC ideal-int +pkg syscall (netbsd-arm64), const BIOCSBLEN = 3221504614 +pkg syscall (netbsd-arm64), const BIOCSBLEN ideal-int +pkg syscall (netbsd-arm64), const BIOCSDLT = 2147762806 +pkg syscall (netbsd-arm64), const BIOCSDLT ideal-int +pkg syscall (netbsd-arm64), const BIOCSETF = 2148549223 +pkg syscall (netbsd-arm64), const BIOCSETF ideal-int +pkg syscall (netbsd-arm64), const BIOCSETIF = 2156937836 +pkg syscall (netbsd-arm64), const BIOCSETIF ideal-int +pkg syscall (netbsd-arm64), const BIOCSFEEDBACK = 2147762813 +pkg syscall (netbsd-arm64), const BIOCSFEEDBACK ideal-int +pkg syscall (netbsd-arm64), const BIOCSHDRCMPLT = 2147762805 +pkg syscall (netbsd-arm64), const BIOCSHDRCMPLT ideal-int +pkg syscall (netbsd-arm64), const BIOCSRTIMEOUT = 2148549242 +pkg syscall (netbsd-arm64), const BIOCSRTIMEOUT ideal-int +pkg syscall (netbsd-arm64), const BIOCSSEESENT = 2147762809 +pkg syscall (netbsd-arm64), const BIOCSSEESENT ideal-int +pkg syscall (netbsd-arm64), const BIOCSTCPF = 2148549234 +pkg syscall (netbsd-arm64), const BIOCSTCPF ideal-int +pkg syscall (netbsd-arm64), const BIOCSUDPF = 2148549235 +pkg syscall (netbsd-arm64), const BIOCSUDPF ideal-int +pkg syscall (netbsd-arm64), const BIOCVERSION = 1074020977 +pkg syscall (netbsd-arm64), const BIOCVERSION ideal-int +pkg syscall (netbsd-arm64), const BPF_A = 16 +pkg syscall (netbsd-arm64), const BPF_ABS = 32 +pkg syscall (netbsd-arm64), const BPF_ABS ideal-int +pkg syscall (netbsd-arm64), const BPF_ADD = 0 +pkg syscall (netbsd-arm64), const BPF_ADD ideal-int +pkg syscall (netbsd-arm64), const BPF_A ideal-int +pkg syscall (netbsd-arm64), const BPF_ALIGNMENT32 = 4 +pkg syscall (netbsd-arm64), const BPF_ALIGNMENT32 ideal-int +pkg syscall (netbsd-arm64), const BPF_ALIGNMENT = 8 +pkg syscall (netbsd-arm64), const BPF_ALIGNMENT ideal-int +pkg syscall (netbsd-arm64), const BPF_ALU = 4 +pkg syscall (netbsd-arm64), const BPF_ALU ideal-int +pkg syscall (netbsd-arm64), const BPF_AND = 80 +pkg syscall (netbsd-arm64), const BPF_AND ideal-int +pkg syscall (netbsd-arm64), const BPF_B = 16 +pkg syscall (netbsd-arm64), const BPF_B ideal-int +pkg syscall (netbsd-arm64), const BPF_DFLTBUFSIZE = 1048576 +pkg syscall (netbsd-arm64), const BPF_DFLTBUFSIZE ideal-int +pkg syscall (netbsd-arm64), const BPF_DIV = 48 +pkg syscall (netbsd-arm64), const BPF_DIV ideal-int +pkg syscall (netbsd-arm64), const BPF_H = 8 +pkg syscall (netbsd-arm64), const BPF_H ideal-int +pkg syscall (netbsd-arm64), const BPF_IMM = 0 +pkg syscall (netbsd-arm64), const BPF_IMM ideal-int +pkg syscall (netbsd-arm64), const BPF_IND = 64 +pkg syscall (netbsd-arm64), const BPF_IND ideal-int +pkg syscall (netbsd-arm64), const BPF_JA = 0 +pkg syscall (netbsd-arm64), const BPF_JA ideal-int +pkg syscall (netbsd-arm64), const BPF_JEQ = 16 +pkg syscall (netbsd-arm64), const BPF_JEQ ideal-int +pkg syscall (netbsd-arm64), const BPF_JGE = 48 +pkg syscall (netbsd-arm64), const BPF_JGE ideal-int +pkg syscall (netbsd-arm64), const BPF_JGT = 32 +pkg syscall (netbsd-arm64), const BPF_JGT ideal-int +pkg syscall (netbsd-arm64), const BPF_JMP = 5 +pkg syscall (netbsd-arm64), const BPF_JMP ideal-int +pkg syscall (netbsd-arm64), const BPF_JSET = 64 +pkg syscall (netbsd-arm64), const BPF_JSET ideal-int +pkg syscall (netbsd-arm64), const BPF_K = 0 +pkg syscall (netbsd-arm64), const BPF_K ideal-int +pkg syscall (netbsd-arm64), const BPF_LD = 0 +pkg syscall (netbsd-arm64), const BPF_LD ideal-int +pkg syscall (netbsd-arm64), const BPF_LDX = 1 +pkg syscall (netbsd-arm64), const BPF_LDX ideal-int +pkg syscall (netbsd-arm64), const BPF_LEN = 128 +pkg syscall (netbsd-arm64), const BPF_LEN ideal-int +pkg syscall (netbsd-arm64), const BPF_LSH = 96 +pkg syscall (netbsd-arm64), const BPF_LSH ideal-int +pkg syscall (netbsd-arm64), const BPF_MAJOR_VERSION = 1 +pkg syscall (netbsd-arm64), const BPF_MAJOR_VERSION ideal-int +pkg syscall (netbsd-arm64), const BPF_MAXBUFSIZE = 16777216 +pkg syscall (netbsd-arm64), const BPF_MAXBUFSIZE ideal-int +pkg syscall (netbsd-arm64), const BPF_MAXINSNS = 512 +pkg syscall (netbsd-arm64), const BPF_MAXINSNS ideal-int +pkg syscall (netbsd-arm64), const BPF_MEM = 96 +pkg syscall (netbsd-arm64), const BPF_MEM ideal-int +pkg syscall (netbsd-arm64), const BPF_MEMWORDS = 16 +pkg syscall (netbsd-arm64), const BPF_MEMWORDS ideal-int +pkg syscall (netbsd-arm64), const BPF_MINBUFSIZE = 32 +pkg syscall (netbsd-arm64), const BPF_MINBUFSIZE ideal-int +pkg syscall (netbsd-arm64), const BPF_MINOR_VERSION = 1 +pkg syscall (netbsd-arm64), const BPF_MINOR_VERSION ideal-int +pkg syscall (netbsd-arm64), const BPF_MISC = 7 +pkg syscall (netbsd-arm64), const BPF_MISC ideal-int +pkg syscall (netbsd-arm64), const BPF_MSH = 160 +pkg syscall (netbsd-arm64), const BPF_MSH ideal-int +pkg syscall (netbsd-arm64), const BPF_MUL = 32 +pkg syscall (netbsd-arm64), const BPF_MUL ideal-int +pkg syscall (netbsd-arm64), const BPF_NEG = 128 +pkg syscall (netbsd-arm64), const BPF_NEG ideal-int +pkg syscall (netbsd-arm64), const BPF_OR = 64 +pkg syscall (netbsd-arm64), const BPF_OR ideal-int +pkg syscall (netbsd-arm64), const BPF_RELEASE = 199606 +pkg syscall (netbsd-arm64), const BPF_RELEASE ideal-int +pkg syscall (netbsd-arm64), const BPF_RET = 6 +pkg syscall (netbsd-arm64), const BPF_RET ideal-int +pkg syscall (netbsd-arm64), const BPF_RSH = 112 +pkg syscall (netbsd-arm64), const BPF_RSH ideal-int +pkg syscall (netbsd-arm64), const BPF_ST = 2 +pkg syscall (netbsd-arm64), const BPF_ST ideal-int +pkg syscall (netbsd-arm64), const BPF_STX = 3 +pkg syscall (netbsd-arm64), const BPF_STX ideal-int +pkg syscall (netbsd-arm64), const BPF_SUB = 16 +pkg syscall (netbsd-arm64), const BPF_SUB ideal-int +pkg syscall (netbsd-arm64), const BPF_TAX = 0 +pkg syscall (netbsd-arm64), const BPF_TAX ideal-int +pkg syscall (netbsd-arm64), const BPF_TXA = 128 +pkg syscall (netbsd-arm64), const BPF_TXA ideal-int +pkg syscall (netbsd-arm64), const BPF_W = 0 +pkg syscall (netbsd-arm64), const BPF_W ideal-int +pkg syscall (netbsd-arm64), const BPF_X = 8 +pkg syscall (netbsd-arm64), const BPF_X ideal-int +pkg syscall (netbsd-arm64), const BRKINT = 2 +pkg syscall (netbsd-arm64), const BRKINT ideal-int +pkg syscall (netbsd-arm64), const CFLUSH = 15 +pkg syscall (netbsd-arm64), const CFLUSH ideal-int +pkg syscall (netbsd-arm64), const CLOCAL = 32768 +pkg syscall (netbsd-arm64), const CLOCAL ideal-int +pkg syscall (netbsd-arm64), const CLONE_CSIGNAL = 255 +pkg syscall (netbsd-arm64), const CLONE_CSIGNAL ideal-int +pkg syscall (netbsd-arm64), const CLONE_FILES = 1024 +pkg syscall (netbsd-arm64), const CLONE_FILES ideal-int +pkg syscall (netbsd-arm64), const CLONE_FS = 512 +pkg syscall (netbsd-arm64), const CLONE_FS ideal-int +pkg syscall (netbsd-arm64), const CLONE_PID = 4096 +pkg syscall (netbsd-arm64), const CLONE_PID ideal-int +pkg syscall (netbsd-arm64), const CLONE_PTRACE = 8192 +pkg syscall (netbsd-arm64), const CLONE_PTRACE ideal-int +pkg syscall (netbsd-arm64), const CLONE_SIGHAND = 2048 +pkg syscall (netbsd-arm64), const CLONE_SIGHAND ideal-int +pkg syscall (netbsd-arm64), const CLONE_VFORK = 16384 +pkg syscall (netbsd-arm64), const CLONE_VFORK ideal-int +pkg syscall (netbsd-arm64), const CLONE_VM = 256 +pkg syscall (netbsd-arm64), const CLONE_VM ideal-int +pkg syscall (netbsd-arm64), const CREAD = 2048 +pkg syscall (netbsd-arm64), const CREAD ideal-int +pkg syscall (netbsd-arm64), const CS5 = 0 +pkg syscall (netbsd-arm64), const CS5 ideal-int +pkg syscall (netbsd-arm64), const CS6 = 256 +pkg syscall (netbsd-arm64), const CS6 ideal-int +pkg syscall (netbsd-arm64), const CS7 = 512 +pkg syscall (netbsd-arm64), const CS7 ideal-int +pkg syscall (netbsd-arm64), const CS8 = 768 +pkg syscall (netbsd-arm64), const CS8 ideal-int +pkg syscall (netbsd-arm64), const CSIZE = 768 +pkg syscall (netbsd-arm64), const CSIZE ideal-int +pkg syscall (netbsd-arm64), const CSTART = 17 +pkg syscall (netbsd-arm64), const CSTART ideal-int +pkg syscall (netbsd-arm64), const CSTATUS = 20 +pkg syscall (netbsd-arm64), const CSTATUS ideal-int +pkg syscall (netbsd-arm64), const CSTOP = 19 +pkg syscall (netbsd-arm64), const CSTOPB = 1024 +pkg syscall (netbsd-arm64), const CSTOPB ideal-int +pkg syscall (netbsd-arm64), const CSTOP ideal-int +pkg syscall (netbsd-arm64), const CSUSP = 26 +pkg syscall (netbsd-arm64), const CSUSP ideal-int +pkg syscall (netbsd-arm64), const CTL_MAXNAME = 12 +pkg syscall (netbsd-arm64), const CTL_MAXNAME ideal-int +pkg syscall (netbsd-arm64), const CTL_NET = 4 +pkg syscall (netbsd-arm64), const CTL_NET ideal-int +pkg syscall (netbsd-arm64), const CTL_QUERY = -2 +pkg syscall (netbsd-arm64), const CTL_QUERY ideal-int +pkg syscall (netbsd-arm64), const DIOCBSFLUSH = 536896632 +pkg syscall (netbsd-arm64), const DIOCBSFLUSH ideal-int +pkg syscall (netbsd-arm64), const DLT_A429 = 184 +pkg syscall (netbsd-arm64), const DLT_A429 ideal-int +pkg syscall (netbsd-arm64), const DLT_A653_ICM = 185 +pkg syscall (netbsd-arm64), const DLT_A653_ICM ideal-int +pkg syscall (netbsd-arm64), const DLT_AIRONET_HEADER = 120 +pkg syscall (netbsd-arm64), const DLT_AIRONET_HEADER ideal-int +pkg syscall (netbsd-arm64), const DLT_AOS = 222 +pkg syscall (netbsd-arm64), const DLT_AOS ideal-int +pkg syscall (netbsd-arm64), const DLT_APPLE_IP_OVER_IEEE1394 = 138 +pkg syscall (netbsd-arm64), const DLT_APPLE_IP_OVER_IEEE1394 ideal-int +pkg syscall (netbsd-arm64), const DLT_ARCNET = 7 +pkg syscall (netbsd-arm64), const DLT_ARCNET ideal-int +pkg syscall (netbsd-arm64), const DLT_ARCNET_LINUX = 129 +pkg syscall (netbsd-arm64), const DLT_ARCNET_LINUX ideal-int +pkg syscall (netbsd-arm64), const DLT_ATM_CLIP = 19 +pkg syscall (netbsd-arm64), const DLT_ATM_CLIP ideal-int +pkg syscall (netbsd-arm64), const DLT_ATM_RFC1483 = 11 +pkg syscall (netbsd-arm64), const DLT_ATM_RFC1483 ideal-int +pkg syscall (netbsd-arm64), const DLT_AURORA = 126 +pkg syscall (netbsd-arm64), const DLT_AURORA ideal-int +pkg syscall (netbsd-arm64), const DLT_AX25 = 3 +pkg syscall (netbsd-arm64), const DLT_AX25 ideal-int +pkg syscall (netbsd-arm64), const DLT_AX25_KISS = 202 +pkg syscall (netbsd-arm64), const DLT_AX25_KISS ideal-int +pkg syscall (netbsd-arm64), const DLT_BACNET_MS_TP = 165 +pkg syscall (netbsd-arm64), const DLT_BACNET_MS_TP ideal-int +pkg syscall (netbsd-arm64), const DLT_BLUETOOTH_HCI_H4 = 187 +pkg syscall (netbsd-arm64), const DLT_BLUETOOTH_HCI_H4 ideal-int +pkg syscall (netbsd-arm64), const DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 201 +pkg syscall (netbsd-arm64), const DLT_BLUETOOTH_HCI_H4_WITH_PHDR ideal-int +pkg syscall (netbsd-arm64), const DLT_CAN20B = 190 +pkg syscall (netbsd-arm64), const DLT_CAN20B ideal-int +pkg syscall (netbsd-arm64), const DLT_CAN_SOCKETCAN = 227 +pkg syscall (netbsd-arm64), const DLT_CAN_SOCKETCAN ideal-int +pkg syscall (netbsd-arm64), const DLT_CHAOS = 5 +pkg syscall (netbsd-arm64), const DLT_CHAOS ideal-int +pkg syscall (netbsd-arm64), const DLT_C_HDLC = 104 +pkg syscall (netbsd-arm64), const DLT_C_HDLC ideal-int +pkg syscall (netbsd-arm64), const DLT_C_HDLC_WITH_DIR = 205 +pkg syscall (netbsd-arm64), const DLT_C_HDLC_WITH_DIR ideal-int +pkg syscall (netbsd-arm64), const DLT_CISCO_IOS = 118 +pkg syscall (netbsd-arm64), const DLT_CISCO_IOS ideal-int +pkg syscall (netbsd-arm64), const DLT_DECT = 221 +pkg syscall (netbsd-arm64), const DLT_DECT ideal-int +pkg syscall (netbsd-arm64), const DLT_DOCSIS = 143 +pkg syscall (netbsd-arm64), const DLT_DOCSIS ideal-int +pkg syscall (netbsd-arm64), const DLT_ECONET = 115 +pkg syscall (netbsd-arm64), const DLT_ECONET ideal-int +pkg syscall (netbsd-arm64), const DLT_EN10MB = 1 +pkg syscall (netbsd-arm64), const DLT_EN10MB ideal-int +pkg syscall (netbsd-arm64), const DLT_EN3MB = 2 +pkg syscall (netbsd-arm64), const DLT_EN3MB ideal-int +pkg syscall (netbsd-arm64), const DLT_ENC = 109 +pkg syscall (netbsd-arm64), const DLT_ENC ideal-int +pkg syscall (netbsd-arm64), const DLT_ERF = 197 +pkg syscall (netbsd-arm64), const DLT_ERF_ETH = 175 +pkg syscall (netbsd-arm64), const DLT_ERF_ETH ideal-int +pkg syscall (netbsd-arm64), const DLT_ERF ideal-int +pkg syscall (netbsd-arm64), const DLT_ERF_POS = 176 +pkg syscall (netbsd-arm64), const DLT_ERF_POS ideal-int +pkg syscall (netbsd-arm64), const DLT_FC_2 = 224 +pkg syscall (netbsd-arm64), const DLT_FC_2 ideal-int +pkg syscall (netbsd-arm64), const DLT_FC_2_WITH_FRAME_DELIMS = 225 +pkg syscall (netbsd-arm64), const DLT_FC_2_WITH_FRAME_DELIMS ideal-int +pkg syscall (netbsd-arm64), const DLT_FDDI = 10 +pkg syscall (netbsd-arm64), const DLT_FDDI ideal-int +pkg syscall (netbsd-arm64), const DLT_FLEXRAY = 210 +pkg syscall (netbsd-arm64), const DLT_FLEXRAY ideal-int +pkg syscall (netbsd-arm64), const DLT_FRELAY = 107 +pkg syscall (netbsd-arm64), const DLT_FRELAY ideal-int +pkg syscall (netbsd-arm64), const DLT_FRELAY_WITH_DIR = 206 +pkg syscall (netbsd-arm64), const DLT_FRELAY_WITH_DIR ideal-int +pkg syscall (netbsd-arm64), const DLT_GCOM_SERIAL = 173 +pkg syscall (netbsd-arm64), const DLT_GCOM_SERIAL ideal-int +pkg syscall (netbsd-arm64), const DLT_GCOM_T1E1 = 172 +pkg syscall (netbsd-arm64), const DLT_GCOM_T1E1 ideal-int +pkg syscall (netbsd-arm64), const DLT_GPF_F = 171 +pkg syscall (netbsd-arm64), const DLT_GPF_F ideal-int +pkg syscall (netbsd-arm64), const DLT_GPF_T = 170 +pkg syscall (netbsd-arm64), const DLT_GPF_T ideal-int +pkg syscall (netbsd-arm64), const DLT_GPRS_LLC = 169 +pkg syscall (netbsd-arm64), const DLT_GPRS_LLC ideal-int +pkg syscall (netbsd-arm64), const DLT_GSMTAP_ABIS = 218 +pkg syscall (netbsd-arm64), const DLT_GSMTAP_ABIS ideal-int +pkg syscall (netbsd-arm64), const DLT_GSMTAP_UM = 217 +pkg syscall (netbsd-arm64), const DLT_GSMTAP_UM ideal-int +pkg syscall (netbsd-arm64), const DLT_HDLC = 16 +pkg syscall (netbsd-arm64), const DLT_HDLC ideal-int +pkg syscall (netbsd-arm64), const DLT_HHDLC = 121 +pkg syscall (netbsd-arm64), const DLT_HHDLC ideal-int +pkg syscall (netbsd-arm64), const DLT_HIPPI = 15 +pkg syscall (netbsd-arm64), const DLT_HIPPI ideal-int +pkg syscall (netbsd-arm64), const DLT_IBM_SN = 146 +pkg syscall (netbsd-arm64), const DLT_IBM_SN ideal-int +pkg syscall (netbsd-arm64), const DLT_IBM_SP = 145 +pkg syscall (netbsd-arm64), const DLT_IBM_SP ideal-int +pkg syscall (netbsd-arm64), const DLT_IEEE802_11 = 105 +pkg syscall (netbsd-arm64), const DLT_IEEE802_11 ideal-int +pkg syscall (netbsd-arm64), const DLT_IEEE802_11_RADIO = 127 +pkg syscall (netbsd-arm64), const DLT_IEEE802_11_RADIO_AVS = 163 +pkg syscall (netbsd-arm64), const DLT_IEEE802_11_RADIO_AVS ideal-int +pkg syscall (netbsd-arm64), const DLT_IEEE802_11_RADIO ideal-int +pkg syscall (netbsd-arm64), const DLT_IEEE802_15_4 = 195 +pkg syscall (netbsd-arm64), const DLT_IEEE802_15_4 ideal-int +pkg syscall (netbsd-arm64), const DLT_IEEE802_15_4_LINUX = 191 +pkg syscall (netbsd-arm64), const DLT_IEEE802_15_4_LINUX ideal-int +pkg syscall (netbsd-arm64), const DLT_IEEE802_15_4_NONASK_PHY = 215 +pkg syscall (netbsd-arm64), const DLT_IEEE802_15_4_NONASK_PHY ideal-int +pkg syscall (netbsd-arm64), const DLT_IEEE802_16_MAC_CPS = 188 +pkg syscall (netbsd-arm64), const DLT_IEEE802_16_MAC_CPS ideal-int +pkg syscall (netbsd-arm64), const DLT_IEEE802_16_MAC_CPS_RADIO = 193 +pkg syscall (netbsd-arm64), const DLT_IEEE802_16_MAC_CPS_RADIO ideal-int +pkg syscall (netbsd-arm64), const DLT_IEEE802 = 6 +pkg syscall (netbsd-arm64), const DLT_IEEE802 ideal-int +pkg syscall (netbsd-arm64), const DLT_IPMB = 199 +pkg syscall (netbsd-arm64), const DLT_IPMB ideal-int +pkg syscall (netbsd-arm64), const DLT_IPMB_LINUX = 209 +pkg syscall (netbsd-arm64), const DLT_IPMB_LINUX ideal-int +pkg syscall (netbsd-arm64), const DLT_IPNET = 226 +pkg syscall (netbsd-arm64), const DLT_IPNET ideal-int +pkg syscall (netbsd-arm64), const DLT_IP_OVER_FC = 122 +pkg syscall (netbsd-arm64), const DLT_IP_OVER_FC ideal-int +pkg syscall (netbsd-arm64), const DLT_IPV4 = 228 +pkg syscall (netbsd-arm64), const DLT_IPV4 ideal-int +pkg syscall (netbsd-arm64), const DLT_IPV6 = 229 +pkg syscall (netbsd-arm64), const DLT_IPV6 ideal-int +pkg syscall (netbsd-arm64), const DLT_JUNIPER_ATM1 = 137 +pkg syscall (netbsd-arm64), const DLT_JUNIPER_ATM1 ideal-int +pkg syscall (netbsd-arm64), const DLT_JUNIPER_ATM2 = 135 +pkg syscall (netbsd-arm64), const DLT_JUNIPER_ATM2 ideal-int +pkg syscall (netbsd-arm64), const DLT_JUNIPER_CHDLC = 181 +pkg syscall (netbsd-arm64), const DLT_JUNIPER_CHDLC ideal-int +pkg syscall (netbsd-arm64), const DLT_JUNIPER_ES = 132 +pkg syscall (netbsd-arm64), const DLT_JUNIPER_ES ideal-int +pkg syscall (netbsd-arm64), const DLT_JUNIPER_ETHER = 178 +pkg syscall (netbsd-arm64), const DLT_JUNIPER_ETHER ideal-int +pkg syscall (netbsd-arm64), const DLT_JUNIPER_FRELAY = 180 +pkg syscall (netbsd-arm64), const DLT_JUNIPER_FRELAY ideal-int +pkg syscall (netbsd-arm64), const DLT_JUNIPER_GGSN = 133 +pkg syscall (netbsd-arm64), const DLT_JUNIPER_GGSN ideal-int +pkg syscall (netbsd-arm64), const DLT_JUNIPER_ISM = 194 +pkg syscall (netbsd-arm64), const DLT_JUNIPER_ISM ideal-int +pkg syscall (netbsd-arm64), const DLT_JUNIPER_MFR = 134 +pkg syscall (netbsd-arm64), const DLT_JUNIPER_MFR ideal-int +pkg syscall (netbsd-arm64), const DLT_JUNIPER_MLFR = 131 +pkg syscall (netbsd-arm64), const DLT_JUNIPER_MLFR ideal-int +pkg syscall (netbsd-arm64), const DLT_JUNIPER_MLPPP = 130 +pkg syscall (netbsd-arm64), const DLT_JUNIPER_MLPPP ideal-int +pkg syscall (netbsd-arm64), const DLT_JUNIPER_MONITOR = 164 +pkg syscall (netbsd-arm64), const DLT_JUNIPER_MONITOR ideal-int +pkg syscall (netbsd-arm64), const DLT_JUNIPER_PIC_PEER = 174 +pkg syscall (netbsd-arm64), const DLT_JUNIPER_PIC_PEER ideal-int +pkg syscall (netbsd-arm64), const DLT_JUNIPER_PPP = 179 +pkg syscall (netbsd-arm64), const DLT_JUNIPER_PPP ideal-int +pkg syscall (netbsd-arm64), const DLT_JUNIPER_PPPOE = 167 +pkg syscall (netbsd-arm64), const DLT_JUNIPER_PPPOE_ATM = 168 +pkg syscall (netbsd-arm64), const DLT_JUNIPER_PPPOE_ATM ideal-int +pkg syscall (netbsd-arm64), const DLT_JUNIPER_PPPOE ideal-int +pkg syscall (netbsd-arm64), const DLT_JUNIPER_SERVICES = 136 +pkg syscall (netbsd-arm64), const DLT_JUNIPER_SERVICES ideal-int +pkg syscall (netbsd-arm64), const DLT_JUNIPER_ST = 200 +pkg syscall (netbsd-arm64), const DLT_JUNIPER_ST ideal-int +pkg syscall (netbsd-arm64), const DLT_JUNIPER_VP = 183 +pkg syscall (netbsd-arm64), const DLT_JUNIPER_VP ideal-int +pkg syscall (netbsd-arm64), const DLT_LAPB_WITH_DIR = 207 +pkg syscall (netbsd-arm64), const DLT_LAPB_WITH_DIR ideal-int +pkg syscall (netbsd-arm64), const DLT_LAPD = 203 +pkg syscall (netbsd-arm64), const DLT_LAPD ideal-int +pkg syscall (netbsd-arm64), const DLT_LIN = 212 +pkg syscall (netbsd-arm64), const DLT_LIN ideal-int +pkg syscall (netbsd-arm64), const DLT_LINUX_EVDEV = 216 +pkg syscall (netbsd-arm64), const DLT_LINUX_EVDEV ideal-int +pkg syscall (netbsd-arm64), const DLT_LINUX_IRDA = 144 +pkg syscall (netbsd-arm64), const DLT_LINUX_IRDA ideal-int +pkg syscall (netbsd-arm64), const DLT_LINUX_LAPD = 177 +pkg syscall (netbsd-arm64), const DLT_LINUX_LAPD ideal-int +pkg syscall (netbsd-arm64), const DLT_LINUX_SLL = 113 +pkg syscall (netbsd-arm64), const DLT_LINUX_SLL ideal-int +pkg syscall (netbsd-arm64), const DLT_LOOP = 108 +pkg syscall (netbsd-arm64), const DLT_LOOP ideal-int +pkg syscall (netbsd-arm64), const DLT_LTALK = 114 +pkg syscall (netbsd-arm64), const DLT_LTALK ideal-int +pkg syscall (netbsd-arm64), const DLT_MFR = 182 +pkg syscall (netbsd-arm64), const DLT_MFR ideal-int +pkg syscall (netbsd-arm64), const DLT_MOST = 211 +pkg syscall (netbsd-arm64), const DLT_MOST ideal-int +pkg syscall (netbsd-arm64), const DLT_MPLS = 219 +pkg syscall (netbsd-arm64), const DLT_MPLS ideal-int +pkg syscall (netbsd-arm64), const DLT_MTP2 = 140 +pkg syscall (netbsd-arm64), const DLT_MTP2 ideal-int +pkg syscall (netbsd-arm64), const DLT_MTP2_WITH_PHDR = 139 +pkg syscall (netbsd-arm64), const DLT_MTP2_WITH_PHDR ideal-int +pkg syscall (netbsd-arm64), const DLT_MTP3 = 141 +pkg syscall (netbsd-arm64), const DLT_MTP3 ideal-int +pkg syscall (netbsd-arm64), const DLT_NULL = 0 +pkg syscall (netbsd-arm64), const DLT_NULL ideal-int +pkg syscall (netbsd-arm64), const DLT_PCI_EXP = 125 +pkg syscall (netbsd-arm64), const DLT_PCI_EXP ideal-int +pkg syscall (netbsd-arm64), const DLT_PFLOG = 117 +pkg syscall (netbsd-arm64), const DLT_PFLOG ideal-int +pkg syscall (netbsd-arm64), const DLT_PFSYNC = 18 +pkg syscall (netbsd-arm64), const DLT_PFSYNC ideal-int +pkg syscall (netbsd-arm64), const DLT_PPI = 192 +pkg syscall (netbsd-arm64), const DLT_PPI ideal-int +pkg syscall (netbsd-arm64), const DLT_PPP = 9 +pkg syscall (netbsd-arm64), const DLT_PPP_BSDOS = 14 +pkg syscall (netbsd-arm64), const DLT_PPP_BSDOS ideal-int +pkg syscall (netbsd-arm64), const DLT_PPP_ETHER = 51 +pkg syscall (netbsd-arm64), const DLT_PPP_ETHER ideal-int +pkg syscall (netbsd-arm64), const DLT_PPP ideal-int +pkg syscall (netbsd-arm64), const DLT_PPP_PPPD = 166 +pkg syscall (netbsd-arm64), const DLT_PPP_PPPD ideal-int +pkg syscall (netbsd-arm64), const DLT_PPP_SERIAL = 50 +pkg syscall (netbsd-arm64), const DLT_PPP_SERIAL ideal-int +pkg syscall (netbsd-arm64), const DLT_PPP_WITH_DIR = 204 +pkg syscall (netbsd-arm64), const DLT_PPP_WITH_DIR ideal-int +pkg syscall (netbsd-arm64), const DLT_PRISM_HEADER = 119 +pkg syscall (netbsd-arm64), const DLT_PRISM_HEADER ideal-int +pkg syscall (netbsd-arm64), const DLT_PRONET = 4 +pkg syscall (netbsd-arm64), const DLT_PRONET ideal-int +pkg syscall (netbsd-arm64), const DLT_RAIF1 = 198 +pkg syscall (netbsd-arm64), const DLT_RAIF1 ideal-int +pkg syscall (netbsd-arm64), const DLT_RAW = 12 +pkg syscall (netbsd-arm64), const DLT_RAWAF_MASK = 35913728 +pkg syscall (netbsd-arm64), const DLT_RAWAF_MASK ideal-int +pkg syscall (netbsd-arm64), const DLT_RAW ideal-int +pkg syscall (netbsd-arm64), const DLT_RIO = 124 +pkg syscall (netbsd-arm64), const DLT_RIO ideal-int +pkg syscall (netbsd-arm64), const DLT_SCCP = 142 +pkg syscall (netbsd-arm64), const DLT_SCCP ideal-int +pkg syscall (netbsd-arm64), const DLT_SITA = 196 +pkg syscall (netbsd-arm64), const DLT_SITA ideal-int +pkg syscall (netbsd-arm64), const DLT_SLIP = 8 +pkg syscall (netbsd-arm64), const DLT_SLIP_BSDOS = 13 +pkg syscall (netbsd-arm64), const DLT_SLIP_BSDOS ideal-int +pkg syscall (netbsd-arm64), const DLT_SLIP ideal-int +pkg syscall (netbsd-arm64), const DLT_SUNATM = 123 +pkg syscall (netbsd-arm64), const DLT_SUNATM ideal-int +pkg syscall (netbsd-arm64), const DLT_SYMANTEC_FIREWALL = 99 +pkg syscall (netbsd-arm64), const DLT_SYMANTEC_FIREWALL ideal-int +pkg syscall (netbsd-arm64), const DLT_TZSP = 128 +pkg syscall (netbsd-arm64), const DLT_TZSP ideal-int +pkg syscall (netbsd-arm64), const DLT_USB = 186 +pkg syscall (netbsd-arm64), const DLT_USB ideal-int +pkg syscall (netbsd-arm64), const DLT_USB_LINUX = 189 +pkg syscall (netbsd-arm64), const DLT_USB_LINUX ideal-int +pkg syscall (netbsd-arm64), const DLT_USB_LINUX_MMAPPED = 220 +pkg syscall (netbsd-arm64), const DLT_USB_LINUX_MMAPPED ideal-int +pkg syscall (netbsd-arm64), const DLT_WIHART = 223 +pkg syscall (netbsd-arm64), const DLT_WIHART ideal-int +pkg syscall (netbsd-arm64), const DLT_X2E_SERIAL = 213 +pkg syscall (netbsd-arm64), const DLT_X2E_SERIAL ideal-int +pkg syscall (netbsd-arm64), const DLT_X2E_XORAYA = 214 +pkg syscall (netbsd-arm64), const DLT_X2E_XORAYA ideal-int +pkg syscall (netbsd-arm64), const DT_BLK = 6 +pkg syscall (netbsd-arm64), const DT_BLK ideal-int +pkg syscall (netbsd-arm64), const DT_CHR = 2 +pkg syscall (netbsd-arm64), const DT_CHR ideal-int +pkg syscall (netbsd-arm64), const DT_DIR = 4 +pkg syscall (netbsd-arm64), const DT_DIR ideal-int +pkg syscall (netbsd-arm64), const DT_FIFO = 1 +pkg syscall (netbsd-arm64), const DT_FIFO ideal-int +pkg syscall (netbsd-arm64), const DT_LNK = 10 +pkg syscall (netbsd-arm64), const DT_LNK ideal-int +pkg syscall (netbsd-arm64), const DT_REG = 8 +pkg syscall (netbsd-arm64), const DT_REG ideal-int +pkg syscall (netbsd-arm64), const DT_SOCK = 12 +pkg syscall (netbsd-arm64), const DT_SOCK ideal-int +pkg syscall (netbsd-arm64), const DT_UNKNOWN = 0 +pkg syscall (netbsd-arm64), const DT_UNKNOWN ideal-int +pkg syscall (netbsd-arm64), const DT_WHT = 14 +pkg syscall (netbsd-arm64), const DT_WHT ideal-int +pkg syscall (netbsd-arm64), const E2BIG = 7 +pkg syscall (netbsd-arm64), const EACCES = 13 +pkg syscall (netbsd-arm64), const EADDRINUSE = 48 +pkg syscall (netbsd-arm64), const EADDRNOTAVAIL = 49 +pkg syscall (netbsd-arm64), const EAFNOSUPPORT = 47 +pkg syscall (netbsd-arm64), const EAGAIN = 35 +pkg syscall (netbsd-arm64), const EALREADY = 37 +pkg syscall (netbsd-arm64), const EAUTH = 80 +pkg syscall (netbsd-arm64), const EAUTH Errno +pkg syscall (netbsd-arm64), const EBADF = 9 +pkg syscall (netbsd-arm64), const EBADMSG = 88 +pkg syscall (netbsd-arm64), const EBADMSG Errno +pkg syscall (netbsd-arm64), const EBADRPC = 72 +pkg syscall (netbsd-arm64), const EBADRPC Errno +pkg syscall (netbsd-arm64), const EBUSY = 16 +pkg syscall (netbsd-arm64), const ECANCELED = 87 +pkg syscall (netbsd-arm64), const ECHILD = 10 +pkg syscall (netbsd-arm64), const ECHO = 8 +pkg syscall (netbsd-arm64), const ECHOCTL = 64 +pkg syscall (netbsd-arm64), const ECHOCTL ideal-int +pkg syscall (netbsd-arm64), const ECHOE = 2 +pkg syscall (netbsd-arm64), const ECHOE ideal-int +pkg syscall (netbsd-arm64), const ECHO ideal-int +pkg syscall (netbsd-arm64), const ECHOK = 4 +pkg syscall (netbsd-arm64), const ECHOKE = 1 +pkg syscall (netbsd-arm64), const ECHOKE ideal-int +pkg syscall (netbsd-arm64), const ECHOK ideal-int +pkg syscall (netbsd-arm64), const ECHONL = 16 +pkg syscall (netbsd-arm64), const ECHONL ideal-int +pkg syscall (netbsd-arm64), const ECHOPRT = 32 +pkg syscall (netbsd-arm64), const ECHOPRT ideal-int +pkg syscall (netbsd-arm64), const ECONNABORTED = 53 +pkg syscall (netbsd-arm64), const ECONNREFUSED = 61 +pkg syscall (netbsd-arm64), const ECONNRESET = 54 +pkg syscall (netbsd-arm64), const EDEADLK = 11 +pkg syscall (netbsd-arm64), const EDESTADDRREQ = 39 +pkg syscall (netbsd-arm64), const EDOM = 33 +pkg syscall (netbsd-arm64), const EDQUOT = 69 +pkg syscall (netbsd-arm64), const EEXIST = 17 +pkg syscall (netbsd-arm64), const EFAULT = 14 +pkg syscall (netbsd-arm64), const EFBIG = 27 +pkg syscall (netbsd-arm64), const EFTYPE = 79 +pkg syscall (netbsd-arm64), const EFTYPE Errno +pkg syscall (netbsd-arm64), const EHOSTDOWN = 64 +pkg syscall (netbsd-arm64), const EHOSTUNREACH = 65 +pkg syscall (netbsd-arm64), const EIDRM = 82 +pkg syscall (netbsd-arm64), const EILSEQ = 85 +pkg syscall (netbsd-arm64), const EINPROGRESS = 36 +pkg syscall (netbsd-arm64), const EINTR = 4 +pkg syscall (netbsd-arm64), const EINVAL = 22 +pkg syscall (netbsd-arm64), const EIO = 5 +pkg syscall (netbsd-arm64), const EISCONN = 56 +pkg syscall (netbsd-arm64), const EISDIR = 21 +pkg syscall (netbsd-arm64), const ELAST = 96 +pkg syscall (netbsd-arm64), const ELAST Errno +pkg syscall (netbsd-arm64), const ELOOP = 62 +pkg syscall (netbsd-arm64), const EMFILE = 24 +pkg syscall (netbsd-arm64), const EMLINK = 31 +pkg syscall (netbsd-arm64), const EMSGSIZE = 40 +pkg syscall (netbsd-arm64), const EMUL_LINUX = 1 +pkg syscall (netbsd-arm64), const EMUL_LINUX32 = 5 +pkg syscall (netbsd-arm64), const EMUL_LINUX32 ideal-int +pkg syscall (netbsd-arm64), const EMUL_LINUX ideal-int +pkg syscall (netbsd-arm64), const EMUL_MAXID = 6 +pkg syscall (netbsd-arm64), const EMUL_MAXID ideal-int +pkg syscall (netbsd-arm64), const EMULTIHOP = 94 +pkg syscall (netbsd-arm64), const EMULTIHOP Errno +pkg syscall (netbsd-arm64), const ENAMETOOLONG = 63 +pkg syscall (netbsd-arm64), const ENEEDAUTH = 81 +pkg syscall (netbsd-arm64), const ENEEDAUTH Errno +pkg syscall (netbsd-arm64), const ENETDOWN = 50 +pkg syscall (netbsd-arm64), const ENETRESET = 52 +pkg syscall (netbsd-arm64), const ENETUNREACH = 51 +pkg syscall (netbsd-arm64), const ENFILE = 23 +pkg syscall (netbsd-arm64), const ENOATTR = 93 +pkg syscall (netbsd-arm64), const ENOATTR Errno +pkg syscall (netbsd-arm64), const ENOBUFS = 55 +pkg syscall (netbsd-arm64), const ENODATA = 89 +pkg syscall (netbsd-arm64), const ENODATA Errno +pkg syscall (netbsd-arm64), const ENODEV = 19 +pkg syscall (netbsd-arm64), const ENOEXEC = 8 +pkg syscall (netbsd-arm64), const ENOLCK = 77 +pkg syscall (netbsd-arm64), const ENOLINK = 95 +pkg syscall (netbsd-arm64), const ENOLINK Errno +pkg syscall (netbsd-arm64), const ENOMEM = 12 +pkg syscall (netbsd-arm64), const ENOMSG = 83 +pkg syscall (netbsd-arm64), const ENOPROTOOPT = 42 +pkg syscall (netbsd-arm64), const ENOSPC = 28 +pkg syscall (netbsd-arm64), const ENOSR = 90 +pkg syscall (netbsd-arm64), const ENOSR Errno +pkg syscall (netbsd-arm64), const ENOSTR = 91 +pkg syscall (netbsd-arm64), const ENOSTR Errno +pkg syscall (netbsd-arm64), const ENOSYS = 78 +pkg syscall (netbsd-arm64), const ENOTBLK = 15 +pkg syscall (netbsd-arm64), const ENOTCONN = 57 +pkg syscall (netbsd-arm64), const ENOTDIR = 20 +pkg syscall (netbsd-arm64), const ENOTEMPTY = 66 +pkg syscall (netbsd-arm64), const ENOTSOCK = 38 +pkg syscall (netbsd-arm64), const ENOTSUP = 86 +pkg syscall (netbsd-arm64), const ENOTTY = 25 +pkg syscall (netbsd-arm64), const ENXIO = 6 +pkg syscall (netbsd-arm64), const EOPNOTSUPP = 45 +pkg syscall (netbsd-arm64), const EOVERFLOW = 84 +pkg syscall (netbsd-arm64), const EPERM = 1 +pkg syscall (netbsd-arm64), const EPFNOSUPPORT = 46 +pkg syscall (netbsd-arm64), const EPIPE = 32 +pkg syscall (netbsd-arm64), const EPROCLIM = 67 +pkg syscall (netbsd-arm64), const EPROCLIM Errno +pkg syscall (netbsd-arm64), const EPROCUNAVAIL = 76 +pkg syscall (netbsd-arm64), const EPROCUNAVAIL Errno +pkg syscall (netbsd-arm64), const EPROGMISMATCH = 75 +pkg syscall (netbsd-arm64), const EPROGMISMATCH Errno +pkg syscall (netbsd-arm64), const EPROGUNAVAIL = 74 +pkg syscall (netbsd-arm64), const EPROGUNAVAIL Errno +pkg syscall (netbsd-arm64), const EPROTO = 96 +pkg syscall (netbsd-arm64), const EPROTO Errno +pkg syscall (netbsd-arm64), const EPROTONOSUPPORT = 43 +pkg syscall (netbsd-arm64), const EPROTOTYPE = 41 +pkg syscall (netbsd-arm64), const ERANGE = 34 +pkg syscall (netbsd-arm64), const EREMOTE = 71 +pkg syscall (netbsd-arm64), const EROFS = 30 +pkg syscall (netbsd-arm64), const ERPCMISMATCH = 73 +pkg syscall (netbsd-arm64), const ERPCMISMATCH Errno +pkg syscall (netbsd-arm64), const ESHUTDOWN = 58 +pkg syscall (netbsd-arm64), const ESOCKTNOSUPPORT = 44 +pkg syscall (netbsd-arm64), const ESPIPE = 29 +pkg syscall (netbsd-arm64), const ESRCH = 3 +pkg syscall (netbsd-arm64), const ESTALE = 70 +pkg syscall (netbsd-arm64), const ETHER_ADDR_LEN = 6 +pkg syscall (netbsd-arm64), const ETHER_ADDR_LEN ideal-int +pkg syscall (netbsd-arm64), const ETHERCAP_JUMBO_MTU = 4 +pkg syscall (netbsd-arm64), const ETHERCAP_JUMBO_MTU ideal-int +pkg syscall (netbsd-arm64), const ETHERCAP_VLAN_HWTAGGING = 2 +pkg syscall (netbsd-arm64), const ETHERCAP_VLAN_HWTAGGING ideal-int +pkg syscall (netbsd-arm64), const ETHERCAP_VLAN_MTU = 1 +pkg syscall (netbsd-arm64), const ETHERCAP_VLAN_MTU ideal-int +pkg syscall (netbsd-arm64), const ETHER_CRC_LEN = 4 +pkg syscall (netbsd-arm64), const ETHER_CRC_LEN ideal-int +pkg syscall (netbsd-arm64), const ETHER_CRC_POLY_BE = 79764918 +pkg syscall (netbsd-arm64), const ETHER_CRC_POLY_BE ideal-int +pkg syscall (netbsd-arm64), const ETHER_CRC_POLY_LE = 3988292384 +pkg syscall (netbsd-arm64), const ETHER_CRC_POLY_LE ideal-int +pkg syscall (netbsd-arm64), const ETHER_HDR_LEN = 14 +pkg syscall (netbsd-arm64), const ETHER_HDR_LEN ideal-int +pkg syscall (netbsd-arm64), const ETHER_MAX_LEN = 1518 +pkg syscall (netbsd-arm64), const ETHER_MAX_LEN ideal-int +pkg syscall (netbsd-arm64), const ETHER_MAX_LEN_JUMBO = 9018 +pkg syscall (netbsd-arm64), const ETHER_MAX_LEN_JUMBO ideal-int +pkg syscall (netbsd-arm64), const ETHERMIN = 46 +pkg syscall (netbsd-arm64), const ETHERMIN ideal-int +pkg syscall (netbsd-arm64), const ETHER_MIN_LEN = 64 +pkg syscall (netbsd-arm64), const ETHER_MIN_LEN ideal-int +pkg syscall (netbsd-arm64), const ETHERMTU = 1500 +pkg syscall (netbsd-arm64), const ETHERMTU ideal-int +pkg syscall (netbsd-arm64), const ETHERMTU_JUMBO = 9000 +pkg syscall (netbsd-arm64), const ETHERMTU_JUMBO ideal-int +pkg syscall (netbsd-arm64), const ETHER_PPPOE_ENCAP_LEN = 8 +pkg syscall (netbsd-arm64), const ETHER_PPPOE_ENCAP_LEN ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_8023 = 4 +pkg syscall (netbsd-arm64), const ETHERTYPE_8023 ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_AARP = 33011 +pkg syscall (netbsd-arm64), const ETHERTYPE_AARP ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_ACCTON = 33680 +pkg syscall (netbsd-arm64), const ETHERTYPE_ACCTON ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_AEONIC = 32822 +pkg syscall (netbsd-arm64), const ETHERTYPE_AEONIC ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_ALPHA = 33098 +pkg syscall (netbsd-arm64), const ETHERTYPE_ALPHA ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_AMBER = 24584 +pkg syscall (netbsd-arm64), const ETHERTYPE_AMBER ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_AMOEBA = 33093 +pkg syscall (netbsd-arm64), const ETHERTYPE_AMOEBA ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_APOLLO = 33015 +pkg syscall (netbsd-arm64), const ETHERTYPE_APOLLODOMAIN = 32793 +pkg syscall (netbsd-arm64), const ETHERTYPE_APOLLODOMAIN ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_APOLLO ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_APPLETALK = 32923 +pkg syscall (netbsd-arm64), const ETHERTYPE_APPLETALK ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_APPLITEK = 32967 +pkg syscall (netbsd-arm64), const ETHERTYPE_APPLITEK ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_ARGONAUT = 32826 +pkg syscall (netbsd-arm64), const ETHERTYPE_ARGONAUT ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_ARP = 2054 +pkg syscall (netbsd-arm64), const ETHERTYPE_ARP ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_AT = 32923 +pkg syscall (netbsd-arm64), const ETHERTYPE_ATALK = 32923 +pkg syscall (netbsd-arm64), const ETHERTYPE_ATALK ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_AT ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_ATOMIC = 34527 +pkg syscall (netbsd-arm64), const ETHERTYPE_ATOMIC ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_ATT = 32873 +pkg syscall (netbsd-arm64), const ETHERTYPE_ATT ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_ATTSTANFORD = 32776 +pkg syscall (netbsd-arm64), const ETHERTYPE_ATTSTANFORD ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_AUTOPHON = 32874 +pkg syscall (netbsd-arm64), const ETHERTYPE_AUTOPHON ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_AXIS = 34902 +pkg syscall (netbsd-arm64), const ETHERTYPE_AXIS ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_BCLOOP = 36867 +pkg syscall (netbsd-arm64), const ETHERTYPE_BCLOOP ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_BOFL = 33026 +pkg syscall (netbsd-arm64), const ETHERTYPE_BOFL ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_CABLETRON = 28724 +pkg syscall (netbsd-arm64), const ETHERTYPE_CABLETRON ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_CHAOS = 2052 +pkg syscall (netbsd-arm64), const ETHERTYPE_CHAOS ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_COMDESIGN = 32876 +pkg syscall (netbsd-arm64), const ETHERTYPE_COMDESIGN ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_COMPUGRAPHIC = 32877 +pkg syscall (netbsd-arm64), const ETHERTYPE_COMPUGRAPHIC ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_COUNTERPOINT = 32866 +pkg syscall (netbsd-arm64), const ETHERTYPE_COUNTERPOINT ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_CRONUS = 32772 +pkg syscall (netbsd-arm64), const ETHERTYPE_CRONUS ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_CRONUSVLN = 32771 +pkg syscall (netbsd-arm64), const ETHERTYPE_CRONUSVLN ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_DCA = 4660 +pkg syscall (netbsd-arm64), const ETHERTYPE_DCA ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_DDE = 32891 +pkg syscall (netbsd-arm64), const ETHERTYPE_DDE ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_DEBNI = 43690 +pkg syscall (netbsd-arm64), const ETHERTYPE_DEBNI ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_DECAM = 32840 +pkg syscall (netbsd-arm64), const ETHERTYPE_DECAM ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_DECCUST = 24582 +pkg syscall (netbsd-arm64), const ETHERTYPE_DECCUST ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_DECDIAG = 24581 +pkg syscall (netbsd-arm64), const ETHERTYPE_DECDIAG ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_DECDNS = 32828 +pkg syscall (netbsd-arm64), const ETHERTYPE_DECDNS ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_DECDTS = 32830 +pkg syscall (netbsd-arm64), const ETHERTYPE_DECDTS ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_DECEXPER = 24576 +pkg syscall (netbsd-arm64), const ETHERTYPE_DECEXPER ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_DECLAST = 32833 +pkg syscall (netbsd-arm64), const ETHERTYPE_DECLAST ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_DECLTM = 32831 +pkg syscall (netbsd-arm64), const ETHERTYPE_DECLTM ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_DECMUMPS = 24585 +pkg syscall (netbsd-arm64), const ETHERTYPE_DECMUMPS ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_DECNETBIOS = 32832 +pkg syscall (netbsd-arm64), const ETHERTYPE_DECNETBIOS ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_DELTACON = 34526 +pkg syscall (netbsd-arm64), const ETHERTYPE_DELTACON ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_DIDDLE = 17185 +pkg syscall (netbsd-arm64), const ETHERTYPE_DIDDLE ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_DLOG1 = 1632 +pkg syscall (netbsd-arm64), const ETHERTYPE_DLOG1 ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_DLOG2 = 1633 +pkg syscall (netbsd-arm64), const ETHERTYPE_DLOG2 ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_DN = 24579 +pkg syscall (netbsd-arm64), const ETHERTYPE_DN ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_DOGFIGHT = 6537 +pkg syscall (netbsd-arm64), const ETHERTYPE_DOGFIGHT ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_DSMD = 32825 +pkg syscall (netbsd-arm64), const ETHERTYPE_DSMD ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_ECMA = 2051 +pkg syscall (netbsd-arm64), const ETHERTYPE_ECMA ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_ENCRYPT = 32829 +pkg syscall (netbsd-arm64), const ETHERTYPE_ENCRYPT ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_ES = 32861 +pkg syscall (netbsd-arm64), const ETHERTYPE_ES ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_EXCELAN = 32784 +pkg syscall (netbsd-arm64), const ETHERTYPE_EXCELAN ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_EXPERDATA = 32841 +pkg syscall (netbsd-arm64), const ETHERTYPE_EXPERDATA ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_FLIP = 33094 +pkg syscall (netbsd-arm64), const ETHERTYPE_FLIP ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_FLOWCONTROL = 34824 +pkg syscall (netbsd-arm64), const ETHERTYPE_FLOWCONTROL ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_FRARP = 2056 +pkg syscall (netbsd-arm64), const ETHERTYPE_FRARP ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_GENDYN = 32872 +pkg syscall (netbsd-arm64), const ETHERTYPE_GENDYN ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_HAYES = 33072 +pkg syscall (netbsd-arm64), const ETHERTYPE_HAYES ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_HIPPI_FP = 33152 +pkg syscall (netbsd-arm64), const ETHERTYPE_HIPPI_FP ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_HITACHI = 34848 +pkg syscall (netbsd-arm64), const ETHERTYPE_HITACHI ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_HP = 32773 +pkg syscall (netbsd-arm64), const ETHERTYPE_HP ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_IEEEPUP = 2560 +pkg syscall (netbsd-arm64), const ETHERTYPE_IEEEPUPAT = 2561 +pkg syscall (netbsd-arm64), const ETHERTYPE_IEEEPUPAT ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_IEEEPUP ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_IMLBL = 19522 +pkg syscall (netbsd-arm64), const ETHERTYPE_IMLBLDIAG = 16972 +pkg syscall (netbsd-arm64), const ETHERTYPE_IMLBLDIAG ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_IMLBL ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_IP = 2048 +pkg syscall (netbsd-arm64), const ETHERTYPE_IPAS = 34668 +pkg syscall (netbsd-arm64), const ETHERTYPE_IPAS ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_IP ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_IPV6 = 34525 +pkg syscall (netbsd-arm64), const ETHERTYPE_IPV6 ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_IPX = 33079 +pkg syscall (netbsd-arm64), const ETHERTYPE_IPX ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_IPXNEW = 32823 +pkg syscall (netbsd-arm64), const ETHERTYPE_IPXNEW ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_KALPANA = 34178 +pkg syscall (netbsd-arm64), const ETHERTYPE_KALPANA ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_LANBRIDGE = 32824 +pkg syscall (netbsd-arm64), const ETHERTYPE_LANBRIDGE ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_LANPROBE = 34952 +pkg syscall (netbsd-arm64), const ETHERTYPE_LANPROBE ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_LAT = 24580 +pkg syscall (netbsd-arm64), const ETHERTYPE_LAT ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_LBACK = 36864 +pkg syscall (netbsd-arm64), const ETHERTYPE_LBACK ideal-int +pkg syscall (netbsd-arm64), const ETHER_TYPE_LEN = 2 +pkg syscall (netbsd-arm64), const ETHER_TYPE_LEN ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_LITTLE = 32864 +pkg syscall (netbsd-arm64), const ETHERTYPE_LITTLE ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_LOGICRAFT = 33096 +pkg syscall (netbsd-arm64), const ETHERTYPE_LOGICRAFT ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_LOOPBACK = 36864 +pkg syscall (netbsd-arm64), const ETHERTYPE_LOOPBACK ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_MATRA = 32890 +pkg syscall (netbsd-arm64), const ETHERTYPE_MATRA ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_MAX = 65535 +pkg syscall (netbsd-arm64), const ETHERTYPE_MAX ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_MERIT = 32892 +pkg syscall (netbsd-arm64), const ETHERTYPE_MERIT ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_MICP = 34618 +pkg syscall (netbsd-arm64), const ETHERTYPE_MICP ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_MOPDL = 24577 +pkg syscall (netbsd-arm64), const ETHERTYPE_MOPDL ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_MOPRC = 24578 +pkg syscall (netbsd-arm64), const ETHERTYPE_MOPRC ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_MOTOROLA = 33165 +pkg syscall (netbsd-arm64), const ETHERTYPE_MOTOROLA ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_MPLS = 34887 +pkg syscall (netbsd-arm64), const ETHERTYPE_MPLS ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_MPLS_MCAST = 34888 +pkg syscall (netbsd-arm64), const ETHERTYPE_MPLS_MCAST ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_MUMPS = 33087 +pkg syscall (netbsd-arm64), const ETHERTYPE_MUMPS ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_NBPCC = 15364 +pkg syscall (netbsd-arm64), const ETHERTYPE_NBPCC ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_NBPCLAIM = 15369 +pkg syscall (netbsd-arm64), const ETHERTYPE_NBPCLAIM ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_NBPCLREQ = 15365 +pkg syscall (netbsd-arm64), const ETHERTYPE_NBPCLREQ ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_NBPCLRSP = 15366 +pkg syscall (netbsd-arm64), const ETHERTYPE_NBPCLRSP ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_NBPCREQ = 15362 +pkg syscall (netbsd-arm64), const ETHERTYPE_NBPCREQ ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_NBPCRSP = 15363 +pkg syscall (netbsd-arm64), const ETHERTYPE_NBPCRSP ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_NBPDG = 15367 +pkg syscall (netbsd-arm64), const ETHERTYPE_NBPDGB = 15368 +pkg syscall (netbsd-arm64), const ETHERTYPE_NBPDGB ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_NBPDG ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_NBPDLTE = 15370 +pkg syscall (netbsd-arm64), const ETHERTYPE_NBPDLTE ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_NBPRAR = 15372 +pkg syscall (netbsd-arm64), const ETHERTYPE_NBPRAR ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_NBPRAS = 15371 +pkg syscall (netbsd-arm64), const ETHERTYPE_NBPRAS ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_NBPRST = 15373 +pkg syscall (netbsd-arm64), const ETHERTYPE_NBPRST ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_NBPSCD = 15361 +pkg syscall (netbsd-arm64), const ETHERTYPE_NBPSCD ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_NBPVCD = 15360 +pkg syscall (netbsd-arm64), const ETHERTYPE_NBPVCD ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_NBS = 2050 +pkg syscall (netbsd-arm64), const ETHERTYPE_NBS ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_NCD = 33097 +pkg syscall (netbsd-arm64), const ETHERTYPE_NCD ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_NESTAR = 32774 +pkg syscall (netbsd-arm64), const ETHERTYPE_NESTAR ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_NETBEUI = 33169 +pkg syscall (netbsd-arm64), const ETHERTYPE_NETBEUI ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_NOVELL = 33080 +pkg syscall (netbsd-arm64), const ETHERTYPE_NOVELL ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_NS = 1536 +pkg syscall (netbsd-arm64), const ETHERTYPE_NSAT = 1537 +pkg syscall (netbsd-arm64), const ETHERTYPE_NSAT ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_NSCOMPAT = 2055 +pkg syscall (netbsd-arm64), const ETHERTYPE_NSCOMPAT ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_NS ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_NTRAILER = 16 +pkg syscall (netbsd-arm64), const ETHERTYPE_NTRAILER ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_OS9 = 28679 +pkg syscall (netbsd-arm64), const ETHERTYPE_OS9 ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_OS9NET = 28681 +pkg syscall (netbsd-arm64), const ETHERTYPE_OS9NET ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_PACER = 32966 +pkg syscall (netbsd-arm64), const ETHERTYPE_PACER ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_PAE = 34958 +pkg syscall (netbsd-arm64), const ETHERTYPE_PAE ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_PCS = 16962 +pkg syscall (netbsd-arm64), const ETHERTYPE_PCS ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_PLANNING = 32836 +pkg syscall (netbsd-arm64), const ETHERTYPE_PLANNING ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_PPP = 34827 +pkg syscall (netbsd-arm64), const ETHERTYPE_PPP ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_PPPOE = 34916 +pkg syscall (netbsd-arm64), const ETHERTYPE_PPPOEDISC = 34915 +pkg syscall (netbsd-arm64), const ETHERTYPE_PPPOEDISC ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_PPPOE ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_PRIMENTS = 28721 +pkg syscall (netbsd-arm64), const ETHERTYPE_PRIMENTS ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_PUP = 512 +pkg syscall (netbsd-arm64), const ETHERTYPE_PUPAT = 512 +pkg syscall (netbsd-arm64), const ETHERTYPE_PUPAT ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_PUP ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_RACAL = 28720 +pkg syscall (netbsd-arm64), const ETHERTYPE_RACAL ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_RATIONAL = 33104 +pkg syscall (netbsd-arm64), const ETHERTYPE_RATIONAL ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_RAWFR = 25945 +pkg syscall (netbsd-arm64), const ETHERTYPE_RAWFR ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_RCL = 6549 +pkg syscall (netbsd-arm64), const ETHERTYPE_RCL ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_RDP = 34617 +pkg syscall (netbsd-arm64), const ETHERTYPE_RDP ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_RETIX = 33010 +pkg syscall (netbsd-arm64), const ETHERTYPE_RETIX ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_REVARP = 32821 +pkg syscall (netbsd-arm64), const ETHERTYPE_REVARP ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_SCA = 24583 +pkg syscall (netbsd-arm64), const ETHERTYPE_SCA ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_SECTRA = 34523 +pkg syscall (netbsd-arm64), const ETHERTYPE_SECTRA ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_SECUREDATA = 34669 +pkg syscall (netbsd-arm64), const ETHERTYPE_SECUREDATA ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_SG_BOUNCE = 32790 +pkg syscall (netbsd-arm64), const ETHERTYPE_SG_BOUNCE ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_SG_DIAG = 32787 +pkg syscall (netbsd-arm64), const ETHERTYPE_SG_DIAG ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_SGITW = 33150 +pkg syscall (netbsd-arm64), const ETHERTYPE_SGITW ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_SG_NETGAMES = 32788 +pkg syscall (netbsd-arm64), const ETHERTYPE_SG_NETGAMES ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_SG_RESV = 32789 +pkg syscall (netbsd-arm64), const ETHERTYPE_SG_RESV ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_SIMNET = 21000 +pkg syscall (netbsd-arm64), const ETHERTYPE_SIMNET ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_SLOWPROTOCOLS = 34825 +pkg syscall (netbsd-arm64), const ETHERTYPE_SLOWPROTOCOLS ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_SNA = 32981 +pkg syscall (netbsd-arm64), const ETHERTYPE_SNA ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_SNMP = 33100 +pkg syscall (netbsd-arm64), const ETHERTYPE_SNMP ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_SONIX = 64245 +pkg syscall (netbsd-arm64), const ETHERTYPE_SONIX ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_SPIDER = 32927 +pkg syscall (netbsd-arm64), const ETHERTYPE_SPIDER ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_SPRITE = 1280 +pkg syscall (netbsd-arm64), const ETHERTYPE_SPRITE ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_STP = 33153 +pkg syscall (netbsd-arm64), const ETHERTYPE_STP ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_TALARIS = 33067 +pkg syscall (netbsd-arm64), const ETHERTYPE_TALARIS ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_TALARISMC = 34091 +pkg syscall (netbsd-arm64), const ETHERTYPE_TALARISMC ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_TCPCOMP = 34667 +pkg syscall (netbsd-arm64), const ETHERTYPE_TCPCOMP ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_TCPSM = 36866 +pkg syscall (netbsd-arm64), const ETHERTYPE_TCPSM ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_TEC = 33103 +pkg syscall (netbsd-arm64), const ETHERTYPE_TEC ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_TIGAN = 32815 +pkg syscall (netbsd-arm64), const ETHERTYPE_TIGAN ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_TRAIL = 4096 +pkg syscall (netbsd-arm64), const ETHERTYPE_TRAIL ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_TRANSETHER = 25944 +pkg syscall (netbsd-arm64), const ETHERTYPE_TRANSETHER ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_TYMSHARE = 32814 +pkg syscall (netbsd-arm64), const ETHERTYPE_TYMSHARE ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_UBBST = 28677 +pkg syscall (netbsd-arm64), const ETHERTYPE_UBBST ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_UBDEBUG = 2304 +pkg syscall (netbsd-arm64), const ETHERTYPE_UBDEBUG ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_UBDIAGLOOP = 28674 +pkg syscall (netbsd-arm64), const ETHERTYPE_UBDIAGLOOP ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_UBDL = 28672 +pkg syscall (netbsd-arm64), const ETHERTYPE_UBDL ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_UBNIU = 28673 +pkg syscall (netbsd-arm64), const ETHERTYPE_UBNIU ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_UBNMC = 28675 +pkg syscall (netbsd-arm64), const ETHERTYPE_UBNMC ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_VALID = 5632 +pkg syscall (netbsd-arm64), const ETHERTYPE_VALID ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_VARIAN = 32989 +pkg syscall (netbsd-arm64), const ETHERTYPE_VARIAN ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_VAXELN = 32827 +pkg syscall (netbsd-arm64), const ETHERTYPE_VAXELN ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_VEECO = 32871 +pkg syscall (netbsd-arm64), const ETHERTYPE_VEECO ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_VEXP = 32859 +pkg syscall (netbsd-arm64), const ETHERTYPE_VEXP ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_VGLAB = 33073 +pkg syscall (netbsd-arm64), const ETHERTYPE_VGLAB ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_VINES = 2989 +pkg syscall (netbsd-arm64), const ETHERTYPE_VINESECHO = 2991 +pkg syscall (netbsd-arm64), const ETHERTYPE_VINESECHO ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_VINES ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_VINESLOOP = 2990 +pkg syscall (netbsd-arm64), const ETHERTYPE_VINESLOOP ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_VITAL = 65280 +pkg syscall (netbsd-arm64), const ETHERTYPE_VITAL ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_VLAN = 33024 +pkg syscall (netbsd-arm64), const ETHERTYPE_VLAN ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_VLTLMAN = 32896 +pkg syscall (netbsd-arm64), const ETHERTYPE_VLTLMAN ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_VPROD = 32860 +pkg syscall (netbsd-arm64), const ETHERTYPE_VPROD ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_VURESERVED = 33095 +pkg syscall (netbsd-arm64), const ETHERTYPE_VURESERVED ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_WATERLOO = 33072 +pkg syscall (netbsd-arm64), const ETHERTYPE_WATERLOO ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_WELLFLEET = 33027 +pkg syscall (netbsd-arm64), const ETHERTYPE_WELLFLEET ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_X25 = 2053 +pkg syscall (netbsd-arm64), const ETHERTYPE_X25 ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_X75 = 2049 +pkg syscall (netbsd-arm64), const ETHERTYPE_X75 ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_XNSSM = 36865 +pkg syscall (netbsd-arm64), const ETHERTYPE_XNSSM ideal-int +pkg syscall (netbsd-arm64), const ETHERTYPE_XTP = 33149 +pkg syscall (netbsd-arm64), const ETHERTYPE_XTP ideal-int +pkg syscall (netbsd-arm64), const ETHER_VLAN_ENCAP_LEN = 4 +pkg syscall (netbsd-arm64), const ETHER_VLAN_ENCAP_LEN ideal-int +pkg syscall (netbsd-arm64), const ETIME = 92 +pkg syscall (netbsd-arm64), const ETIMEDOUT = 60 +pkg syscall (netbsd-arm64), const ETIME Errno +pkg syscall (netbsd-arm64), const ETOOMANYREFS = 59 +pkg syscall (netbsd-arm64), const ETXTBSY = 26 +pkg syscall (netbsd-arm64), const EUSERS = 68 +pkg syscall (netbsd-arm64), const EV_ADD = 1 +pkg syscall (netbsd-arm64), const EV_ADD ideal-int +pkg syscall (netbsd-arm64), const EV_CLEAR = 32 +pkg syscall (netbsd-arm64), const EV_CLEAR ideal-int +pkg syscall (netbsd-arm64), const EV_DELETE = 2 +pkg syscall (netbsd-arm64), const EV_DELETE ideal-int +pkg syscall (netbsd-arm64), const EV_DISABLE = 8 +pkg syscall (netbsd-arm64), const EV_DISABLE ideal-int +pkg syscall (netbsd-arm64), const EV_ENABLE = 4 +pkg syscall (netbsd-arm64), const EV_ENABLE ideal-int +pkg syscall (netbsd-arm64), const EV_EOF = 32768 +pkg syscall (netbsd-arm64), const EV_EOF ideal-int +pkg syscall (netbsd-arm64), const EV_ERROR = 16384 +pkg syscall (netbsd-arm64), const EV_ERROR ideal-int +pkg syscall (netbsd-arm64), const EVFILT_AIO = 2 +pkg syscall (netbsd-arm64), const EVFILT_AIO ideal-int +pkg syscall (netbsd-arm64), const EVFILT_PROC = 4 +pkg syscall (netbsd-arm64), const EVFILT_PROC ideal-int +pkg syscall (netbsd-arm64), const EVFILT_READ = 0 +pkg syscall (netbsd-arm64), const EVFILT_READ ideal-int +pkg syscall (netbsd-arm64), const EVFILT_SIGNAL = 5 +pkg syscall (netbsd-arm64), const EVFILT_SIGNAL ideal-int +pkg syscall (netbsd-arm64), const EVFILT_SYSCOUNT = 7 +pkg syscall (netbsd-arm64), const EVFILT_SYSCOUNT ideal-int +pkg syscall (netbsd-arm64), const EVFILT_TIMER = 6 +pkg syscall (netbsd-arm64), const EVFILT_TIMER ideal-int +pkg syscall (netbsd-arm64), const EVFILT_VNODE = 3 +pkg syscall (netbsd-arm64), const EVFILT_VNODE ideal-int +pkg syscall (netbsd-arm64), const EVFILT_WRITE = 1 +pkg syscall (netbsd-arm64), const EVFILT_WRITE ideal-int +pkg syscall (netbsd-arm64), const EV_FLAG1 = 8192 +pkg syscall (netbsd-arm64), const EV_FLAG1 ideal-int +pkg syscall (netbsd-arm64), const EV_ONESHOT = 16 +pkg syscall (netbsd-arm64), const EV_ONESHOT ideal-int +pkg syscall (netbsd-arm64), const EV_SYSFLAGS = 61440 +pkg syscall (netbsd-arm64), const EV_SYSFLAGS ideal-int +pkg syscall (netbsd-arm64), const EWOULDBLOCK = 35 +pkg syscall (netbsd-arm64), const EXDEV = 18 +pkg syscall (netbsd-arm64), const EXTA = 19200 +pkg syscall (netbsd-arm64), const EXTA ideal-int +pkg syscall (netbsd-arm64), const EXTB = 38400 +pkg syscall (netbsd-arm64), const EXTB ideal-int +pkg syscall (netbsd-arm64), const EXTPROC = 2048 +pkg syscall (netbsd-arm64), const EXTPROC ideal-int +pkg syscall (netbsd-arm64), const F_CLOSEM = 10 +pkg syscall (netbsd-arm64), const F_CLOSEM ideal-int +pkg syscall (netbsd-arm64), const FD_CLOEXEC = 1 +pkg syscall (netbsd-arm64), const FD_CLOEXEC ideal-int +pkg syscall (netbsd-arm64), const FD_SETSIZE = 256 +pkg syscall (netbsd-arm64), const FD_SETSIZE ideal-int +pkg syscall (netbsd-arm64), const F_DUPFD = 0 +pkg syscall (netbsd-arm64), const F_DUPFD_CLOEXEC = 12 +pkg syscall (netbsd-arm64), const F_DUPFD_CLOEXEC ideal-int +pkg syscall (netbsd-arm64), const F_DUPFD ideal-int +pkg syscall (netbsd-arm64), const F_FSCTL = -2147483648 +pkg syscall (netbsd-arm64), const F_FSCTL ideal-int +pkg syscall (netbsd-arm64), const F_FSDIRMASK = 1879048192 +pkg syscall (netbsd-arm64), const F_FSDIRMASK ideal-int +pkg syscall (netbsd-arm64), const F_FSIN = 268435456 +pkg syscall (netbsd-arm64), const F_FSIN ideal-int +pkg syscall (netbsd-arm64), const F_FSINOUT = 805306368 +pkg syscall (netbsd-arm64), const F_FSINOUT ideal-int +pkg syscall (netbsd-arm64), const F_FSOUT = 536870912 +pkg syscall (netbsd-arm64), const F_FSOUT ideal-int +pkg syscall (netbsd-arm64), const F_FSPRIV = 32768 +pkg syscall (netbsd-arm64), const F_FSPRIV ideal-int +pkg syscall (netbsd-arm64), const F_FSVOID = 1073741824 +pkg syscall (netbsd-arm64), const F_FSVOID ideal-int +pkg syscall (netbsd-arm64), const F_GETFD = 1 +pkg syscall (netbsd-arm64), const F_GETFD ideal-int +pkg syscall (netbsd-arm64), const F_GETFL = 3 +pkg syscall (netbsd-arm64), const F_GETFL ideal-int +pkg syscall (netbsd-arm64), const F_GETLK = 7 +pkg syscall (netbsd-arm64), const F_GETLK ideal-int +pkg syscall (netbsd-arm64), const F_GETNOSIGPIPE = 13 +pkg syscall (netbsd-arm64), const F_GETNOSIGPIPE ideal-int +pkg syscall (netbsd-arm64), const F_GETOWN = 5 +pkg syscall (netbsd-arm64), const F_GETOWN ideal-int +pkg syscall (netbsd-arm64), const FLUSHO = 8388608 +pkg syscall (netbsd-arm64), const FLUSHO ideal-int +pkg syscall (netbsd-arm64), const F_MAXFD = 11 +pkg syscall (netbsd-arm64), const F_MAXFD ideal-int +pkg syscall (netbsd-arm64), const F_OK = 0 +pkg syscall (netbsd-arm64), const F_OK ideal-int +pkg syscall (netbsd-arm64), const F_PARAM_MASK = 4095 +pkg syscall (netbsd-arm64), const F_PARAM_MASK ideal-int +pkg syscall (netbsd-arm64), const F_PARAM_MAX = 4095 +pkg syscall (netbsd-arm64), const F_PARAM_MAX ideal-int +pkg syscall (netbsd-arm64), const F_RDLCK = 1 +pkg syscall (netbsd-arm64), const F_RDLCK ideal-int +pkg syscall (netbsd-arm64), const F_SETFD = 2 +pkg syscall (netbsd-arm64), const F_SETFD ideal-int +pkg syscall (netbsd-arm64), const F_SETFL = 4 +pkg syscall (netbsd-arm64), const F_SETFL ideal-int +pkg syscall (netbsd-arm64), const F_SETLK = 8 +pkg syscall (netbsd-arm64), const F_SETLK ideal-int +pkg syscall (netbsd-arm64), const F_SETLKW = 9 +pkg syscall (netbsd-arm64), const F_SETLKW ideal-int +pkg syscall (netbsd-arm64), const F_SETNOSIGPIPE = 14 +pkg syscall (netbsd-arm64), const F_SETNOSIGPIPE ideal-int +pkg syscall (netbsd-arm64), const F_SETOWN = 6 +pkg syscall (netbsd-arm64), const F_SETOWN ideal-int +pkg syscall (netbsd-arm64), const F_UNLCK = 2 +pkg syscall (netbsd-arm64), const F_UNLCK ideal-int +pkg syscall (netbsd-arm64), const F_WRLCK = 3 +pkg syscall (netbsd-arm64), const F_WRLCK ideal-int +pkg syscall (netbsd-arm64), const HUPCL = 16384 +pkg syscall (netbsd-arm64), const HUPCL ideal-int +pkg syscall (netbsd-arm64), const ICANON = 256 +pkg syscall (netbsd-arm64), const ICANON ideal-int +pkg syscall (netbsd-arm64), const ICMP6_FILTER = 18 +pkg syscall (netbsd-arm64), const ICMP6_FILTER ideal-int +pkg syscall (netbsd-arm64), const ICRNL = 256 +pkg syscall (netbsd-arm64), const ICRNL ideal-int +pkg syscall (netbsd-arm64), const IEXTEN = 1024 +pkg syscall (netbsd-arm64), const IEXTEN ideal-int +pkg syscall (netbsd-arm64), const IFAN_ARRIVAL = 0 +pkg syscall (netbsd-arm64), const IFAN_ARRIVAL ideal-int +pkg syscall (netbsd-arm64), const IFAN_DEPARTURE = 1 +pkg syscall (netbsd-arm64), const IFAN_DEPARTURE ideal-int +pkg syscall (netbsd-arm64), const IFA_ROUTE = 1 +pkg syscall (netbsd-arm64), const IFA_ROUTE ideal-int +pkg syscall (netbsd-arm64), const IFF_ALLMULTI = 512 +pkg syscall (netbsd-arm64), const IFF_ALLMULTI ideal-int +pkg syscall (netbsd-arm64), const IFF_CANTCHANGE = 36690 +pkg syscall (netbsd-arm64), const IFF_CANTCHANGE ideal-int +pkg syscall (netbsd-arm64), const IFF_DEBUG = 4 +pkg syscall (netbsd-arm64), const IFF_DEBUG ideal-int +pkg syscall (netbsd-arm64), const IFF_LINK0 = 4096 +pkg syscall (netbsd-arm64), const IFF_LINK0 ideal-int +pkg syscall (netbsd-arm64), const IFF_LINK1 = 8192 +pkg syscall (netbsd-arm64), const IFF_LINK1 ideal-int +pkg syscall (netbsd-arm64), const IFF_LINK2 = 16384 +pkg syscall (netbsd-arm64), const IFF_LINK2 ideal-int +pkg syscall (netbsd-arm64), const IFF_LOOPBACK = 8 +pkg syscall (netbsd-arm64), const IFF_MULTICAST = 32768 +pkg syscall (netbsd-arm64), const IFF_NOARP = 128 +pkg syscall (netbsd-arm64), const IFF_NOARP ideal-int +pkg syscall (netbsd-arm64), const IFF_NOTRAILERS = 32 +pkg syscall (netbsd-arm64), const IFF_NOTRAILERS ideal-int +pkg syscall (netbsd-arm64), const IFF_OACTIVE = 1024 +pkg syscall (netbsd-arm64), const IFF_OACTIVE ideal-int +pkg syscall (netbsd-arm64), const IFF_POINTOPOINT = 16 +pkg syscall (netbsd-arm64), const IFF_POINTOPOINT ideal-int +pkg syscall (netbsd-arm64), const IFF_PROMISC = 256 +pkg syscall (netbsd-arm64), const IFF_PROMISC ideal-int +pkg syscall (netbsd-arm64), const IFF_RUNNING = 64 +pkg syscall (netbsd-arm64), const IFF_RUNNING ideal-int +pkg syscall (netbsd-arm64), const IFF_SIMPLEX = 2048 +pkg syscall (netbsd-arm64), const IFF_SIMPLEX ideal-int +pkg syscall (netbsd-arm64), const IFNAMSIZ = 16 +pkg syscall (netbsd-arm64), const IFNAMSIZ ideal-int +pkg syscall (netbsd-arm64), const IFT_1822 = 2 +pkg syscall (netbsd-arm64), const IFT_1822 ideal-int +pkg syscall (netbsd-arm64), const IFT_A12MPPSWITCH = 130 +pkg syscall (netbsd-arm64), const IFT_A12MPPSWITCH ideal-int +pkg syscall (netbsd-arm64), const IFT_AAL2 = 187 +pkg syscall (netbsd-arm64), const IFT_AAL2 ideal-int +pkg syscall (netbsd-arm64), const IFT_AAL5 = 49 +pkg syscall (netbsd-arm64), const IFT_AAL5 ideal-int +pkg syscall (netbsd-arm64), const IFT_ADSL = 94 +pkg syscall (netbsd-arm64), const IFT_ADSL ideal-int +pkg syscall (netbsd-arm64), const IFT_AFLANE8023 = 59 +pkg syscall (netbsd-arm64), const IFT_AFLANE8023 ideal-int +pkg syscall (netbsd-arm64), const IFT_AFLANE8025 = 60 +pkg syscall (netbsd-arm64), const IFT_AFLANE8025 ideal-int +pkg syscall (netbsd-arm64), const IFT_ARAP = 88 +pkg syscall (netbsd-arm64), const IFT_ARAP ideal-int +pkg syscall (netbsd-arm64), const IFT_ARCNET = 35 +pkg syscall (netbsd-arm64), const IFT_ARCNET ideal-int +pkg syscall (netbsd-arm64), const IFT_ARCNETPLUS = 36 +pkg syscall (netbsd-arm64), const IFT_ARCNETPLUS ideal-int +pkg syscall (netbsd-arm64), const IFT_ASYNC = 84 +pkg syscall (netbsd-arm64), const IFT_ASYNC ideal-int +pkg syscall (netbsd-arm64), const IFT_ATM = 37 +pkg syscall (netbsd-arm64), const IFT_ATMDXI = 105 +pkg syscall (netbsd-arm64), const IFT_ATMDXI ideal-int +pkg syscall (netbsd-arm64), const IFT_ATMFUNI = 106 +pkg syscall (netbsd-arm64), const IFT_ATMFUNI ideal-int +pkg syscall (netbsd-arm64), const IFT_ATM ideal-int +pkg syscall (netbsd-arm64), const IFT_ATMIMA = 107 +pkg syscall (netbsd-arm64), const IFT_ATMIMA ideal-int +pkg syscall (netbsd-arm64), const IFT_ATMLOGICAL = 80 +pkg syscall (netbsd-arm64), const IFT_ATMLOGICAL ideal-int +pkg syscall (netbsd-arm64), const IFT_ATMRADIO = 189 +pkg syscall (netbsd-arm64), const IFT_ATMRADIO ideal-int +pkg syscall (netbsd-arm64), const IFT_ATMSUBINTERFACE = 134 +pkg syscall (netbsd-arm64), const IFT_ATMSUBINTERFACE ideal-int +pkg syscall (netbsd-arm64), const IFT_ATMVCIENDPT = 194 +pkg syscall (netbsd-arm64), const IFT_ATMVCIENDPT ideal-int +pkg syscall (netbsd-arm64), const IFT_ATMVIRTUAL = 149 +pkg syscall (netbsd-arm64), const IFT_ATMVIRTUAL ideal-int +pkg syscall (netbsd-arm64), const IFT_BGPPOLICYACCOUNTING = 162 +pkg syscall (netbsd-arm64), const IFT_BGPPOLICYACCOUNTING ideal-int +pkg syscall (netbsd-arm64), const IFT_BRIDGE = 209 +pkg syscall (netbsd-arm64), const IFT_BRIDGE ideal-int +pkg syscall (netbsd-arm64), const IFT_BSC = 83 +pkg syscall (netbsd-arm64), const IFT_BSC ideal-int +pkg syscall (netbsd-arm64), const IFT_CARP = 248 +pkg syscall (netbsd-arm64), const IFT_CARP ideal-int +pkg syscall (netbsd-arm64), const IFT_CCTEMUL = 61 +pkg syscall (netbsd-arm64), const IFT_CCTEMUL ideal-int +pkg syscall (netbsd-arm64), const IFT_CEPT = 19 +pkg syscall (netbsd-arm64), const IFT_CEPT ideal-int +pkg syscall (netbsd-arm64), const IFT_CES = 133 +pkg syscall (netbsd-arm64), const IFT_CES ideal-int +pkg syscall (netbsd-arm64), const IFT_CHANNEL = 70 +pkg syscall (netbsd-arm64), const IFT_CHANNEL ideal-int +pkg syscall (netbsd-arm64), const IFT_CNR = 85 +pkg syscall (netbsd-arm64), const IFT_CNR ideal-int +pkg syscall (netbsd-arm64), const IFT_COFFEE = 132 +pkg syscall (netbsd-arm64), const IFT_COFFEE ideal-int +pkg syscall (netbsd-arm64), const IFT_COMPOSITELINK = 155 +pkg syscall (netbsd-arm64), const IFT_COMPOSITELINK ideal-int +pkg syscall (netbsd-arm64), const IFT_DCN = 141 +pkg syscall (netbsd-arm64), const IFT_DCN ideal-int +pkg syscall (netbsd-arm64), const IFT_DIGITALPOWERLINE = 138 +pkg syscall (netbsd-arm64), const IFT_DIGITALPOWERLINE ideal-int +pkg syscall (netbsd-arm64), const IFT_DIGITALWRAPPEROVERHEADCHANNEL = 186 +pkg syscall (netbsd-arm64), const IFT_DIGITALWRAPPEROVERHEADCHANNEL ideal-int +pkg syscall (netbsd-arm64), const IFT_DLSW = 74 +pkg syscall (netbsd-arm64), const IFT_DLSW ideal-int +pkg syscall (netbsd-arm64), const IFT_DOCSCABLEDOWNSTREAM = 128 +pkg syscall (netbsd-arm64), const IFT_DOCSCABLEDOWNSTREAM ideal-int +pkg syscall (netbsd-arm64), const IFT_DOCSCABLEMACLAYER = 127 +pkg syscall (netbsd-arm64), const IFT_DOCSCABLEMACLAYER ideal-int +pkg syscall (netbsd-arm64), const IFT_DOCSCABLEUPSTREAM = 129 +pkg syscall (netbsd-arm64), const IFT_DOCSCABLEUPSTREAMCHANNEL = 205 +pkg syscall (netbsd-arm64), const IFT_DOCSCABLEUPSTREAMCHANNEL ideal-int +pkg syscall (netbsd-arm64), const IFT_DOCSCABLEUPSTREAM ideal-int +pkg syscall (netbsd-arm64), const IFT_DS0 = 81 +pkg syscall (netbsd-arm64), const IFT_DS0BUNDLE = 82 +pkg syscall (netbsd-arm64), const IFT_DS0BUNDLE ideal-int +pkg syscall (netbsd-arm64), const IFT_DS0 ideal-int +pkg syscall (netbsd-arm64), const IFT_DS1FDL = 170 +pkg syscall (netbsd-arm64), const IFT_DS1FDL ideal-int +pkg syscall (netbsd-arm64), const IFT_DS3 = 30 +pkg syscall (netbsd-arm64), const IFT_DS3 ideal-int +pkg syscall (netbsd-arm64), const IFT_DTM = 140 +pkg syscall (netbsd-arm64), const IFT_DTM ideal-int +pkg syscall (netbsd-arm64), const IFT_DVBASILN = 172 +pkg syscall (netbsd-arm64), const IFT_DVBASILN ideal-int +pkg syscall (netbsd-arm64), const IFT_DVBASIOUT = 173 +pkg syscall (netbsd-arm64), const IFT_DVBASIOUT ideal-int +pkg syscall (netbsd-arm64), const IFT_DVBRCCDOWNSTREAM = 147 +pkg syscall (netbsd-arm64), const IFT_DVBRCCDOWNSTREAM ideal-int +pkg syscall (netbsd-arm64), const IFT_DVBRCCMACLAYER = 146 +pkg syscall (netbsd-arm64), const IFT_DVBRCCMACLAYER ideal-int +pkg syscall (netbsd-arm64), const IFT_DVBRCCUPSTREAM = 148 +pkg syscall (netbsd-arm64), const IFT_DVBRCCUPSTREAM ideal-int +pkg syscall (netbsd-arm64), const IFT_ECONET = 206 +pkg syscall (netbsd-arm64), const IFT_ECONET ideal-int +pkg syscall (netbsd-arm64), const IFT_EON = 25 +pkg syscall (netbsd-arm64), const IFT_EON ideal-int +pkg syscall (netbsd-arm64), const IFT_EPLRS = 87 +pkg syscall (netbsd-arm64), const IFT_EPLRS ideal-int +pkg syscall (netbsd-arm64), const IFT_ESCON = 73 +pkg syscall (netbsd-arm64), const IFT_ESCON ideal-int +pkg syscall (netbsd-arm64), const IFT_ETHER = 6 +pkg syscall (netbsd-arm64), const IFT_ETHER ideal-int +pkg syscall (netbsd-arm64), const IFT_FAITH = 242 +pkg syscall (netbsd-arm64), const IFT_FAITH ideal-int +pkg syscall (netbsd-arm64), const IFT_FAST = 125 +pkg syscall (netbsd-arm64), const IFT_FASTETHER = 62 +pkg syscall (netbsd-arm64), const IFT_FASTETHERFX = 69 +pkg syscall (netbsd-arm64), const IFT_FASTETHERFX ideal-int +pkg syscall (netbsd-arm64), const IFT_FASTETHER ideal-int +pkg syscall (netbsd-arm64), const IFT_FAST ideal-int +pkg syscall (netbsd-arm64), const IFT_FDDI = 15 +pkg syscall (netbsd-arm64), const IFT_FDDI ideal-int +pkg syscall (netbsd-arm64), const IFT_FIBRECHANNEL = 56 +pkg syscall (netbsd-arm64), const IFT_FIBRECHANNEL ideal-int +pkg syscall (netbsd-arm64), const IFT_FRAMERELAYINTERCONNECT = 58 +pkg syscall (netbsd-arm64), const IFT_FRAMERELAYINTERCONNECT ideal-int +pkg syscall (netbsd-arm64), const IFT_FRAMERELAYMPI = 92 +pkg syscall (netbsd-arm64), const IFT_FRAMERELAYMPI ideal-int +pkg syscall (netbsd-arm64), const IFT_FRDLCIENDPT = 193 +pkg syscall (netbsd-arm64), const IFT_FRDLCIENDPT ideal-int +pkg syscall (netbsd-arm64), const IFT_FRELAY = 32 +pkg syscall (netbsd-arm64), const IFT_FRELAYDCE = 44 +pkg syscall (netbsd-arm64), const IFT_FRELAYDCE ideal-int +pkg syscall (netbsd-arm64), const IFT_FRELAY ideal-int +pkg syscall (netbsd-arm64), const IFT_FRF16MFRBUNDLE = 163 +pkg syscall (netbsd-arm64), const IFT_FRF16MFRBUNDLE ideal-int +pkg syscall (netbsd-arm64), const IFT_FRFORWARD = 158 +pkg syscall (netbsd-arm64), const IFT_FRFORWARD ideal-int +pkg syscall (netbsd-arm64), const IFT_G703AT2MB = 67 +pkg syscall (netbsd-arm64), const IFT_G703AT2MB ideal-int +pkg syscall (netbsd-arm64), const IFT_G703AT64K = 66 +pkg syscall (netbsd-arm64), const IFT_G703AT64K ideal-int +pkg syscall (netbsd-arm64), const IFT_GIF = 240 +pkg syscall (netbsd-arm64), const IFT_GIF ideal-int +pkg syscall (netbsd-arm64), const IFT_GIGABITETHERNET = 117 +pkg syscall (netbsd-arm64), const IFT_GIGABITETHERNET ideal-int +pkg syscall (netbsd-arm64), const IFT_GR303IDT = 178 +pkg syscall (netbsd-arm64), const IFT_GR303IDT ideal-int +pkg syscall (netbsd-arm64), const IFT_GR303RDT = 177 +pkg syscall (netbsd-arm64), const IFT_GR303RDT ideal-int +pkg syscall (netbsd-arm64), const IFT_H323GATEKEEPER = 164 +pkg syscall (netbsd-arm64), const IFT_H323GATEKEEPER ideal-int +pkg syscall (netbsd-arm64), const IFT_H323PROXY = 165 +pkg syscall (netbsd-arm64), const IFT_H323PROXY ideal-int +pkg syscall (netbsd-arm64), const IFT_HDH1822 = 3 +pkg syscall (netbsd-arm64), const IFT_HDH1822 ideal-int +pkg syscall (netbsd-arm64), const IFT_HDLC = 118 +pkg syscall (netbsd-arm64), const IFT_HDLC ideal-int +pkg syscall (netbsd-arm64), const IFT_HDSL2 = 168 +pkg syscall (netbsd-arm64), const IFT_HDSL2 ideal-int +pkg syscall (netbsd-arm64), const IFT_HIPERLAN2 = 183 +pkg syscall (netbsd-arm64), const IFT_HIPERLAN2 ideal-int +pkg syscall (netbsd-arm64), const IFT_HIPPI = 47 +pkg syscall (netbsd-arm64), const IFT_HIPPI ideal-int +pkg syscall (netbsd-arm64), const IFT_HIPPIINTERFACE = 57 +pkg syscall (netbsd-arm64), const IFT_HIPPIINTERFACE ideal-int +pkg syscall (netbsd-arm64), const IFT_HOSTPAD = 90 +pkg syscall (netbsd-arm64), const IFT_HOSTPAD ideal-int +pkg syscall (netbsd-arm64), const IFT_HSSI = 46 +pkg syscall (netbsd-arm64), const IFT_HSSI ideal-int +pkg syscall (netbsd-arm64), const IFT_HY = 14 +pkg syscall (netbsd-arm64), const IFT_HY ideal-int +pkg syscall (netbsd-arm64), const IFT_IBM370PARCHAN = 72 +pkg syscall (netbsd-arm64), const IFT_IBM370PARCHAN ideal-int +pkg syscall (netbsd-arm64), const IFT_IDSL = 154 +pkg syscall (netbsd-arm64), const IFT_IDSL ideal-int +pkg syscall (netbsd-arm64), const IFT_IEEE1394 = 144 +pkg syscall (netbsd-arm64), const IFT_IEEE1394 ideal-int +pkg syscall (netbsd-arm64), const IFT_IEEE80211 = 71 +pkg syscall (netbsd-arm64), const IFT_IEEE80211 ideal-int +pkg syscall (netbsd-arm64), const IFT_IEEE80212 = 55 +pkg syscall (netbsd-arm64), const IFT_IEEE80212 ideal-int +pkg syscall (netbsd-arm64), const IFT_IEEE8023ADLAG = 161 +pkg syscall (netbsd-arm64), const IFT_IEEE8023ADLAG ideal-int +pkg syscall (netbsd-arm64), const IFT_IFGSN = 145 +pkg syscall (netbsd-arm64), const IFT_IFGSN ideal-int +pkg syscall (netbsd-arm64), const IFT_IMT = 190 +pkg syscall (netbsd-arm64), const IFT_IMT ideal-int +pkg syscall (netbsd-arm64), const IFT_INFINIBAND = 199 +pkg syscall (netbsd-arm64), const IFT_INFINIBAND ideal-int +pkg syscall (netbsd-arm64), const IFT_INTERLEAVE = 124 +pkg syscall (netbsd-arm64), const IFT_INTERLEAVE ideal-int +pkg syscall (netbsd-arm64), const IFT_IP = 126 +pkg syscall (netbsd-arm64), const IFT_IPFORWARD = 142 +pkg syscall (netbsd-arm64), const IFT_IPFORWARD ideal-int +pkg syscall (netbsd-arm64), const IFT_IP ideal-int +pkg syscall (netbsd-arm64), const IFT_IPOVERATM = 114 +pkg syscall (netbsd-arm64), const IFT_IPOVERATM ideal-int +pkg syscall (netbsd-arm64), const IFT_IPOVERCDLC = 109 +pkg syscall (netbsd-arm64), const IFT_IPOVERCDLC ideal-int +pkg syscall (netbsd-arm64), const IFT_IPOVERCLAW = 110 +pkg syscall (netbsd-arm64), const IFT_IPOVERCLAW ideal-int +pkg syscall (netbsd-arm64), const IFT_IPSWITCH = 78 +pkg syscall (netbsd-arm64), const IFT_IPSWITCH ideal-int +pkg syscall (netbsd-arm64), const IFT_ISDN = 63 +pkg syscall (netbsd-arm64), const IFT_ISDNBASIC = 20 +pkg syscall (netbsd-arm64), const IFT_ISDNBASIC ideal-int +pkg syscall (netbsd-arm64), const IFT_ISDN ideal-int +pkg syscall (netbsd-arm64), const IFT_ISDNPRIMARY = 21 +pkg syscall (netbsd-arm64), const IFT_ISDNPRIMARY ideal-int +pkg syscall (netbsd-arm64), const IFT_ISDNS = 75 +pkg syscall (netbsd-arm64), const IFT_ISDNS ideal-int +pkg syscall (netbsd-arm64), const IFT_ISDNU = 76 +pkg syscall (netbsd-arm64), const IFT_ISDNU ideal-int +pkg syscall (netbsd-arm64), const IFT_ISO88022LLC = 41 +pkg syscall (netbsd-arm64), const IFT_ISO88022LLC ideal-int +pkg syscall (netbsd-arm64), const IFT_ISO88023 = 7 +pkg syscall (netbsd-arm64), const IFT_ISO88023 ideal-int +pkg syscall (netbsd-arm64), const IFT_ISO88024 = 8 +pkg syscall (netbsd-arm64), const IFT_ISO88024 ideal-int +pkg syscall (netbsd-arm64), const IFT_ISO88025 = 9 +pkg syscall (netbsd-arm64), const IFT_ISO88025CRFPINT = 98 +pkg syscall (netbsd-arm64), const IFT_ISO88025CRFPINT ideal-int +pkg syscall (netbsd-arm64), const IFT_ISO88025DTR = 86 +pkg syscall (netbsd-arm64), const IFT_ISO88025DTR ideal-int +pkg syscall (netbsd-arm64), const IFT_ISO88025FIBER = 115 +pkg syscall (netbsd-arm64), const IFT_ISO88025FIBER ideal-int +pkg syscall (netbsd-arm64), const IFT_ISO88025 ideal-int +pkg syscall (netbsd-arm64), const IFT_ISO88026 = 10 +pkg syscall (netbsd-arm64), const IFT_ISO88026 ideal-int +pkg syscall (netbsd-arm64), const IFT_ISUP = 179 +pkg syscall (netbsd-arm64), const IFT_ISUP ideal-int +pkg syscall (netbsd-arm64), const IFT_L2VLAN = 135 +pkg syscall (netbsd-arm64), const IFT_L2VLAN ideal-int +pkg syscall (netbsd-arm64), const IFT_L3IPVLAN = 136 +pkg syscall (netbsd-arm64), const IFT_L3IPVLAN ideal-int +pkg syscall (netbsd-arm64), const IFT_L3IPXVLAN = 137 +pkg syscall (netbsd-arm64), const IFT_L3IPXVLAN ideal-int +pkg syscall (netbsd-arm64), const IFT_LAPB = 16 +pkg syscall (netbsd-arm64), const IFT_LAPB ideal-int +pkg syscall (netbsd-arm64), const IFT_LAPD = 77 +pkg syscall (netbsd-arm64), const IFT_LAPD ideal-int +pkg syscall (netbsd-arm64), const IFT_LAPF = 119 +pkg syscall (netbsd-arm64), const IFT_LAPF ideal-int +pkg syscall (netbsd-arm64), const IFT_LINEGROUP = 210 +pkg syscall (netbsd-arm64), const IFT_LINEGROUP ideal-int +pkg syscall (netbsd-arm64), const IFT_LOCALTALK = 42 +pkg syscall (netbsd-arm64), const IFT_LOCALTALK ideal-int +pkg syscall (netbsd-arm64), const IFT_LOOP = 24 +pkg syscall (netbsd-arm64), const IFT_LOOP ideal-int +pkg syscall (netbsd-arm64), const IFT_MEDIAMAILOVERIP = 139 +pkg syscall (netbsd-arm64), const IFT_MEDIAMAILOVERIP ideal-int +pkg syscall (netbsd-arm64), const IFT_MFSIGLINK = 167 +pkg syscall (netbsd-arm64), const IFT_MFSIGLINK ideal-int +pkg syscall (netbsd-arm64), const IFT_MIOX25 = 38 +pkg syscall (netbsd-arm64), const IFT_MIOX25 ideal-int +pkg syscall (netbsd-arm64), const IFT_MODEM = 48 +pkg syscall (netbsd-arm64), const IFT_MODEM ideal-int +pkg syscall (netbsd-arm64), const IFT_MPC = 113 +pkg syscall (netbsd-arm64), const IFT_MPC ideal-int +pkg syscall (netbsd-arm64), const IFT_MPLS = 166 +pkg syscall (netbsd-arm64), const IFT_MPLS ideal-int +pkg syscall (netbsd-arm64), const IFT_MPLSTUNNEL = 150 +pkg syscall (netbsd-arm64), const IFT_MPLSTUNNEL ideal-int +pkg syscall (netbsd-arm64), const IFT_MSDSL = 143 +pkg syscall (netbsd-arm64), const IFT_MSDSL ideal-int +pkg syscall (netbsd-arm64), const IFT_MVL = 191 +pkg syscall (netbsd-arm64), const IFT_MVL ideal-int +pkg syscall (netbsd-arm64), const IFT_MYRINET = 99 +pkg syscall (netbsd-arm64), const IFT_MYRINET ideal-int +pkg syscall (netbsd-arm64), const IFT_NFAS = 175 +pkg syscall (netbsd-arm64), const IFT_NFAS ideal-int +pkg syscall (netbsd-arm64), const IFT_NSIP = 27 +pkg syscall (netbsd-arm64), const IFT_NSIP ideal-int +pkg syscall (netbsd-arm64), const IFT_OPTICALCHANNEL = 195 +pkg syscall (netbsd-arm64), const IFT_OPTICALCHANNEL ideal-int +pkg syscall (netbsd-arm64), const IFT_OPTICALTRANSPORT = 196 +pkg syscall (netbsd-arm64), const IFT_OPTICALTRANSPORT ideal-int +pkg syscall (netbsd-arm64), const IFT_OTHER = 1 +pkg syscall (netbsd-arm64), const IFT_OTHER ideal-int +pkg syscall (netbsd-arm64), const IFT_P10 = 12 +pkg syscall (netbsd-arm64), const IFT_P10 ideal-int +pkg syscall (netbsd-arm64), const IFT_P80 = 13 +pkg syscall (netbsd-arm64), const IFT_P80 ideal-int +pkg syscall (netbsd-arm64), const IFT_PARA = 34 +pkg syscall (netbsd-arm64), const IFT_PARA ideal-int +pkg syscall (netbsd-arm64), const IFT_PFLOG = 245 +pkg syscall (netbsd-arm64), const IFT_PFLOG ideal-int +pkg syscall (netbsd-arm64), const IFT_PFSYNC = 246 +pkg syscall (netbsd-arm64), const IFT_PFSYNC ideal-int +pkg syscall (netbsd-arm64), const IFT_PLC = 174 +pkg syscall (netbsd-arm64), const IFT_PLC ideal-int +pkg syscall (netbsd-arm64), const IFT_PON155 = 207 +pkg syscall (netbsd-arm64), const IFT_PON155 ideal-int +pkg syscall (netbsd-arm64), const IFT_PON622 = 208 +pkg syscall (netbsd-arm64), const IFT_PON622 ideal-int +pkg syscall (netbsd-arm64), const IFT_POS = 171 +pkg syscall (netbsd-arm64), const IFT_POS ideal-int +pkg syscall (netbsd-arm64), const IFT_PPP = 23 +pkg syscall (netbsd-arm64), const IFT_PPP ideal-int +pkg syscall (netbsd-arm64), const IFT_PPPMULTILINKBUNDLE = 108 +pkg syscall (netbsd-arm64), const IFT_PPPMULTILINKBUNDLE ideal-int +pkg syscall (netbsd-arm64), const IFT_PROPATM = 197 +pkg syscall (netbsd-arm64), const IFT_PROPATM ideal-int +pkg syscall (netbsd-arm64), const IFT_PROPBWAP2MP = 184 +pkg syscall (netbsd-arm64), const IFT_PROPBWAP2MP ideal-int +pkg syscall (netbsd-arm64), const IFT_PROPCNLS = 89 +pkg syscall (netbsd-arm64), const IFT_PROPCNLS ideal-int +pkg syscall (netbsd-arm64), const IFT_PROPDOCSWIRELESSDOWNSTREAM = 181 +pkg syscall (netbsd-arm64), const IFT_PROPDOCSWIRELESSDOWNSTREAM ideal-int +pkg syscall (netbsd-arm64), const IFT_PROPDOCSWIRELESSMACLAYER = 180 +pkg syscall (netbsd-arm64), const IFT_PROPDOCSWIRELESSMACLAYER ideal-int +pkg syscall (netbsd-arm64), const IFT_PROPDOCSWIRELESSUPSTREAM = 182 +pkg syscall (netbsd-arm64), const IFT_PROPDOCSWIRELESSUPSTREAM ideal-int +pkg syscall (netbsd-arm64), const IFT_PROPMUX = 54 +pkg syscall (netbsd-arm64), const IFT_PROPMUX ideal-int +pkg syscall (netbsd-arm64), const IFT_PROPVIRTUAL = 53 +pkg syscall (netbsd-arm64), const IFT_PROPVIRTUAL ideal-int +pkg syscall (netbsd-arm64), const IFT_PROPWIRELESSP2P = 157 +pkg syscall (netbsd-arm64), const IFT_PROPWIRELESSP2P ideal-int +pkg syscall (netbsd-arm64), const IFT_PTPSERIAL = 22 +pkg syscall (netbsd-arm64), const IFT_PTPSERIAL ideal-int +pkg syscall (netbsd-arm64), const IFT_PVC = 241 +pkg syscall (netbsd-arm64), const IFT_PVC ideal-int +pkg syscall (netbsd-arm64), const IFT_Q2931 = 201 +pkg syscall (netbsd-arm64), const IFT_Q2931 ideal-int +pkg syscall (netbsd-arm64), const IFT_QLLC = 68 +pkg syscall (netbsd-arm64), const IFT_QLLC ideal-int +pkg syscall (netbsd-arm64), const IFT_RADIOMAC = 188 +pkg syscall (netbsd-arm64), const IFT_RADIOMAC ideal-int +pkg syscall (netbsd-arm64), const IFT_RADSL = 95 +pkg syscall (netbsd-arm64), const IFT_RADSL ideal-int +pkg syscall (netbsd-arm64), const IFT_REACHDSL = 192 +pkg syscall (netbsd-arm64), const IFT_REACHDSL ideal-int +pkg syscall (netbsd-arm64), const IFT_RFC1483 = 159 +pkg syscall (netbsd-arm64), const IFT_RFC1483 ideal-int +pkg syscall (netbsd-arm64), const IFT_RS232 = 33 +pkg syscall (netbsd-arm64), const IFT_RS232 ideal-int +pkg syscall (netbsd-arm64), const IFT_RSRB = 79 +pkg syscall (netbsd-arm64), const IFT_RSRB ideal-int +pkg syscall (netbsd-arm64), const IFT_SDLC = 17 +pkg syscall (netbsd-arm64), const IFT_SDLC ideal-int +pkg syscall (netbsd-arm64), const IFT_SDSL = 96 +pkg syscall (netbsd-arm64), const IFT_SDSL ideal-int +pkg syscall (netbsd-arm64), const IFT_SHDSL = 169 +pkg syscall (netbsd-arm64), const IFT_SHDSL ideal-int +pkg syscall (netbsd-arm64), const IFT_SIP = 31 +pkg syscall (netbsd-arm64), const IFT_SIP ideal-int +pkg syscall (netbsd-arm64), const IFT_SIPSIG = 204 +pkg syscall (netbsd-arm64), const IFT_SIPSIG ideal-int +pkg syscall (netbsd-arm64), const IFT_SIPTG = 203 +pkg syscall (netbsd-arm64), const IFT_SIPTG ideal-int +pkg syscall (netbsd-arm64), const IFT_SLIP = 28 +pkg syscall (netbsd-arm64), const IFT_SLIP ideal-int +pkg syscall (netbsd-arm64), const IFT_SMDSDXI = 43 +pkg syscall (netbsd-arm64), const IFT_SMDSDXI ideal-int +pkg syscall (netbsd-arm64), const IFT_SMDSICIP = 52 +pkg syscall (netbsd-arm64), const IFT_SMDSICIP ideal-int +pkg syscall (netbsd-arm64), const IFT_SONET = 39 +pkg syscall (netbsd-arm64), const IFT_SONET ideal-int +pkg syscall (netbsd-arm64), const IFT_SONETOVERHEADCHANNEL = 185 +pkg syscall (netbsd-arm64), const IFT_SONETOVERHEADCHANNEL ideal-int +pkg syscall (netbsd-arm64), const IFT_SONETPATH = 50 +pkg syscall (netbsd-arm64), const IFT_SONETPATH ideal-int +pkg syscall (netbsd-arm64), const IFT_SONETVT = 51 +pkg syscall (netbsd-arm64), const IFT_SONETVT ideal-int +pkg syscall (netbsd-arm64), const IFT_SRP = 151 +pkg syscall (netbsd-arm64), const IFT_SRP ideal-int +pkg syscall (netbsd-arm64), const IFT_SS7SIGLINK = 156 +pkg syscall (netbsd-arm64), const IFT_SS7SIGLINK ideal-int +pkg syscall (netbsd-arm64), const IFT_STACKTOSTACK = 111 +pkg syscall (netbsd-arm64), const IFT_STACKTOSTACK ideal-int +pkg syscall (netbsd-arm64), const IFT_STARLAN = 11 +pkg syscall (netbsd-arm64), const IFT_STARLAN ideal-int +pkg syscall (netbsd-arm64), const IFT_STF = 215 +pkg syscall (netbsd-arm64), const IFT_STF ideal-int +pkg syscall (netbsd-arm64), const IFT_T1 = 18 +pkg syscall (netbsd-arm64), const IFT_T1 ideal-int +pkg syscall (netbsd-arm64), const IFT_TDLC = 116 +pkg syscall (netbsd-arm64), const IFT_TDLC ideal-int +pkg syscall (netbsd-arm64), const IFT_TELINK = 200 +pkg syscall (netbsd-arm64), const IFT_TELINK ideal-int +pkg syscall (netbsd-arm64), const IFT_TERMPAD = 91 +pkg syscall (netbsd-arm64), const IFT_TERMPAD ideal-int +pkg syscall (netbsd-arm64), const IFT_TR008 = 176 +pkg syscall (netbsd-arm64), const IFT_TR008 ideal-int +pkg syscall (netbsd-arm64), const IFT_TRANSPHDLC = 123 +pkg syscall (netbsd-arm64), const IFT_TRANSPHDLC ideal-int +pkg syscall (netbsd-arm64), const IFT_TUNNEL = 131 +pkg syscall (netbsd-arm64), const IFT_TUNNEL ideal-int +pkg syscall (netbsd-arm64), const IFT_ULTRA = 29 +pkg syscall (netbsd-arm64), const IFT_ULTRA ideal-int +pkg syscall (netbsd-arm64), const IFT_USB = 160 +pkg syscall (netbsd-arm64), const IFT_USB ideal-int +pkg syscall (netbsd-arm64), const IFT_V11 = 64 +pkg syscall (netbsd-arm64), const IFT_V11 ideal-int +pkg syscall (netbsd-arm64), const IFT_V35 = 45 +pkg syscall (netbsd-arm64), const IFT_V35 ideal-int +pkg syscall (netbsd-arm64), const IFT_V36 = 65 +pkg syscall (netbsd-arm64), const IFT_V36 ideal-int +pkg syscall (netbsd-arm64), const IFT_V37 = 120 +pkg syscall (netbsd-arm64), const IFT_V37 ideal-int +pkg syscall (netbsd-arm64), const IFT_VDSL = 97 +pkg syscall (netbsd-arm64), const IFT_VDSL ideal-int +pkg syscall (netbsd-arm64), const IFT_VIRTUALIPADDRESS = 112 +pkg syscall (netbsd-arm64), const IFT_VIRTUALIPADDRESS ideal-int +pkg syscall (netbsd-arm64), const IFT_VIRTUALTG = 202 +pkg syscall (netbsd-arm64), const IFT_VIRTUALTG ideal-int +pkg syscall (netbsd-arm64), const IFT_VOICEDID = 213 +pkg syscall (netbsd-arm64), const IFT_VOICEDID ideal-int +pkg syscall (netbsd-arm64), const IFT_VOICEEM = 100 +pkg syscall (netbsd-arm64), const IFT_VOICEEMFGD = 211 +pkg syscall (netbsd-arm64), const IFT_VOICEEMFGD ideal-int +pkg syscall (netbsd-arm64), const IFT_VOICEEM ideal-int +pkg syscall (netbsd-arm64), const IFT_VOICEENCAP = 103 +pkg syscall (netbsd-arm64), const IFT_VOICEENCAP ideal-int +pkg syscall (netbsd-arm64), const IFT_VOICEFGDEANA = 212 +pkg syscall (netbsd-arm64), const IFT_VOICEFGDEANA ideal-int +pkg syscall (netbsd-arm64), const IFT_VOICEFXO = 101 +pkg syscall (netbsd-arm64), const IFT_VOICEFXO ideal-int +pkg syscall (netbsd-arm64), const IFT_VOICEFXS = 102 +pkg syscall (netbsd-arm64), const IFT_VOICEFXS ideal-int +pkg syscall (netbsd-arm64), const IFT_VOICEOVERATM = 152 +pkg syscall (netbsd-arm64), const IFT_VOICEOVERATM ideal-int +pkg syscall (netbsd-arm64), const IFT_VOICEOVERCABLE = 198 +pkg syscall (netbsd-arm64), const IFT_VOICEOVERCABLE ideal-int +pkg syscall (netbsd-arm64), const IFT_VOICEOVERFRAMERELAY = 153 +pkg syscall (netbsd-arm64), const IFT_VOICEOVERFRAMERELAY ideal-int +pkg syscall (netbsd-arm64), const IFT_VOICEOVERIP = 104 +pkg syscall (netbsd-arm64), const IFT_VOICEOVERIP ideal-int +pkg syscall (netbsd-arm64), const IFT_X213 = 93 +pkg syscall (netbsd-arm64), const IFT_X213 ideal-int +pkg syscall (netbsd-arm64), const IFT_X25 = 5 +pkg syscall (netbsd-arm64), const IFT_X25DDN = 4 +pkg syscall (netbsd-arm64), const IFT_X25DDN ideal-int +pkg syscall (netbsd-arm64), const IFT_X25HUNTGROUP = 122 +pkg syscall (netbsd-arm64), const IFT_X25HUNTGROUP ideal-int +pkg syscall (netbsd-arm64), const IFT_X25 ideal-int +pkg syscall (netbsd-arm64), const IFT_X25MLP = 121 +pkg syscall (netbsd-arm64), const IFT_X25MLP ideal-int +pkg syscall (netbsd-arm64), const IFT_X25PLE = 40 +pkg syscall (netbsd-arm64), const IFT_X25PLE ideal-int +pkg syscall (netbsd-arm64), const IFT_XETHER = 26 +pkg syscall (netbsd-arm64), const IFT_XETHER ideal-int +pkg syscall (netbsd-arm64), const IGNBRK = 1 +pkg syscall (netbsd-arm64), const IGNBRK ideal-int +pkg syscall (netbsd-arm64), const IGNCR = 128 +pkg syscall (netbsd-arm64), const IGNCR ideal-int +pkg syscall (netbsd-arm64), const IGNPAR = 4 +pkg syscall (netbsd-arm64), const IGNPAR ideal-int +pkg syscall (netbsd-arm64), const IMAXBEL = 8192 +pkg syscall (netbsd-arm64), const IMAXBEL ideal-int +pkg syscall (netbsd-arm64), const IN_CLASSA_HOST = 16777215 +pkg syscall (netbsd-arm64), const IN_CLASSA_HOST ideal-int +pkg syscall (netbsd-arm64), const IN_CLASSA_MAX = 128 +pkg syscall (netbsd-arm64), const IN_CLASSA_MAX ideal-int +pkg syscall (netbsd-arm64), const IN_CLASSA_NET = 4278190080 +pkg syscall (netbsd-arm64), const IN_CLASSA_NET ideal-int +pkg syscall (netbsd-arm64), const IN_CLASSA_NSHIFT = 24 +pkg syscall (netbsd-arm64), const IN_CLASSA_NSHIFT ideal-int +pkg syscall (netbsd-arm64), const IN_CLASSB_HOST = 65535 +pkg syscall (netbsd-arm64), const IN_CLASSB_HOST ideal-int +pkg syscall (netbsd-arm64), const IN_CLASSB_MAX = 65536 +pkg syscall (netbsd-arm64), const IN_CLASSB_MAX ideal-int +pkg syscall (netbsd-arm64), const IN_CLASSB_NET = 4294901760 +pkg syscall (netbsd-arm64), const IN_CLASSB_NET ideal-int +pkg syscall (netbsd-arm64), const IN_CLASSB_NSHIFT = 16 +pkg syscall (netbsd-arm64), const IN_CLASSB_NSHIFT ideal-int +pkg syscall (netbsd-arm64), const IN_CLASSC_HOST = 255 +pkg syscall (netbsd-arm64), const IN_CLASSC_HOST ideal-int +pkg syscall (netbsd-arm64), const IN_CLASSC_NET = 4294967040 +pkg syscall (netbsd-arm64), const IN_CLASSC_NET ideal-int +pkg syscall (netbsd-arm64), const IN_CLASSC_NSHIFT = 8 +pkg syscall (netbsd-arm64), const IN_CLASSC_NSHIFT ideal-int +pkg syscall (netbsd-arm64), const IN_CLASSD_HOST = 268435455 +pkg syscall (netbsd-arm64), const IN_CLASSD_HOST ideal-int +pkg syscall (netbsd-arm64), const IN_CLASSD_NET = 4026531840 +pkg syscall (netbsd-arm64), const IN_CLASSD_NET ideal-int +pkg syscall (netbsd-arm64), const IN_CLASSD_NSHIFT = 28 +pkg syscall (netbsd-arm64), const IN_CLASSD_NSHIFT ideal-int +pkg syscall (netbsd-arm64), const INLCR = 64 +pkg syscall (netbsd-arm64), const INLCR ideal-int +pkg syscall (netbsd-arm64), const IN_LOOPBACKNET = 127 +pkg syscall (netbsd-arm64), const IN_LOOPBACKNET ideal-int +pkg syscall (netbsd-arm64), const INPCK = 16 +pkg syscall (netbsd-arm64), const INPCK ideal-int +pkg syscall (netbsd-arm64), const IP_ADD_MEMBERSHIP = 12 +pkg syscall (netbsd-arm64), const IP_DEFAULT_MULTICAST_LOOP = 1 +pkg syscall (netbsd-arm64), const IP_DEFAULT_MULTICAST_LOOP ideal-int +pkg syscall (netbsd-arm64), const IP_DEFAULT_MULTICAST_TTL = 1 +pkg syscall (netbsd-arm64), const IP_DEFAULT_MULTICAST_TTL ideal-int +pkg syscall (netbsd-arm64), const IP_DF = 16384 +pkg syscall (netbsd-arm64), const IP_DF ideal-int +pkg syscall (netbsd-arm64), const IP_DROP_MEMBERSHIP = 13 +pkg syscall (netbsd-arm64), const IP_EF = 32768 +pkg syscall (netbsd-arm64), const IP_EF ideal-int +pkg syscall (netbsd-arm64), const IP_ERRORMTU = 21 +pkg syscall (netbsd-arm64), const IP_ERRORMTU ideal-int +pkg syscall (netbsd-arm64), const IP_HDRINCL = 2 +pkg syscall (netbsd-arm64), const IP_HDRINCL ideal-int +pkg syscall (netbsd-arm64), const IP_IPSEC_POLICY = 22 +pkg syscall (netbsd-arm64), const IP_IPSEC_POLICY ideal-int +pkg syscall (netbsd-arm64), const IP_MAX_MEMBERSHIPS = 20 +pkg syscall (netbsd-arm64), const IP_MAX_MEMBERSHIPS ideal-int +pkg syscall (netbsd-arm64), const IP_MAXPACKET = 65535 +pkg syscall (netbsd-arm64), const IP_MAXPACKET ideal-int +pkg syscall (netbsd-arm64), const IP_MF = 8192 +pkg syscall (netbsd-arm64), const IP_MF ideal-int +pkg syscall (netbsd-arm64), const IP_MINFRAGSIZE = 69 +pkg syscall (netbsd-arm64), const IP_MINFRAGSIZE ideal-int +pkg syscall (netbsd-arm64), const IP_MINTTL = 24 +pkg syscall (netbsd-arm64), const IP_MINTTL ideal-int +pkg syscall (netbsd-arm64), const IP_MSS = 576 +pkg syscall (netbsd-arm64), const IP_MSS ideal-int +pkg syscall (netbsd-arm64), const IP_MULTICAST_IF = 9 +pkg syscall (netbsd-arm64), const IP_MULTICAST_LOOP = 11 +pkg syscall (netbsd-arm64), const IP_MULTICAST_TTL = 10 +pkg syscall (netbsd-arm64), const IP_OFFMASK = 8191 +pkg syscall (netbsd-arm64), const IP_OFFMASK ideal-int +pkg syscall (netbsd-arm64), const IP_OPTIONS = 1 +pkg syscall (netbsd-arm64), const IP_OPTIONS ideal-int +pkg syscall (netbsd-arm64), const IP_PORTRANGE = 19 +pkg syscall (netbsd-arm64), const IP_PORTRANGE_DEFAULT = 0 +pkg syscall (netbsd-arm64), const IP_PORTRANGE_DEFAULT ideal-int +pkg syscall (netbsd-arm64), const IP_PORTRANGE_HIGH = 1 +pkg syscall (netbsd-arm64), const IP_PORTRANGE_HIGH ideal-int +pkg syscall (netbsd-arm64), const IP_PORTRANGE ideal-int +pkg syscall (netbsd-arm64), const IP_PORTRANGE_LOW = 2 +pkg syscall (netbsd-arm64), const IP_PORTRANGE_LOW ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_AH = 51 +pkg syscall (netbsd-arm64), const IPPROTO_AH ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_CARP = 112 +pkg syscall (netbsd-arm64), const IPPROTO_CARP ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_DONE = 257 +pkg syscall (netbsd-arm64), const IPPROTO_DONE ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_DSTOPTS = 60 +pkg syscall (netbsd-arm64), const IPPROTO_DSTOPTS ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_EGP = 8 +pkg syscall (netbsd-arm64), const IPPROTO_EGP ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_ENCAP = 98 +pkg syscall (netbsd-arm64), const IPPROTO_ENCAP ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_EON = 80 +pkg syscall (netbsd-arm64), const IPPROTO_EON ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_ESP = 50 +pkg syscall (netbsd-arm64), const IPPROTO_ESP ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_ETHERIP = 97 +pkg syscall (netbsd-arm64), const IPPROTO_ETHERIP ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_FRAGMENT = 44 +pkg syscall (netbsd-arm64), const IPPROTO_FRAGMENT ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_GGP = 3 +pkg syscall (netbsd-arm64), const IPPROTO_GGP ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_GRE = 47 +pkg syscall (netbsd-arm64), const IPPROTO_GRE ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_HOPOPTS = 0 +pkg syscall (netbsd-arm64), const IPPROTO_HOPOPTS ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_ICMP = 1 +pkg syscall (netbsd-arm64), const IPPROTO_ICMP ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_ICMPV6 = 58 +pkg syscall (netbsd-arm64), const IPPROTO_ICMPV6 ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_IDP = 22 +pkg syscall (netbsd-arm64), const IPPROTO_IDP ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_IGMP = 2 +pkg syscall (netbsd-arm64), const IPPROTO_IGMP ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_IPCOMP = 108 +pkg syscall (netbsd-arm64), const IPPROTO_IPCOMP ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_IPIP = 4 +pkg syscall (netbsd-arm64), const IPPROTO_IPIP ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_IPV4 = 4 +pkg syscall (netbsd-arm64), const IPPROTO_IPV4 ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_IPV6_ICMP = 58 +pkg syscall (netbsd-arm64), const IPPROTO_IPV6_ICMP ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_MAX = 256 +pkg syscall (netbsd-arm64), const IPPROTO_MAXID = 52 +pkg syscall (netbsd-arm64), const IPPROTO_MAX ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_MAXID ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_MOBILE = 55 +pkg syscall (netbsd-arm64), const IPPROTO_MOBILE ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_NONE = 59 +pkg syscall (netbsd-arm64), const IPPROTO_NONE ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_PFSYNC = 240 +pkg syscall (netbsd-arm64), const IPPROTO_PFSYNC ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_PIM = 103 +pkg syscall (netbsd-arm64), const IPPROTO_PIM ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_PUP = 12 +pkg syscall (netbsd-arm64), const IPPROTO_PUP ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_RAW = 255 +pkg syscall (netbsd-arm64), const IPPROTO_RAW ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_ROUTING = 43 +pkg syscall (netbsd-arm64), const IPPROTO_ROUTING ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_RSVP = 46 +pkg syscall (netbsd-arm64), const IPPROTO_RSVP ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_TP = 29 +pkg syscall (netbsd-arm64), const IPPROTO_TP ideal-int +pkg syscall (netbsd-arm64), const IPPROTO_VRRP = 112 +pkg syscall (netbsd-arm64), const IPPROTO_VRRP ideal-int +pkg syscall (netbsd-arm64), const IP_RECVDSTADDR = 7 +pkg syscall (netbsd-arm64), const IP_RECVDSTADDR ideal-int +pkg syscall (netbsd-arm64), const IP_RECVIF = 20 +pkg syscall (netbsd-arm64), const IP_RECVIF ideal-int +pkg syscall (netbsd-arm64), const IP_RECVOPTS = 5 +pkg syscall (netbsd-arm64), const IP_RECVOPTS ideal-int +pkg syscall (netbsd-arm64), const IP_RECVRETOPTS = 6 +pkg syscall (netbsd-arm64), const IP_RECVRETOPTS ideal-int +pkg syscall (netbsd-arm64), const IP_RECVTTL = 23 +pkg syscall (netbsd-arm64), const IP_RECVTTL ideal-int +pkg syscall (netbsd-arm64), const IP_RETOPTS = 8 +pkg syscall (netbsd-arm64), const IP_RETOPTS ideal-int +pkg syscall (netbsd-arm64), const IP_RF = 32768 +pkg syscall (netbsd-arm64), const IP_RF ideal-int +pkg syscall (netbsd-arm64), const IP_TOS = 3 +pkg syscall (netbsd-arm64), const IP_TTL = 4 +pkg syscall (netbsd-arm64), const IPV6_CHECKSUM = 26 +pkg syscall (netbsd-arm64), const IPV6_CHECKSUM ideal-int +pkg syscall (netbsd-arm64), const IPV6_DEFAULT_MULTICAST_HOPS = 1 +pkg syscall (netbsd-arm64), const IPV6_DEFAULT_MULTICAST_HOPS ideal-int +pkg syscall (netbsd-arm64), const IPV6_DEFAULT_MULTICAST_LOOP = 1 +pkg syscall (netbsd-arm64), const IPV6_DEFAULT_MULTICAST_LOOP ideal-int +pkg syscall (netbsd-arm64), const IPV6_DEFHLIM = 64 +pkg syscall (netbsd-arm64), const IPV6_DEFHLIM ideal-int +pkg syscall (netbsd-arm64), const IPV6_DONTFRAG = 62 +pkg syscall (netbsd-arm64), const IPV6_DONTFRAG ideal-int +pkg syscall (netbsd-arm64), const IPV6_DSTOPTS = 50 +pkg syscall (netbsd-arm64), const IPV6_DSTOPTS ideal-int +pkg syscall (netbsd-arm64), const IPV6_FAITH = 29 +pkg syscall (netbsd-arm64), const IPV6_FAITH ideal-int +pkg syscall (netbsd-arm64), const IPV6_FLOWINFO_MASK = 4294967055 +pkg syscall (netbsd-arm64), const IPV6_FLOWINFO_MASK ideal-int +pkg syscall (netbsd-arm64), const IPV6_FLOWLABEL_MASK = 4294905600 +pkg syscall (netbsd-arm64), const IPV6_FLOWLABEL_MASK ideal-int +pkg syscall (netbsd-arm64), const IPV6_FRAGTTL = 120 +pkg syscall (netbsd-arm64), const IPV6_FRAGTTL ideal-int +pkg syscall (netbsd-arm64), const IPV6_HLIMDEC = 1 +pkg syscall (netbsd-arm64), const IPV6_HLIMDEC ideal-int +pkg syscall (netbsd-arm64), const IPV6_HOPLIMIT = 47 +pkg syscall (netbsd-arm64), const IPV6_HOPLIMIT ideal-int +pkg syscall (netbsd-arm64), const IPV6_HOPOPTS = 49 +pkg syscall (netbsd-arm64), const IPV6_HOPOPTS ideal-int +pkg syscall (netbsd-arm64), const IPV6_IPSEC_POLICY = 28 +pkg syscall (netbsd-arm64), const IPV6_IPSEC_POLICY ideal-int +pkg syscall (netbsd-arm64), const IPV6_JOIN_GROUP = 12 +pkg syscall (netbsd-arm64), const IPV6_LEAVE_GROUP = 13 +pkg syscall (netbsd-arm64), const IPV6_MAXHLIM = 255 +pkg syscall (netbsd-arm64), const IPV6_MAXHLIM ideal-int +pkg syscall (netbsd-arm64), const IPV6_MAXPACKET = 65535 +pkg syscall (netbsd-arm64), const IPV6_MAXPACKET ideal-int +pkg syscall (netbsd-arm64), const IPV6_MMTU = 1280 +pkg syscall (netbsd-arm64), const IPV6_MMTU ideal-int +pkg syscall (netbsd-arm64), const IPV6_MULTICAST_HOPS = 10 +pkg syscall (netbsd-arm64), const IPV6_MULTICAST_IF = 9 +pkg syscall (netbsd-arm64), const IPV6_MULTICAST_LOOP = 11 +pkg syscall (netbsd-arm64), const IPV6_NEXTHOP = 48 +pkg syscall (netbsd-arm64), const IPV6_NEXTHOP ideal-int +pkg syscall (netbsd-arm64), const IPV6_PATHMTU = 44 +pkg syscall (netbsd-arm64), const IPV6_PATHMTU ideal-int +pkg syscall (netbsd-arm64), const IPV6_PKTINFO = 46 +pkg syscall (netbsd-arm64), const IPV6_PKTINFO ideal-int +pkg syscall (netbsd-arm64), const IPV6_PORTRANGE = 14 +pkg syscall (netbsd-arm64), const IPV6_PORTRANGE_DEFAULT = 0 +pkg syscall (netbsd-arm64), const IPV6_PORTRANGE_DEFAULT ideal-int +pkg syscall (netbsd-arm64), const IPV6_PORTRANGE_HIGH = 1 +pkg syscall (netbsd-arm64), const IPV6_PORTRANGE_HIGH ideal-int +pkg syscall (netbsd-arm64), const IPV6_PORTRANGE ideal-int +pkg syscall (netbsd-arm64), const IPV6_PORTRANGE_LOW = 2 +pkg syscall (netbsd-arm64), const IPV6_PORTRANGE_LOW ideal-int +pkg syscall (netbsd-arm64), const IPV6_RECVDSTOPTS = 40 +pkg syscall (netbsd-arm64), const IPV6_RECVDSTOPTS ideal-int +pkg syscall (netbsd-arm64), const IPV6_RECVHOPLIMIT = 37 +pkg syscall (netbsd-arm64), const IPV6_RECVHOPLIMIT ideal-int +pkg syscall (netbsd-arm64), const IPV6_RECVHOPOPTS = 39 +pkg syscall (netbsd-arm64), const IPV6_RECVHOPOPTS ideal-int +pkg syscall (netbsd-arm64), const IPV6_RECVPATHMTU = 43 +pkg syscall (netbsd-arm64), const IPV6_RECVPATHMTU ideal-int +pkg syscall (netbsd-arm64), const IPV6_RECVPKTINFO = 36 +pkg syscall (netbsd-arm64), const IPV6_RECVPKTINFO ideal-int +pkg syscall (netbsd-arm64), const IPV6_RECVRTHDR = 38 +pkg syscall (netbsd-arm64), const IPV6_RECVRTHDR ideal-int +pkg syscall (netbsd-arm64), const IPV6_RECVTCLASS = 57 +pkg syscall (netbsd-arm64), const IPV6_RECVTCLASS ideal-int +pkg syscall (netbsd-arm64), const IPV6_RTHDR = 51 +pkg syscall (netbsd-arm64), const IPV6_RTHDRDSTOPTS = 35 +pkg syscall (netbsd-arm64), const IPV6_RTHDRDSTOPTS ideal-int +pkg syscall (netbsd-arm64), const IPV6_RTHDR ideal-int +pkg syscall (netbsd-arm64), const IPV6_RTHDR_LOOSE = 0 +pkg syscall (netbsd-arm64), const IPV6_RTHDR_LOOSE ideal-int +pkg syscall (netbsd-arm64), const IPV6_RTHDR_STRICT = 1 +pkg syscall (netbsd-arm64), const IPV6_RTHDR_STRICT ideal-int +pkg syscall (netbsd-arm64), const IPV6_RTHDR_TYPE_0 = 0 +pkg syscall (netbsd-arm64), const IPV6_RTHDR_TYPE_0 ideal-int +pkg syscall (netbsd-arm64), const IPV6_SOCKOPT_RESERVED1 = 3 +pkg syscall (netbsd-arm64), const IPV6_SOCKOPT_RESERVED1 ideal-int +pkg syscall (netbsd-arm64), const IPV6_TCLASS = 61 +pkg syscall (netbsd-arm64), const IPV6_TCLASS ideal-int +pkg syscall (netbsd-arm64), const IPV6_UNICAST_HOPS = 4 +pkg syscall (netbsd-arm64), const IPV6_USE_MIN_MTU = 42 +pkg syscall (netbsd-arm64), const IPV6_USE_MIN_MTU ideal-int +pkg syscall (netbsd-arm64), const IPV6_V6ONLY = 27 +pkg syscall (netbsd-arm64), const IPV6_VERSION = 96 +pkg syscall (netbsd-arm64), const IPV6_VERSION ideal-int +pkg syscall (netbsd-arm64), const IPV6_VERSION_MASK = 240 +pkg syscall (netbsd-arm64), const IPV6_VERSION_MASK ideal-int +pkg syscall (netbsd-arm64), const ISIG = 128 +pkg syscall (netbsd-arm64), const ISIG ideal-int +pkg syscall (netbsd-arm64), const ISTRIP = 32 +pkg syscall (netbsd-arm64), const ISTRIP ideal-int +pkg syscall (netbsd-arm64), const IXANY = 2048 +pkg syscall (netbsd-arm64), const IXANY ideal-int +pkg syscall (netbsd-arm64), const IXOFF = 1024 +pkg syscall (netbsd-arm64), const IXOFF ideal-int +pkg syscall (netbsd-arm64), const IXON = 512 +pkg syscall (netbsd-arm64), const IXON ideal-int +pkg syscall (netbsd-arm64), const LOCK_EX = 2 +pkg syscall (netbsd-arm64), const LOCK_EX ideal-int +pkg syscall (netbsd-arm64), const LOCK_NB = 4 +pkg syscall (netbsd-arm64), const LOCK_NB ideal-int +pkg syscall (netbsd-arm64), const LOCK_SH = 1 +pkg syscall (netbsd-arm64), const LOCK_SH ideal-int +pkg syscall (netbsd-arm64), const LOCK_UN = 8 +pkg syscall (netbsd-arm64), const LOCK_UN ideal-int +pkg syscall (netbsd-arm64), const MADV_DONTNEED = 4 +pkg syscall (netbsd-arm64), const MADV_DONTNEED ideal-int +pkg syscall (netbsd-arm64), const MADV_FREE = 6 +pkg syscall (netbsd-arm64), const MADV_FREE ideal-int +pkg syscall (netbsd-arm64), const MADV_NORMAL = 0 +pkg syscall (netbsd-arm64), const MADV_NORMAL ideal-int +pkg syscall (netbsd-arm64), const MADV_RANDOM = 1 +pkg syscall (netbsd-arm64), const MADV_RANDOM ideal-int +pkg syscall (netbsd-arm64), const MADV_SEQUENTIAL = 2 +pkg syscall (netbsd-arm64), const MADV_SEQUENTIAL ideal-int +pkg syscall (netbsd-arm64), const MADV_SPACEAVAIL = 5 +pkg syscall (netbsd-arm64), const MADV_SPACEAVAIL ideal-int +pkg syscall (netbsd-arm64), const MADV_WILLNEED = 3 +pkg syscall (netbsd-arm64), const MADV_WILLNEED ideal-int +pkg syscall (netbsd-arm64), const MAP_ALIGNMENT_16MB = 402653184 +pkg syscall (netbsd-arm64), const MAP_ALIGNMENT_16MB ideal-int +pkg syscall (netbsd-arm64), const MAP_ALIGNMENT_1TB = 671088640 +pkg syscall (netbsd-arm64), const MAP_ALIGNMENT_1TB ideal-int +pkg syscall (netbsd-arm64), const MAP_ALIGNMENT_256TB = 805306368 +pkg syscall (netbsd-arm64), const MAP_ALIGNMENT_256TB ideal-int +pkg syscall (netbsd-arm64), const MAP_ALIGNMENT_4GB = 536870912 +pkg syscall (netbsd-arm64), const MAP_ALIGNMENT_4GB ideal-int +pkg syscall (netbsd-arm64), const MAP_ALIGNMENT_64KB = 268435456 +pkg syscall (netbsd-arm64), const MAP_ALIGNMENT_64KB ideal-int +pkg syscall (netbsd-arm64), const MAP_ALIGNMENT_64PB = 939524096 +pkg syscall (netbsd-arm64), const MAP_ALIGNMENT_64PB ideal-int +pkg syscall (netbsd-arm64), const MAP_ALIGNMENT_MASK = -16777216 +pkg syscall (netbsd-arm64), const MAP_ALIGNMENT_MASK ideal-int +pkg syscall (netbsd-arm64), const MAP_ALIGNMENT_SHIFT = 24 +pkg syscall (netbsd-arm64), const MAP_ALIGNMENT_SHIFT ideal-int +pkg syscall (netbsd-arm64), const MAP_ANON = 4096 +pkg syscall (netbsd-arm64), const MAP_ANON ideal-int +pkg syscall (netbsd-arm64), const MAP_FILE = 0 +pkg syscall (netbsd-arm64), const MAP_FILE ideal-int +pkg syscall (netbsd-arm64), const MAP_FIXED = 16 +pkg syscall (netbsd-arm64), const MAP_FIXED ideal-int +pkg syscall (netbsd-arm64), const MAP_HASSEMAPHORE = 512 +pkg syscall (netbsd-arm64), const MAP_HASSEMAPHORE ideal-int +pkg syscall (netbsd-arm64), const MAP_INHERIT = 128 +pkg syscall (netbsd-arm64), const MAP_INHERIT_COPY = 1 +pkg syscall (netbsd-arm64), const MAP_INHERIT_COPY ideal-int +pkg syscall (netbsd-arm64), const MAP_INHERIT_DEFAULT = 1 +pkg syscall (netbsd-arm64), const MAP_INHERIT_DEFAULT ideal-int +pkg syscall (netbsd-arm64), const MAP_INHERIT_DONATE_COPY = 3 +pkg syscall (netbsd-arm64), const MAP_INHERIT_DONATE_COPY ideal-int +pkg syscall (netbsd-arm64), const MAP_INHERIT ideal-int +pkg syscall (netbsd-arm64), const MAP_INHERIT_NONE = 2 +pkg syscall (netbsd-arm64), const MAP_INHERIT_NONE ideal-int +pkg syscall (netbsd-arm64), const MAP_INHERIT_SHARE = 0 +pkg syscall (netbsd-arm64), const MAP_INHERIT_SHARE ideal-int +pkg syscall (netbsd-arm64), const MAP_NORESERVE = 64 +pkg syscall (netbsd-arm64), const MAP_NORESERVE ideal-int +pkg syscall (netbsd-arm64), const MAP_PRIVATE = 2 +pkg syscall (netbsd-arm64), const MAP_PRIVATE ideal-int +pkg syscall (netbsd-arm64), const MAP_RENAME = 32 +pkg syscall (netbsd-arm64), const MAP_RENAME ideal-int +pkg syscall (netbsd-arm64), const MAP_SHARED = 1 +pkg syscall (netbsd-arm64), const MAP_SHARED ideal-int +pkg syscall (netbsd-arm64), const MAP_STACK = 8192 +pkg syscall (netbsd-arm64), const MAP_STACK ideal-int +pkg syscall (netbsd-arm64), const MAP_TRYFIXED = 1024 +pkg syscall (netbsd-arm64), const MAP_TRYFIXED ideal-int +pkg syscall (netbsd-arm64), const MAP_WIRED = 2048 +pkg syscall (netbsd-arm64), const MAP_WIRED ideal-int +pkg syscall (netbsd-arm64), const MCL_CURRENT = 1 +pkg syscall (netbsd-arm64), const MCL_CURRENT ideal-int +pkg syscall (netbsd-arm64), const MCL_FUTURE = 2 +pkg syscall (netbsd-arm64), const MCL_FUTURE ideal-int +pkg syscall (netbsd-arm64), const MS_ASYNC = 1 +pkg syscall (netbsd-arm64), const MS_ASYNC ideal-int +pkg syscall (netbsd-arm64), const MSG_BCAST = 256 +pkg syscall (netbsd-arm64), const MSG_BCAST ideal-int +pkg syscall (netbsd-arm64), const MSG_CMSG_CLOEXEC = 2048 +pkg syscall (netbsd-arm64), const MSG_CMSG_CLOEXEC ideal-int +pkg syscall (netbsd-arm64), const MSG_CONTROLMBUF = 33554432 +pkg syscall (netbsd-arm64), const MSG_CONTROLMBUF ideal-int +pkg syscall (netbsd-arm64), const MSG_CTRUNC = 32 +pkg syscall (netbsd-arm64), const MSG_CTRUNC ideal-int +pkg syscall (netbsd-arm64), const MSG_DONTROUTE = 4 +pkg syscall (netbsd-arm64), const MSG_DONTROUTE ideal-int +pkg syscall (netbsd-arm64), const MSG_DONTWAIT = 128 +pkg syscall (netbsd-arm64), const MSG_DONTWAIT ideal-int +pkg syscall (netbsd-arm64), const MSG_EOR = 8 +pkg syscall (netbsd-arm64), const MSG_EOR ideal-int +pkg syscall (netbsd-arm64), const MSG_IOVUSRSPACE = 67108864 +pkg syscall (netbsd-arm64), const MSG_IOVUSRSPACE ideal-int +pkg syscall (netbsd-arm64), const MSG_LENUSRSPACE = 134217728 +pkg syscall (netbsd-arm64), const MSG_LENUSRSPACE ideal-int +pkg syscall (netbsd-arm64), const MSG_MCAST = 512 +pkg syscall (netbsd-arm64), const MSG_MCAST ideal-int +pkg syscall (netbsd-arm64), const MSG_NAMEMBUF = 16777216 +pkg syscall (netbsd-arm64), const MSG_NAMEMBUF ideal-int +pkg syscall (netbsd-arm64), const MSG_NBIO = 4096 +pkg syscall (netbsd-arm64), const MSG_NBIO ideal-int +pkg syscall (netbsd-arm64), const MSG_NOSIGNAL = 1024 +pkg syscall (netbsd-arm64), const MSG_NOSIGNAL ideal-int +pkg syscall (netbsd-arm64), const MSG_OOB = 1 +pkg syscall (netbsd-arm64), const MSG_OOB ideal-int +pkg syscall (netbsd-arm64), const MSG_PEEK = 2 +pkg syscall (netbsd-arm64), const MSG_PEEK ideal-int +pkg syscall (netbsd-arm64), const MSG_TRUNC = 16 +pkg syscall (netbsd-arm64), const MSG_TRUNC ideal-int +pkg syscall (netbsd-arm64), const MSG_USERFLAGS = 16777215 +pkg syscall (netbsd-arm64), const MSG_USERFLAGS ideal-int +pkg syscall (netbsd-arm64), const MSG_WAITALL = 64 +pkg syscall (netbsd-arm64), const MSG_WAITALL ideal-int +pkg syscall (netbsd-arm64), const MS_INVALIDATE = 2 +pkg syscall (netbsd-arm64), const MS_INVALIDATE ideal-int +pkg syscall (netbsd-arm64), const MS_SYNC = 4 +pkg syscall (netbsd-arm64), const MS_SYNC ideal-int +pkg syscall (netbsd-arm64), const NAME_MAX = 511 +pkg syscall (netbsd-arm64), const NAME_MAX ideal-int +pkg syscall (netbsd-arm64), const NET_RT_DUMP = 1 +pkg syscall (netbsd-arm64), const NET_RT_DUMP ideal-int +pkg syscall (netbsd-arm64), const NET_RT_FLAGS = 2 +pkg syscall (netbsd-arm64), const NET_RT_FLAGS ideal-int +pkg syscall (netbsd-arm64), const NET_RT_IFLIST = 5 +pkg syscall (netbsd-arm64), const NET_RT_IFLIST ideal-int +pkg syscall (netbsd-arm64), const NET_RT_MAXID = 6 +pkg syscall (netbsd-arm64), const NET_RT_MAXID ideal-int +pkg syscall (netbsd-arm64), const NET_RT_OIFLIST = 4 +pkg syscall (netbsd-arm64), const NET_RT_OIFLIST ideal-int +pkg syscall (netbsd-arm64), const NET_RT_OOIFLIST = 3 +pkg syscall (netbsd-arm64), const NET_RT_OOIFLIST ideal-int +pkg syscall (netbsd-arm64), const NOFLSH = 2147483648 +pkg syscall (netbsd-arm64), const NOFLSH ideal-int +pkg syscall (netbsd-arm64), const NOTE_ATTRIB = 8 +pkg syscall (netbsd-arm64), const NOTE_ATTRIB ideal-int +pkg syscall (netbsd-arm64), const NOTE_CHILD = 4 +pkg syscall (netbsd-arm64), const NOTE_CHILD ideal-int +pkg syscall (netbsd-arm64), const NOTE_DELETE = 1 +pkg syscall (netbsd-arm64), const NOTE_DELETE ideal-int +pkg syscall (netbsd-arm64), const NOTE_EXEC = 536870912 +pkg syscall (netbsd-arm64), const NOTE_EXEC ideal-int +pkg syscall (netbsd-arm64), const NOTE_EXIT = 2147483648 +pkg syscall (netbsd-arm64), const NOTE_EXIT ideal-int +pkg syscall (netbsd-arm64), const NOTE_EXTEND = 4 +pkg syscall (netbsd-arm64), const NOTE_EXTEND ideal-int +pkg syscall (netbsd-arm64), const NOTE_FORK = 1073741824 +pkg syscall (netbsd-arm64), const NOTE_FORK ideal-int +pkg syscall (netbsd-arm64), const NOTE_LINK = 16 +pkg syscall (netbsd-arm64), const NOTE_LINK ideal-int +pkg syscall (netbsd-arm64), const NOTE_LOWAT = 1 +pkg syscall (netbsd-arm64), const NOTE_LOWAT ideal-int +pkg syscall (netbsd-arm64), const NOTE_PCTRLMASK = 4026531840 +pkg syscall (netbsd-arm64), const NOTE_PCTRLMASK ideal-int +pkg syscall (netbsd-arm64), const NOTE_PDATAMASK = 1048575 +pkg syscall (netbsd-arm64), const NOTE_PDATAMASK ideal-int +pkg syscall (netbsd-arm64), const NOTE_RENAME = 32 +pkg syscall (netbsd-arm64), const NOTE_RENAME ideal-int +pkg syscall (netbsd-arm64), const NOTE_REVOKE = 64 +pkg syscall (netbsd-arm64), const NOTE_REVOKE ideal-int +pkg syscall (netbsd-arm64), const NOTE_TRACK = 1 +pkg syscall (netbsd-arm64), const NOTE_TRACKERR = 2 +pkg syscall (netbsd-arm64), const NOTE_TRACKERR ideal-int +pkg syscall (netbsd-arm64), const NOTE_TRACK ideal-int +pkg syscall (netbsd-arm64), const NOTE_WRITE = 2 +pkg syscall (netbsd-arm64), const NOTE_WRITE ideal-int +pkg syscall (netbsd-arm64), const O_ACCMODE = 3 +pkg syscall (netbsd-arm64), const O_ACCMODE ideal-int +pkg syscall (netbsd-arm64), const O_ALT_IO = 262144 +pkg syscall (netbsd-arm64), const O_ALT_IO ideal-int +pkg syscall (netbsd-arm64), const O_APPEND = 8 +pkg syscall (netbsd-arm64), const O_ASYNC = 64 +pkg syscall (netbsd-arm64), const O_CLOEXEC = 4194304 +pkg syscall (netbsd-arm64), const O_CREAT = 512 +pkg syscall (netbsd-arm64), const OCRNL = 16 +pkg syscall (netbsd-arm64), const OCRNL ideal-int +pkg syscall (netbsd-arm64), const O_DIRECT = 524288 +pkg syscall (netbsd-arm64), const O_DIRECT ideal-int +pkg syscall (netbsd-arm64), const O_DIRECTORY = 2097152 +pkg syscall (netbsd-arm64), const O_DIRECTORY ideal-int +pkg syscall (netbsd-arm64), const O_DSYNC = 65536 +pkg syscall (netbsd-arm64), const O_DSYNC ideal-int +pkg syscall (netbsd-arm64), const O_EXCL = 2048 +pkg syscall (netbsd-arm64), const O_EXLOCK = 32 +pkg syscall (netbsd-arm64), const O_EXLOCK ideal-int +pkg syscall (netbsd-arm64), const OFIOGETBMAP = 3221513850 +pkg syscall (netbsd-arm64), const OFIOGETBMAP ideal-int +pkg syscall (netbsd-arm64), const O_FSYNC = 128 +pkg syscall (netbsd-arm64), const O_FSYNC ideal-int +pkg syscall (netbsd-arm64), const O_NDELAY = 4 +pkg syscall (netbsd-arm64), const O_NDELAY ideal-int +pkg syscall (netbsd-arm64), const ONLCR = 2 +pkg syscall (netbsd-arm64), const ONLCR ideal-int +pkg syscall (netbsd-arm64), const ONLRET = 64 +pkg syscall (netbsd-arm64), const ONLRET ideal-int +pkg syscall (netbsd-arm64), const ONOCR = 32 +pkg syscall (netbsd-arm64), const ONOCR ideal-int +pkg syscall (netbsd-arm64), const O_NOCTTY = 32768 +pkg syscall (netbsd-arm64), const ONOEOT = 8 +pkg syscall (netbsd-arm64), const ONOEOT ideal-int +pkg syscall (netbsd-arm64), const O_NOFOLLOW = 256 +pkg syscall (netbsd-arm64), const O_NOFOLLOW ideal-int +pkg syscall (netbsd-arm64), const O_NONBLOCK = 4 +pkg syscall (netbsd-arm64), const O_NOSIGPIPE = 16777216 +pkg syscall (netbsd-arm64), const O_NOSIGPIPE ideal-int +pkg syscall (netbsd-arm64), const OPOST = 1 +pkg syscall (netbsd-arm64), const OPOST ideal-int +pkg syscall (netbsd-arm64), const O_RSYNC = 131072 +pkg syscall (netbsd-arm64), const O_RSYNC ideal-int +pkg syscall (netbsd-arm64), const O_SHLOCK = 16 +pkg syscall (netbsd-arm64), const O_SHLOCK ideal-int +pkg syscall (netbsd-arm64), const O_SYNC = 128 +pkg syscall (netbsd-arm64), const O_TRUNC = 1024 +pkg syscall (netbsd-arm64), const PARENB = 4096 +pkg syscall (netbsd-arm64), const PARENB ideal-int +pkg syscall (netbsd-arm64), const PARMRK = 8 +pkg syscall (netbsd-arm64), const PARMRK ideal-int +pkg syscall (netbsd-arm64), const PARODD = 8192 +pkg syscall (netbsd-arm64), const PARODD ideal-int +pkg syscall (netbsd-arm64), const PENDIN = 536870912 +pkg syscall (netbsd-arm64), const PENDIN ideal-int +pkg syscall (netbsd-arm64), const PRI_IOFLUSH = 124 +pkg syscall (netbsd-arm64), const PRI_IOFLUSH ideal-int +pkg syscall (netbsd-arm64), const PRIO_PGRP = 1 +pkg syscall (netbsd-arm64), const PRIO_PGRP ideal-int +pkg syscall (netbsd-arm64), const PRIO_PROCESS = 0 +pkg syscall (netbsd-arm64), const PRIO_PROCESS ideal-int +pkg syscall (netbsd-arm64), const PRIO_USER = 2 +pkg syscall (netbsd-arm64), const PRIO_USER ideal-int +pkg syscall (netbsd-arm64), const PROT_EXEC = 4 +pkg syscall (netbsd-arm64), const PROT_EXEC ideal-int +pkg syscall (netbsd-arm64), const PROT_NONE = 0 +pkg syscall (netbsd-arm64), const PROT_NONE ideal-int +pkg syscall (netbsd-arm64), const PROT_READ = 1 +pkg syscall (netbsd-arm64), const PROT_READ ideal-int +pkg syscall (netbsd-arm64), const PROT_WRITE = 2 +pkg syscall (netbsd-arm64), const PROT_WRITE ideal-int +pkg syscall (netbsd-arm64), const PTRACE_CONT = 7 +pkg syscall (netbsd-arm64), const PTRACE_CONT ideal-int +pkg syscall (netbsd-arm64), const PTRACE_KILL = 8 +pkg syscall (netbsd-arm64), const PTRACE_KILL ideal-int +pkg syscall (netbsd-arm64), const PTRACE_TRACEME = 0 +pkg syscall (netbsd-arm64), const PTRACE_TRACEME ideal-int +pkg syscall (netbsd-arm64), const RLIM_INFINITY = 9223372036854775807 +pkg syscall (netbsd-arm64), const RLIM_INFINITY ideal-int +pkg syscall (netbsd-arm64), const RLIMIT_AS = 10 +pkg syscall (netbsd-arm64), const RLIMIT_AS ideal-int +pkg syscall (netbsd-arm64), const RLIMIT_CORE = 4 +pkg syscall (netbsd-arm64), const RLIMIT_CORE ideal-int +pkg syscall (netbsd-arm64), const RLIMIT_CPU = 0 +pkg syscall (netbsd-arm64), const RLIMIT_CPU ideal-int +pkg syscall (netbsd-arm64), const RLIMIT_DATA = 2 +pkg syscall (netbsd-arm64), const RLIMIT_DATA ideal-int +pkg syscall (netbsd-arm64), const RLIMIT_FSIZE = 1 +pkg syscall (netbsd-arm64), const RLIMIT_FSIZE ideal-int +pkg syscall (netbsd-arm64), const RLIMIT_NOFILE = 8 +pkg syscall (netbsd-arm64), const RLIMIT_NOFILE ideal-int +pkg syscall (netbsd-arm64), const RLIMIT_STACK = 3 +pkg syscall (netbsd-arm64), const RLIMIT_STACK ideal-int +pkg syscall (netbsd-arm64), const RTA_AUTHOR = 64 +pkg syscall (netbsd-arm64), const RTA_AUTHOR ideal-int +pkg syscall (netbsd-arm64), const RTA_BRD = 128 +pkg syscall (netbsd-arm64), const RTA_BRD ideal-int +pkg syscall (netbsd-arm64), const RTA_DST = 1 +pkg syscall (netbsd-arm64), const RTA_DST ideal-int +pkg syscall (netbsd-arm64), const RTA_GATEWAY = 2 +pkg syscall (netbsd-arm64), const RTA_GATEWAY ideal-int +pkg syscall (netbsd-arm64), const RTA_GENMASK = 8 +pkg syscall (netbsd-arm64), const RTA_GENMASK ideal-int +pkg syscall (netbsd-arm64), const RTA_IFA = 32 +pkg syscall (netbsd-arm64), const RTA_IFA ideal-int +pkg syscall (netbsd-arm64), const RTA_IFP = 16 +pkg syscall (netbsd-arm64), const RTA_IFP ideal-int +pkg syscall (netbsd-arm64), const RTA_NETMASK = 4 +pkg syscall (netbsd-arm64), const RTA_NETMASK ideal-int +pkg syscall (netbsd-arm64), const RTA_TAG = 256 +pkg syscall (netbsd-arm64), const RTA_TAG ideal-int +pkg syscall (netbsd-arm64), const RTAX_AUTHOR = 6 +pkg syscall (netbsd-arm64), const RTAX_AUTHOR ideal-int +pkg syscall (netbsd-arm64), const RTAX_BRD = 7 +pkg syscall (netbsd-arm64), const RTAX_BRD ideal-int +pkg syscall (netbsd-arm64), const RTAX_DST = 0 +pkg syscall (netbsd-arm64), const RTAX_DST ideal-int +pkg syscall (netbsd-arm64), const RTAX_GATEWAY = 1 +pkg syscall (netbsd-arm64), const RTAX_GATEWAY ideal-int +pkg syscall (netbsd-arm64), const RTAX_GENMASK = 3 +pkg syscall (netbsd-arm64), const RTAX_GENMASK ideal-int +pkg syscall (netbsd-arm64), const RTAX_IFA = 5 +pkg syscall (netbsd-arm64), const RTAX_IFA ideal-int +pkg syscall (netbsd-arm64), const RTAX_IFP = 4 +pkg syscall (netbsd-arm64), const RTAX_IFP ideal-int +pkg syscall (netbsd-arm64), const RTAX_MAX = 9 +pkg syscall (netbsd-arm64), const RTAX_MAX ideal-int +pkg syscall (netbsd-arm64), const RTAX_NETMASK = 2 +pkg syscall (netbsd-arm64), const RTAX_NETMASK ideal-int +pkg syscall (netbsd-arm64), const RTAX_TAG = 8 +pkg syscall (netbsd-arm64), const RTAX_TAG ideal-int +pkg syscall (netbsd-arm64), const RTF_ANNOUNCE = 131072 +pkg syscall (netbsd-arm64), const RTF_ANNOUNCE ideal-int +pkg syscall (netbsd-arm64), const RTF_BLACKHOLE = 4096 +pkg syscall (netbsd-arm64), const RTF_BLACKHOLE ideal-int +pkg syscall (netbsd-arm64), const RTF_CLONED = 8192 +pkg syscall (netbsd-arm64), const RTF_CLONED ideal-int +pkg syscall (netbsd-arm64), const RTF_CLONING = 256 +pkg syscall (netbsd-arm64), const RTF_CLONING ideal-int +pkg syscall (netbsd-arm64), const RTF_DONE = 64 +pkg syscall (netbsd-arm64), const RTF_DONE ideal-int +pkg syscall (netbsd-arm64), const RTF_DYNAMIC = 16 +pkg syscall (netbsd-arm64), const RTF_DYNAMIC ideal-int +pkg syscall (netbsd-arm64), const RTF_GATEWAY = 2 +pkg syscall (netbsd-arm64), const RTF_GATEWAY ideal-int +pkg syscall (netbsd-arm64), const RTF_HOST = 4 +pkg syscall (netbsd-arm64), const RTF_HOST ideal-int +pkg syscall (netbsd-arm64), const RTF_LLINFO = 1024 +pkg syscall (netbsd-arm64), const RTF_LLINFO ideal-int +pkg syscall (netbsd-arm64), const RTF_MASK = 128 +pkg syscall (netbsd-arm64), const RTF_MASK ideal-int +pkg syscall (netbsd-arm64), const RTF_MODIFIED = 32 +pkg syscall (netbsd-arm64), const RTF_MODIFIED ideal-int +pkg syscall (netbsd-arm64), const RTF_PROTO1 = 32768 +pkg syscall (netbsd-arm64), const RTF_PROTO1 ideal-int +pkg syscall (netbsd-arm64), const RTF_PROTO2 = 16384 +pkg syscall (netbsd-arm64), const RTF_PROTO2 ideal-int +pkg syscall (netbsd-arm64), const RTF_REJECT = 8 +pkg syscall (netbsd-arm64), const RTF_REJECT ideal-int +pkg syscall (netbsd-arm64), const RTF_SRC = 65536 +pkg syscall (netbsd-arm64), const RTF_SRC ideal-int +pkg syscall (netbsd-arm64), const RTF_STATIC = 2048 +pkg syscall (netbsd-arm64), const RTF_STATIC ideal-int +pkg syscall (netbsd-arm64), const RTF_UP = 1 +pkg syscall (netbsd-arm64), const RTF_UP ideal-int +pkg syscall (netbsd-arm64), const RTF_XRESOLVE = 512 +pkg syscall (netbsd-arm64), const RTF_XRESOLVE ideal-int +pkg syscall (netbsd-arm64), const RTM_ADD = 1 +pkg syscall (netbsd-arm64), const RTM_ADD ideal-int +pkg syscall (netbsd-arm64), const RTM_CHANGE = 3 +pkg syscall (netbsd-arm64), const RTM_CHANGE ideal-int +pkg syscall (netbsd-arm64), const RTM_CHGADDR = 21 +pkg syscall (netbsd-arm64), const RTM_CHGADDR ideal-int +pkg syscall (netbsd-arm64), const RTM_DELADDR = 13 +pkg syscall (netbsd-arm64), const RTM_DELADDR ideal-int +pkg syscall (netbsd-arm64), const RTM_DELETE = 2 +pkg syscall (netbsd-arm64), const RTM_DELETE ideal-int +pkg syscall (netbsd-arm64), const RTM_GET = 4 +pkg syscall (netbsd-arm64), const RTM_GET ideal-int +pkg syscall (netbsd-arm64), const RTM_IEEE80211 = 17 +pkg syscall (netbsd-arm64), const RTM_IEEE80211 ideal-int +pkg syscall (netbsd-arm64), const RTM_IFANNOUNCE = 16 +pkg syscall (netbsd-arm64), const RTM_IFANNOUNCE ideal-int +pkg syscall (netbsd-arm64), const RTM_IFINFO = 20 +pkg syscall (netbsd-arm64), const RTM_IFINFO ideal-int +pkg syscall (netbsd-arm64), const RTM_LLINFO_UPD = 19 +pkg syscall (netbsd-arm64), const RTM_LLINFO_UPD ideal-int +pkg syscall (netbsd-arm64), const RTM_LOCK = 8 +pkg syscall (netbsd-arm64), const RTM_LOCK ideal-int +pkg syscall (netbsd-arm64), const RTM_LOSING = 5 +pkg syscall (netbsd-arm64), const RTM_LOSING ideal-int +pkg syscall (netbsd-arm64), const RTM_MISS = 7 +pkg syscall (netbsd-arm64), const RTM_MISS ideal-int +pkg syscall (netbsd-arm64), const RTM_NEWADDR = 12 +pkg syscall (netbsd-arm64), const RTM_NEWADDR ideal-int +pkg syscall (netbsd-arm64), const RTM_OIFINFO = 15 +pkg syscall (netbsd-arm64), const RTM_OIFINFO ideal-int +pkg syscall (netbsd-arm64), const RTM_OLDADD = 9 +pkg syscall (netbsd-arm64), const RTM_OLDADD ideal-int +pkg syscall (netbsd-arm64), const RTM_OLDDEL = 10 +pkg syscall (netbsd-arm64), const RTM_OLDDEL ideal-int +pkg syscall (netbsd-arm64), const RTM_OOIFINFO = 14 +pkg syscall (netbsd-arm64), const RTM_OOIFINFO ideal-int +pkg syscall (netbsd-arm64), const RTM_REDIRECT = 6 +pkg syscall (netbsd-arm64), const RTM_REDIRECT ideal-int +pkg syscall (netbsd-arm64), const RTM_RESOLVE = 11 +pkg syscall (netbsd-arm64), const RTM_RESOLVE ideal-int +pkg syscall (netbsd-arm64), const RTM_RTTUNIT = 1000000 +pkg syscall (netbsd-arm64), const RTM_RTTUNIT ideal-int +pkg syscall (netbsd-arm64), const RTM_SETGATE = 18 +pkg syscall (netbsd-arm64), const RTM_SETGATE ideal-int +pkg syscall (netbsd-arm64), const RTM_VERSION = 4 +pkg syscall (netbsd-arm64), const RTM_VERSION ideal-int +pkg syscall (netbsd-arm64), const RTV_EXPIRE = 4 +pkg syscall (netbsd-arm64), const RTV_EXPIRE ideal-int +pkg syscall (netbsd-arm64), const RTV_HOPCOUNT = 2 +pkg syscall (netbsd-arm64), const RTV_HOPCOUNT ideal-int +pkg syscall (netbsd-arm64), const RTV_MTU = 1 +pkg syscall (netbsd-arm64), const RTV_MTU ideal-int +pkg syscall (netbsd-arm64), const RTV_RPIPE = 8 +pkg syscall (netbsd-arm64), const RTV_RPIPE ideal-int +pkg syscall (netbsd-arm64), const RTV_RTT = 64 +pkg syscall (netbsd-arm64), const RTV_RTT ideal-int +pkg syscall (netbsd-arm64), const RTV_RTTVAR = 128 +pkg syscall (netbsd-arm64), const RTV_RTTVAR ideal-int +pkg syscall (netbsd-arm64), const RTV_SPIPE = 16 +pkg syscall (netbsd-arm64), const RTV_SPIPE ideal-int +pkg syscall (netbsd-arm64), const RTV_SSTHRESH = 32 +pkg syscall (netbsd-arm64), const RTV_SSTHRESH ideal-int +pkg syscall (netbsd-arm64), const RUSAGE_CHILDREN = -1 +pkg syscall (netbsd-arm64), const RUSAGE_CHILDREN ideal-int +pkg syscall (netbsd-arm64), const RUSAGE_SELF = 0 +pkg syscall (netbsd-arm64), const RUSAGE_SELF ideal-int +pkg syscall (netbsd-arm64), const S_ARCH1 = 65536 +pkg syscall (netbsd-arm64), const S_ARCH1 ideal-int +pkg syscall (netbsd-arm64), const S_ARCH2 = 131072 +pkg syscall (netbsd-arm64), const S_ARCH2 ideal-int +pkg syscall (netbsd-arm64), const S_BLKSIZE = 512 +pkg syscall (netbsd-arm64), const S_BLKSIZE ideal-int +pkg syscall (netbsd-arm64), const SCM_CREDS = 4 +pkg syscall (netbsd-arm64), const SCM_CREDS ideal-int +pkg syscall (netbsd-arm64), const SCM_RIGHTS = 1 +pkg syscall (netbsd-arm64), const SCM_RIGHTS ideal-int +pkg syscall (netbsd-arm64), const SCM_TIMESTAMP = 8 +pkg syscall (netbsd-arm64), const SCM_TIMESTAMP ideal-int +pkg syscall (netbsd-arm64), const S_IEXEC = 64 +pkg syscall (netbsd-arm64), const S_IEXEC ideal-int +pkg syscall (netbsd-arm64), const S_IFMT = 61440 +pkg syscall (netbsd-arm64), const S_IFWHT = 57344 +pkg syscall (netbsd-arm64), const S_IFWHT ideal-int +pkg syscall (netbsd-arm64), const SIGBUS = 10 +pkg syscall (netbsd-arm64), const SIGCHLD = 20 +pkg syscall (netbsd-arm64), const SIGCHLD Signal +pkg syscall (netbsd-arm64), const SIGCONT = 19 +pkg syscall (netbsd-arm64), const SIGCONT Signal +pkg syscall (netbsd-arm64), const SIGEMT = 7 +pkg syscall (netbsd-arm64), const SIGEMT Signal +pkg syscall (netbsd-arm64), const SIGINFO = 29 +pkg syscall (netbsd-arm64), const SIGINFO Signal +pkg syscall (netbsd-arm64), const SIGIO = 23 +pkg syscall (netbsd-arm64), const SIGIO Signal +pkg syscall (netbsd-arm64), const SIGIOT = 6 +pkg syscall (netbsd-arm64), const SIGIOT Signal +pkg syscall (netbsd-arm64), const SIGPROF = 27 +pkg syscall (netbsd-arm64), const SIGPROF Signal +pkg syscall (netbsd-arm64), const SIGPWR = 32 +pkg syscall (netbsd-arm64), const SIGPWR Signal +pkg syscall (netbsd-arm64), const SIGSTOP = 17 +pkg syscall (netbsd-arm64), const SIGSTOP Signal +pkg syscall (netbsd-arm64), const SIGSYS = 12 +pkg syscall (netbsd-arm64), const SIGSYS Signal +pkg syscall (netbsd-arm64), const SIGTSTP = 18 +pkg syscall (netbsd-arm64), const SIGTSTP Signal +pkg syscall (netbsd-arm64), const SIGTTIN = 21 +pkg syscall (netbsd-arm64), const SIGTTIN Signal +pkg syscall (netbsd-arm64), const SIGTTOU = 22 +pkg syscall (netbsd-arm64), const SIGTTOU Signal +pkg syscall (netbsd-arm64), const SIGURG = 16 +pkg syscall (netbsd-arm64), const SIGURG Signal +pkg syscall (netbsd-arm64), const SIGUSR1 = 30 +pkg syscall (netbsd-arm64), const SIGUSR1 Signal +pkg syscall (netbsd-arm64), const SIGUSR2 = 31 +pkg syscall (netbsd-arm64), const SIGUSR2 Signal +pkg syscall (netbsd-arm64), const SIGVTALRM = 26 +pkg syscall (netbsd-arm64), const SIGVTALRM Signal +pkg syscall (netbsd-arm64), const SIGWINCH = 28 +pkg syscall (netbsd-arm64), const SIGWINCH Signal +pkg syscall (netbsd-arm64), const SIGXCPU = 24 +pkg syscall (netbsd-arm64), const SIGXCPU Signal +pkg syscall (netbsd-arm64), const SIGXFSZ = 25 +pkg syscall (netbsd-arm64), const SIGXFSZ Signal +pkg syscall (netbsd-arm64), const SIOCADDMULTI = 2156947761 +pkg syscall (netbsd-arm64), const SIOCADDMULTI ideal-int +pkg syscall (netbsd-arm64), const SIOCADDRT = 2151182858 +pkg syscall (netbsd-arm64), const SIOCADDRT ideal-int +pkg syscall (netbsd-arm64), const SIOCAIFADDR = 2151704858 +pkg syscall (netbsd-arm64), const SIOCAIFADDR ideal-int +pkg syscall (netbsd-arm64), const SIOCALIFADDR = 2165860636 +pkg syscall (netbsd-arm64), const SIOCALIFADDR ideal-int +pkg syscall (netbsd-arm64), const SIOCATMARK = 1074033415 +pkg syscall (netbsd-arm64), const SIOCATMARK ideal-int +pkg syscall (netbsd-arm64), const SIOCDELMULTI = 2156947762 +pkg syscall (netbsd-arm64), const SIOCDELMULTI ideal-int +pkg syscall (netbsd-arm64), const SIOCDELRT = 2151182859 +pkg syscall (netbsd-arm64), const SIOCDELRT ideal-int +pkg syscall (netbsd-arm64), const SIOCDIFADDR = 2156947737 +pkg syscall (netbsd-arm64), const SIOCDIFADDR ideal-int +pkg syscall (netbsd-arm64), const SIOCDIFPHYADDR = 2156947785 +pkg syscall (netbsd-arm64), const SIOCDIFPHYADDR ideal-int +pkg syscall (netbsd-arm64), const SIOCDLIFADDR = 2165860638 +pkg syscall (netbsd-arm64), const SIOCDLIFADDR ideal-int +pkg syscall (netbsd-arm64), const SIOCGDRVSPEC = 3223873915 +pkg syscall (netbsd-arm64), const SIOCGDRVSPEC ideal-int +pkg syscall (netbsd-arm64), const SIOCGETPFSYNC = 3230689784 +pkg syscall (netbsd-arm64), const SIOCGETPFSYNC ideal-int +pkg syscall (netbsd-arm64), const SIOCGETSGCNT = 3223352628 +pkg syscall (netbsd-arm64), const SIOCGETSGCNT ideal-int +pkg syscall (netbsd-arm64), const SIOCGETVIFCNT = 3223876915 +pkg syscall (netbsd-arm64), const SIOCGETVIFCNT ideal-int +pkg syscall (netbsd-arm64), const SIOCGHIWAT = 1074033409 +pkg syscall (netbsd-arm64), const SIOCGHIWAT ideal-int +pkg syscall (netbsd-arm64), const SIOCGIFADDR = 3230689569 +pkg syscall (netbsd-arm64), const SIOCGIFADDR ideal-int +pkg syscall (netbsd-arm64), const SIOCGIFADDRPREF = 3231213856 +pkg syscall (netbsd-arm64), const SIOCGIFADDRPREF ideal-int +pkg syscall (netbsd-arm64), const SIOCGIFALIAS = 3225446683 +pkg syscall (netbsd-arm64), const SIOCGIFALIAS ideal-int +pkg syscall (netbsd-arm64), const SIOCGIFBRDADDR = 3230689571 +pkg syscall (netbsd-arm64), const SIOCGIFBRDADDR ideal-int +pkg syscall (netbsd-arm64), const SIOCGIFCAP = 3223349622 +pkg syscall (netbsd-arm64), const SIOCGIFCAP ideal-int +pkg syscall (netbsd-arm64), const SIOCGIFCONF = 3222300966 +pkg syscall (netbsd-arm64), const SIOCGIFCONF ideal-int +pkg syscall (netbsd-arm64), const SIOCGIFDATA = 3231213957 +pkg syscall (netbsd-arm64), const SIOCGIFDATA ideal-int +pkg syscall (netbsd-arm64), const SIOCGIFDLT = 3230689655 +pkg syscall (netbsd-arm64), const SIOCGIFDLT ideal-int +pkg syscall (netbsd-arm64), const SIOCGIFDSTADDR = 3230689570 +pkg syscall (netbsd-arm64), const SIOCGIFDSTADDR ideal-int +pkg syscall (netbsd-arm64), const SIOCGIFFLAGS = 3230689553 +pkg syscall (netbsd-arm64), const SIOCGIFFLAGS ideal-int +pkg syscall (netbsd-arm64), const SIOCGIFGENERIC = 3230689594 +pkg syscall (netbsd-arm64), const SIOCGIFGENERIC ideal-int +pkg syscall (netbsd-arm64), const SIOCGIFMEDIA = 3224398134 +pkg syscall (netbsd-arm64), const SIOCGIFMEDIA ideal-int +pkg syscall (netbsd-arm64), const SIOCGIFMETRIC = 3230689559 +pkg syscall (netbsd-arm64), const SIOCGIFMETRIC ideal-int +pkg syscall (netbsd-arm64), const SIOCGIFMTU = 3230689662 +pkg syscall (netbsd-arm64), const SIOCGIFMTU ideal-int +pkg syscall (netbsd-arm64), const SIOCGIFNETMASK = 3230689573 +pkg syscall (netbsd-arm64), const SIOCGIFNETMASK ideal-int +pkg syscall (netbsd-arm64), const SIOCGIFPDSTADDR = 3230689608 +pkg syscall (netbsd-arm64), const SIOCGIFPDSTADDR ideal-int +pkg syscall (netbsd-arm64), const SIOCGIFPSRCADDR = 3230689607 +pkg syscall (netbsd-arm64), const SIOCGIFPSRCADDR ideal-int +pkg syscall (netbsd-arm64), const SIOCGLIFADDR = 3239602461 +pkg syscall (netbsd-arm64), const SIOCGLIFADDR ideal-int +pkg syscall (netbsd-arm64), const SIOCGLIFPHYADDR = 3239602507 +pkg syscall (netbsd-arm64), const SIOCGLIFPHYADDR ideal-int +pkg syscall (netbsd-arm64), const SIOCGLINKSTR = 3223873927 +pkg syscall (netbsd-arm64), const SIOCGLINKSTR ideal-int +pkg syscall (netbsd-arm64), const SIOCGLOWAT = 1074033411 +pkg syscall (netbsd-arm64), const SIOCGLOWAT ideal-int +pkg syscall (netbsd-arm64), const SIOCGPGRP = 1074033417 +pkg syscall (netbsd-arm64), const SIOCGPGRP ideal-int +pkg syscall (netbsd-arm64), const SIOCGVH = 3230689667 +pkg syscall (netbsd-arm64), const SIOCGVH ideal-int +pkg syscall (netbsd-arm64), const SIOCIFCREATE = 2156947834 +pkg syscall (netbsd-arm64), const SIOCIFCREATE ideal-int +pkg syscall (netbsd-arm64), const SIOCIFDESTROY = 2156947833 +pkg syscall (netbsd-arm64), const SIOCIFDESTROY ideal-int +pkg syscall (netbsd-arm64), const SIOCIFGCLONERS = 3222301048 +pkg syscall (netbsd-arm64), const SIOCIFGCLONERS ideal-int +pkg syscall (netbsd-arm64), const SIOCINITIFADDR = 3228592516 +pkg syscall (netbsd-arm64), const SIOCINITIFADDR ideal-int +pkg syscall (netbsd-arm64), const SIOCSDRVSPEC = 2150132091 +pkg syscall (netbsd-arm64), const SIOCSDRVSPEC ideal-int +pkg syscall (netbsd-arm64), const SIOCSETPFSYNC = 2156947959 +pkg syscall (netbsd-arm64), const SIOCSETPFSYNC ideal-int +pkg syscall (netbsd-arm64), const SIOCSHIWAT = 2147775232 +pkg syscall (netbsd-arm64), const SIOCSHIWAT ideal-int +pkg syscall (netbsd-arm64), const SIOCSIFADDR = 2156947724 +pkg syscall (netbsd-arm64), const SIOCSIFADDR ideal-int +pkg syscall (netbsd-arm64), const SIOCSIFADDRPREF = 2157472031 +pkg syscall (netbsd-arm64), const SIOCSIFADDRPREF ideal-int +pkg syscall (netbsd-arm64), const SIOCSIFBRDADDR = 2156947731 +pkg syscall (netbsd-arm64), const SIOCSIFBRDADDR ideal-int +pkg syscall (netbsd-arm64), const SIOCSIFCAP = 2149607797 +pkg syscall (netbsd-arm64), const SIOCSIFCAP ideal-int +pkg syscall (netbsd-arm64), const SIOCSIFDSTADDR = 2156947726 +pkg syscall (netbsd-arm64), const SIOCSIFDSTADDR ideal-int +pkg syscall (netbsd-arm64), const SIOCSIFFLAGS = 2156947728 +pkg syscall (netbsd-arm64), const SIOCSIFFLAGS ideal-int +pkg syscall (netbsd-arm64), const SIOCSIFGENERIC = 2156947769 +pkg syscall (netbsd-arm64), const SIOCSIFGENERIC ideal-int +pkg syscall (netbsd-arm64), const SIOCSIFMEDIA = 3230689589 +pkg syscall (netbsd-arm64), const SIOCSIFMEDIA ideal-int +pkg syscall (netbsd-arm64), const SIOCSIFMETRIC = 2156947736 +pkg syscall (netbsd-arm64), const SIOCSIFMETRIC ideal-int +pkg syscall (netbsd-arm64), const SIOCSIFMTU = 2156947839 +pkg syscall (netbsd-arm64), const SIOCSIFMTU ideal-int +pkg syscall (netbsd-arm64), const SIOCSIFNETMASK = 2156947734 +pkg syscall (netbsd-arm64), const SIOCSIFNETMASK ideal-int +pkg syscall (netbsd-arm64), const SIOCSIFPHYADDR = 2151704902 +pkg syscall (netbsd-arm64), const SIOCSIFPHYADDR ideal-int +pkg syscall (netbsd-arm64), const SIOCSLIFPHYADDR = 2165860682 +pkg syscall (netbsd-arm64), const SIOCSLIFPHYADDR ideal-int +pkg syscall (netbsd-arm64), const SIOCSLINKSTR = 2150132104 +pkg syscall (netbsd-arm64), const SIOCSLINKSTR ideal-int +pkg syscall (netbsd-arm64), const SIOCSLOWAT = 2147775234 +pkg syscall (netbsd-arm64), const SIOCSLOWAT ideal-int +pkg syscall (netbsd-arm64), const SIOCSPGRP = 2147775240 +pkg syscall (netbsd-arm64), const SIOCSPGRP ideal-int +pkg syscall (netbsd-arm64), const SIOCSVH = 3230689666 +pkg syscall (netbsd-arm64), const SIOCSVH ideal-int +pkg syscall (netbsd-arm64), const SIOCZIFDATA = 3231213958 +pkg syscall (netbsd-arm64), const SIOCZIFDATA ideal-int +pkg syscall (netbsd-arm64), const S_IREAD = 256 +pkg syscall (netbsd-arm64), const S_IREAD ideal-int +pkg syscall (netbsd-arm64), const S_IRGRP = 32 +pkg syscall (netbsd-arm64), const S_IRGRP ideal-int +pkg syscall (netbsd-arm64), const S_IROTH = 4 +pkg syscall (netbsd-arm64), const S_IROTH ideal-int +pkg syscall (netbsd-arm64), const S_IRWXG = 56 +pkg syscall (netbsd-arm64), const S_IRWXG ideal-int +pkg syscall (netbsd-arm64), const S_IRWXO = 7 +pkg syscall (netbsd-arm64), const S_IRWXO ideal-int +pkg syscall (netbsd-arm64), const S_IRWXU = 448 +pkg syscall (netbsd-arm64), const S_IRWXU ideal-int +pkg syscall (netbsd-arm64), const S_ISTXT = 512 +pkg syscall (netbsd-arm64), const S_ISTXT ideal-int +pkg syscall (netbsd-arm64), const S_IWGRP = 16 +pkg syscall (netbsd-arm64), const S_IWGRP ideal-int +pkg syscall (netbsd-arm64), const S_IWOTH = 2 +pkg syscall (netbsd-arm64), const S_IWOTH ideal-int +pkg syscall (netbsd-arm64), const S_IWRITE = 128 +pkg syscall (netbsd-arm64), const S_IWRITE ideal-int +pkg syscall (netbsd-arm64), const S_IXGRP = 8 +pkg syscall (netbsd-arm64), const S_IXGRP ideal-int +pkg syscall (netbsd-arm64), const S_IXOTH = 1 +pkg syscall (netbsd-arm64), const S_IXOTH ideal-int +pkg syscall (netbsd-arm64), const SizeofBpfHdr = 32 +pkg syscall (netbsd-arm64), const SizeofBpfHdr ideal-int +pkg syscall (netbsd-arm64), const SizeofBpfInsn = 8 +pkg syscall (netbsd-arm64), const SizeofBpfInsn ideal-int +pkg syscall (netbsd-arm64), const SizeofBpfProgram = 16 +pkg syscall (netbsd-arm64), const SizeofBpfProgram ideal-int +pkg syscall (netbsd-arm64), const SizeofBpfStat = 128 +pkg syscall (netbsd-arm64), const SizeofBpfStat ideal-int +pkg syscall (netbsd-arm64), const SizeofBpfVersion = 4 +pkg syscall (netbsd-arm64), const SizeofBpfVersion ideal-int +pkg syscall (netbsd-arm64), const SizeofCmsghdr = 12 +pkg syscall (netbsd-arm64), const SizeofCmsghdr ideal-int +pkg syscall (netbsd-arm64), const SizeofICMPv6Filter = 32 +pkg syscall (netbsd-arm64), const SizeofICMPv6Filter ideal-int +pkg syscall (netbsd-arm64), const SizeofIfaMsghdr = 24 +pkg syscall (netbsd-arm64), const SizeofIfaMsghdr ideal-int +pkg syscall (netbsd-arm64), const SizeofIfAnnounceMsghdr = 24 +pkg syscall (netbsd-arm64), const SizeofIfAnnounceMsghdr ideal-int +pkg syscall (netbsd-arm64), const SizeofIfData = 136 +pkg syscall (netbsd-arm64), const SizeofIfData ideal-int +pkg syscall (netbsd-arm64), const SizeofIfMsghdr = 152 +pkg syscall (netbsd-arm64), const SizeofIfMsghdr ideal-int +pkg syscall (netbsd-arm64), const SizeofInet6Pktinfo = 20 +pkg syscall (netbsd-arm64), const SizeofInet6Pktinfo ideal-int +pkg syscall (netbsd-arm64), const SizeofIPMreq = 8 +pkg syscall (netbsd-arm64), const SizeofIPMreq ideal-int +pkg syscall (netbsd-arm64), const SizeofIPv6Mreq = 20 +pkg syscall (netbsd-arm64), const SizeofIPv6Mreq ideal-int +pkg syscall (netbsd-arm64), const SizeofIPv6MTUInfo = 32 +pkg syscall (netbsd-arm64), const SizeofIPv6MTUInfo ideal-int +pkg syscall (netbsd-arm64), const SizeofLinger = 8 +pkg syscall (netbsd-arm64), const SizeofLinger ideal-int +pkg syscall (netbsd-arm64), const SizeofMsghdr = 48 +pkg syscall (netbsd-arm64), const SizeofMsghdr ideal-int +pkg syscall (netbsd-arm64), const SizeofRtMetrics = 80 +pkg syscall (netbsd-arm64), const SizeofRtMetrics ideal-int +pkg syscall (netbsd-arm64), const SizeofRtMsghdr = 120 +pkg syscall (netbsd-arm64), const SizeofRtMsghdr ideal-int +pkg syscall (netbsd-arm64), const SizeofSockaddrAny = 108 +pkg syscall (netbsd-arm64), const SizeofSockaddrAny ideal-int +pkg syscall (netbsd-arm64), const SizeofSockaddrDatalink = 20 +pkg syscall (netbsd-arm64), const SizeofSockaddrDatalink ideal-int +pkg syscall (netbsd-arm64), const SizeofSockaddrInet4 = 16 +pkg syscall (netbsd-arm64), const SizeofSockaddrInet4 ideal-int +pkg syscall (netbsd-arm64), const SizeofSockaddrInet6 = 28 +pkg syscall (netbsd-arm64), const SizeofSockaddrInet6 ideal-int +pkg syscall (netbsd-arm64), const SizeofSockaddrUnix = 106 +pkg syscall (netbsd-arm64), const SizeofSockaddrUnix ideal-int +pkg syscall (netbsd-arm64), const S_LOGIN_SET = 1 +pkg syscall (netbsd-arm64), const S_LOGIN_SET ideal-int +pkg syscall (netbsd-arm64), const SO_ACCEPTCONN = 2 +pkg syscall (netbsd-arm64), const SO_ACCEPTCONN ideal-int +pkg syscall (netbsd-arm64), const SO_ACCEPTFILTER = 4096 +pkg syscall (netbsd-arm64), const SO_ACCEPTFILTER ideal-int +pkg syscall (netbsd-arm64), const SO_BROADCAST = 32 +pkg syscall (netbsd-arm64), const SOCK_CLOEXEC = 268435456 +pkg syscall (netbsd-arm64), const SOCK_CLOEXEC ideal-int +pkg syscall (netbsd-arm64), const SOCK_FLAGS_MASK = 4026531840 +pkg syscall (netbsd-arm64), const SOCK_FLAGS_MASK ideal-int +pkg syscall (netbsd-arm64), const SOCK_NONBLOCK = 536870912 +pkg syscall (netbsd-arm64), const SOCK_NONBLOCK ideal-int +pkg syscall (netbsd-arm64), const SOCK_NOSIGPIPE = 1073741824 +pkg syscall (netbsd-arm64), const SOCK_NOSIGPIPE ideal-int +pkg syscall (netbsd-arm64), const SOCK_RDM = 4 +pkg syscall (netbsd-arm64), const SOCK_RDM ideal-int +pkg syscall (netbsd-arm64), const SO_DEBUG = 1 +pkg syscall (netbsd-arm64), const SO_DEBUG ideal-int +pkg syscall (netbsd-arm64), const SO_DONTROUTE = 16 +pkg syscall (netbsd-arm64), const SO_ERROR = 4103 +pkg syscall (netbsd-arm64), const SO_ERROR ideal-int +pkg syscall (netbsd-arm64), const SO_KEEPALIVE = 8 +pkg syscall (netbsd-arm64), const SO_LINGER = 128 +pkg syscall (netbsd-arm64), const SOL_SOCKET = 65535 +pkg syscall (netbsd-arm64), const SOMAXCONN = 128 +pkg syscall (netbsd-arm64), const SO_NOHEADER = 4106 +pkg syscall (netbsd-arm64), const SO_NOHEADER ideal-int +pkg syscall (netbsd-arm64), const SO_NOSIGPIPE = 2048 +pkg syscall (netbsd-arm64), const SO_NOSIGPIPE ideal-int +pkg syscall (netbsd-arm64), const SO_OOBINLINE = 256 +pkg syscall (netbsd-arm64), const SO_OOBINLINE ideal-int +pkg syscall (netbsd-arm64), const SO_OVERFLOWED = 4105 +pkg syscall (netbsd-arm64), const SO_OVERFLOWED ideal-int +pkg syscall (netbsd-arm64), const SO_RCVBUF = 4098 +pkg syscall (netbsd-arm64), const SO_RCVLOWAT = 4100 +pkg syscall (netbsd-arm64), const SO_RCVLOWAT ideal-int +pkg syscall (netbsd-arm64), const SO_RCVTIMEO = 4108 +pkg syscall (netbsd-arm64), const SO_RCVTIMEO ideal-int +pkg syscall (netbsd-arm64), const SO_REUSEADDR = 4 +pkg syscall (netbsd-arm64), const SO_REUSEPORT = 512 +pkg syscall (netbsd-arm64), const SO_REUSEPORT ideal-int +pkg syscall (netbsd-arm64), const SO_SNDBUF = 4097 +pkg syscall (netbsd-arm64), const SO_SNDLOWAT = 4099 +pkg syscall (netbsd-arm64), const SO_SNDLOWAT ideal-int +pkg syscall (netbsd-arm64), const SO_SNDTIMEO = 4107 +pkg syscall (netbsd-arm64), const SO_SNDTIMEO ideal-int +pkg syscall (netbsd-arm64), const SO_TIMESTAMP = 8192 +pkg syscall (netbsd-arm64), const SO_TIMESTAMP ideal-int +pkg syscall (netbsd-arm64), const SO_TYPE = 4104 +pkg syscall (netbsd-arm64), const SO_TYPE ideal-int +pkg syscall (netbsd-arm64), const SO_USELOOPBACK = 64 +pkg syscall (netbsd-arm64), const SO_USELOOPBACK ideal-int +pkg syscall (netbsd-arm64), const SYS_ACCEPT = 30 +pkg syscall (netbsd-arm64), const SYS_ACCEPT ideal-int +pkg syscall (netbsd-arm64), const SYS_ACCESS = 33 +pkg syscall (netbsd-arm64), const SYS_ACCESS ideal-int +pkg syscall (netbsd-arm64), const SYS_ACCT = 51 +pkg syscall (netbsd-arm64), const SYS_ACCT ideal-int +pkg syscall (netbsd-arm64), const SYS_ADJTIME = 421 +pkg syscall (netbsd-arm64), const SYS_ADJTIME ideal-int +pkg syscall (netbsd-arm64), const SYS_BIND = 104 +pkg syscall (netbsd-arm64), const SYS_BIND ideal-int +pkg syscall (netbsd-arm64), const SYS_BREAK = 17 +pkg syscall (netbsd-arm64), const SYS_BREAK ideal-int +pkg syscall (netbsd-arm64), const SYS_CHDIR = 12 +pkg syscall (netbsd-arm64), const SYS_CHDIR ideal-int +pkg syscall (netbsd-arm64), const SYS_CHFLAGS = 34 +pkg syscall (netbsd-arm64), const SYS_CHFLAGS ideal-int +pkg syscall (netbsd-arm64), const SYS_CHMOD = 15 +pkg syscall (netbsd-arm64), const SYS_CHMOD ideal-int +pkg syscall (netbsd-arm64), const SYS_CHOWN = 16 +pkg syscall (netbsd-arm64), const SYS_CHOWN ideal-int +pkg syscall (netbsd-arm64), const SYS_CHROOT = 61 +pkg syscall (netbsd-arm64), const SYS_CHROOT ideal-int +pkg syscall (netbsd-arm64), const SYS_CLOCK_GETRES = 429 +pkg syscall (netbsd-arm64), const SYS_CLOCK_GETRES ideal-int +pkg syscall (netbsd-arm64), const SYS_CLOCK_GETTIME = 427 +pkg syscall (netbsd-arm64), const SYS_CLOCK_GETTIME ideal-int +pkg syscall (netbsd-arm64), const SYS_CLOCK_SETTIME = 428 +pkg syscall (netbsd-arm64), const SYS_CLOCK_SETTIME ideal-int +pkg syscall (netbsd-arm64), const SYS___CLONE = 287 +pkg syscall (netbsd-arm64), const SYS___CLONE ideal-int +pkg syscall (netbsd-arm64), const SYS_CLOSE = 6 +pkg syscall (netbsd-arm64), const SYS_CLOSE ideal-int +pkg syscall (netbsd-arm64), const SYS_CONNECT = 98 +pkg syscall (netbsd-arm64), const SYS_CONNECT ideal-int +pkg syscall (netbsd-arm64), const SYSCTL_VERS_0 = 0 +pkg syscall (netbsd-arm64), const SYSCTL_VERS_0 ideal-int +pkg syscall (netbsd-arm64), const SYSCTL_VERS_1 = 16777216 +pkg syscall (netbsd-arm64), const SYSCTL_VERS_1 ideal-int +pkg syscall (netbsd-arm64), const SYSCTL_VERSION = 16777216 +pkg syscall (netbsd-arm64), const SYSCTL_VERSION ideal-int +pkg syscall (netbsd-arm64), const SYSCTL_VERS_MASK = 4278190080 +pkg syscall (netbsd-arm64), const SYSCTL_VERS_MASK ideal-int +pkg syscall (netbsd-arm64), const SYS_DUP2 = 90 +pkg syscall (netbsd-arm64), const SYS_DUP2 ideal-int +pkg syscall (netbsd-arm64), const SYS_DUP3 = 454 +pkg syscall (netbsd-arm64), const SYS_DUP3 ideal-int +pkg syscall (netbsd-arm64), const SYS_DUP = 41 +pkg syscall (netbsd-arm64), const SYS_DUP ideal-int +pkg syscall (netbsd-arm64), const SYS_EXECVE = 59 +pkg syscall (netbsd-arm64), const SYS_EXECVE ideal-int +pkg syscall (netbsd-arm64), const SYS_EXIT = 1 +pkg syscall (netbsd-arm64), const SYS_EXIT ideal-int +pkg syscall (netbsd-arm64), const SYS_EXTATTRCTL = 360 +pkg syscall (netbsd-arm64), const SYS_EXTATTRCTL ideal-int +pkg syscall (netbsd-arm64), const SYS_EXTATTR_DELETE_FD = 366 +pkg syscall (netbsd-arm64), const SYS_EXTATTR_DELETE_FD ideal-int +pkg syscall (netbsd-arm64), const SYS_EXTATTR_DELETE_FILE = 363 +pkg syscall (netbsd-arm64), const SYS_EXTATTR_DELETE_FILE ideal-int +pkg syscall (netbsd-arm64), const SYS_EXTATTR_DELETE_LINK = 369 +pkg syscall (netbsd-arm64), const SYS_EXTATTR_DELETE_LINK ideal-int +pkg syscall (netbsd-arm64), const SYS_EXTATTR_GET_FD = 365 +pkg syscall (netbsd-arm64), const SYS_EXTATTR_GET_FD ideal-int +pkg syscall (netbsd-arm64), const SYS_EXTATTR_GET_FILE = 362 +pkg syscall (netbsd-arm64), const SYS_EXTATTR_GET_FILE ideal-int +pkg syscall (netbsd-arm64), const SYS_EXTATTR_GET_LINK = 368 +pkg syscall (netbsd-arm64), const SYS_EXTATTR_GET_LINK ideal-int +pkg syscall (netbsd-arm64), const SYS_EXTATTR_LIST_FD = 370 +pkg syscall (netbsd-arm64), const SYS_EXTATTR_LIST_FD ideal-int +pkg syscall (netbsd-arm64), const SYS_EXTATTR_LIST_FILE = 371 +pkg syscall (netbsd-arm64), const SYS_EXTATTR_LIST_FILE ideal-int +pkg syscall (netbsd-arm64), const SYS_EXTATTR_LIST_LINK = 372 +pkg syscall (netbsd-arm64), const SYS_EXTATTR_LIST_LINK ideal-int +pkg syscall (netbsd-arm64), const SYS_EXTATTR_SET_FD = 364 +pkg syscall (netbsd-arm64), const SYS_EXTATTR_SET_FD ideal-int +pkg syscall (netbsd-arm64), const SYS_EXTATTR_SET_FILE = 361 +pkg syscall (netbsd-arm64), const SYS_EXTATTR_SET_FILE ideal-int +pkg syscall (netbsd-arm64), const SYS_EXTATTR_SET_LINK = 367 +pkg syscall (netbsd-arm64), const SYS_EXTATTR_SET_LINK ideal-int +pkg syscall (netbsd-arm64), const SYS_FACCESSAT = 462 +pkg syscall (netbsd-arm64), const SYS_FACCESSAT ideal-int +pkg syscall (netbsd-arm64), const SYS_FCHDIR = 13 +pkg syscall (netbsd-arm64), const SYS_FCHDIR ideal-int +pkg syscall (netbsd-arm64), const SYS_FCHFLAGS = 35 +pkg syscall (netbsd-arm64), const SYS_FCHFLAGS ideal-int +pkg syscall (netbsd-arm64), const SYS_FCHMOD = 124 +pkg syscall (netbsd-arm64), const SYS_FCHMODAT = 463 +pkg syscall (netbsd-arm64), const SYS_FCHMODAT ideal-int +pkg syscall (netbsd-arm64), const SYS_FCHMOD ideal-int +pkg syscall (netbsd-arm64), const SYS_FCHOWN = 123 +pkg syscall (netbsd-arm64), const SYS_FCHOWNAT = 464 +pkg syscall (netbsd-arm64), const SYS_FCHOWNAT ideal-int +pkg syscall (netbsd-arm64), const SYS_FCHOWN ideal-int +pkg syscall (netbsd-arm64), const SYS_FCHROOT = 297 +pkg syscall (netbsd-arm64), const SYS_FCHROOT ideal-int +pkg syscall (netbsd-arm64), const SYS_FCNTL = 92 +pkg syscall (netbsd-arm64), const SYS_FCNTL ideal-int +pkg syscall (netbsd-arm64), const SYS_FDATASYNC = 241 +pkg syscall (netbsd-arm64), const SYS_FDATASYNC ideal-int +pkg syscall (netbsd-arm64), const SYS_FEXECVE = 465 +pkg syscall (netbsd-arm64), const SYS_FEXECVE ideal-int +pkg syscall (netbsd-arm64), const SYS_FGETXATTR = 380 +pkg syscall (netbsd-arm64), const SYS_FGETXATTR ideal-int +pkg syscall (netbsd-arm64), const SYS_FHSTAT = 451 +pkg syscall (netbsd-arm64), const SYS_FHSTAT ideal-int +pkg syscall (netbsd-arm64), const SYS_FKTRACE = 288 +pkg syscall (netbsd-arm64), const SYS_FKTRACE ideal-int +pkg syscall (netbsd-arm64), const SYS_FLISTXATTR = 383 +pkg syscall (netbsd-arm64), const SYS_FLISTXATTR ideal-int +pkg syscall (netbsd-arm64), const SYS_FLOCK = 131 +pkg syscall (netbsd-arm64), const SYS_FLOCK ideal-int +pkg syscall (netbsd-arm64), const SYS_FORK = 2 +pkg syscall (netbsd-arm64), const SYS_FORK ideal-int +pkg syscall (netbsd-arm64), const SYS_FPATHCONF = 192 +pkg syscall (netbsd-arm64), const SYS_FPATHCONF ideal-int +pkg syscall (netbsd-arm64), const SYS_FREMOVEXATTR = 386 +pkg syscall (netbsd-arm64), const SYS_FREMOVEXATTR ideal-int +pkg syscall (netbsd-arm64), const SYS_FSETXATTR = 377 +pkg syscall (netbsd-arm64), const SYS_FSETXATTR ideal-int +pkg syscall (netbsd-arm64), const SYS_FSTAT = 440 +pkg syscall (netbsd-arm64), const SYS_FSTATAT = 466 +pkg syscall (netbsd-arm64), const SYS_FSTATAT ideal-int +pkg syscall (netbsd-arm64), const SYS_FSTAT ideal-int +pkg syscall (netbsd-arm64), const SYS_FSTATVFS1 = 358 +pkg syscall (netbsd-arm64), const SYS_FSTATVFS1 ideal-int +pkg syscall (netbsd-arm64), const SYS_FSYNC = 95 +pkg syscall (netbsd-arm64), const SYS_FSYNC ideal-int +pkg syscall (netbsd-arm64), const SYS_FSYNC_RANGE = 354 +pkg syscall (netbsd-arm64), const SYS_FSYNC_RANGE ideal-int +pkg syscall (netbsd-arm64), const SYS_FTRUNCATE = 201 +pkg syscall (netbsd-arm64), const SYS_FTRUNCATE ideal-int +pkg syscall (netbsd-arm64), const SYS_FUTIMENS = 472 +pkg syscall (netbsd-arm64), const SYS_FUTIMENS ideal-int +pkg syscall (netbsd-arm64), const SYS_FUTIMES = 423 +pkg syscall (netbsd-arm64), const SYS_FUTIMES ideal-int +pkg syscall (netbsd-arm64), const SYS_GETCONTEXT = 307 +pkg syscall (netbsd-arm64), const SYS_GETCONTEXT ideal-int +pkg syscall (netbsd-arm64), const SYS___GETCWD = 296 +pkg syscall (netbsd-arm64), const SYS___GETCWD ideal-int +pkg syscall (netbsd-arm64), const SYS_GETDENTS = 390 +pkg syscall (netbsd-arm64), const SYS_GETDENTS ideal-int +pkg syscall (netbsd-arm64), const SYS_GETEGID = 43 +pkg syscall (netbsd-arm64), const SYS_GETEGID ideal-int +pkg syscall (netbsd-arm64), const SYS_GETEUID = 25 +pkg syscall (netbsd-arm64), const SYS_GETEUID ideal-int +pkg syscall (netbsd-arm64), const SYS_GETFH = 395 +pkg syscall (netbsd-arm64), const SYS_GETFH ideal-int +pkg syscall (netbsd-arm64), const SYS_GETGID = 47 +pkg syscall (netbsd-arm64), const SYS_GETGID ideal-int +pkg syscall (netbsd-arm64), const SYS_GETGROUPS = 79 +pkg syscall (netbsd-arm64), const SYS_GETGROUPS ideal-int +pkg syscall (netbsd-arm64), const SYS_GETITIMER = 426 +pkg syscall (netbsd-arm64), const SYS_GETITIMER ideal-int +pkg syscall (netbsd-arm64), const SYS___GETLOGIN = 49 +pkg syscall (netbsd-arm64), const SYS___GETLOGIN ideal-int +pkg syscall (netbsd-arm64), const SYS_GETPEERNAME = 31 +pkg syscall (netbsd-arm64), const SYS_GETPEERNAME ideal-int +pkg syscall (netbsd-arm64), const SYS_GETPGID = 207 +pkg syscall (netbsd-arm64), const SYS_GETPGID ideal-int +pkg syscall (netbsd-arm64), const SYS_GETPGRP = 81 +pkg syscall (netbsd-arm64), const SYS_GETPGRP ideal-int +pkg syscall (netbsd-arm64), const SYS_GETPID = 20 +pkg syscall (netbsd-arm64), const SYS_GETPID ideal-int +pkg syscall (netbsd-arm64), const SYS_GETPPID = 39 +pkg syscall (netbsd-arm64), const SYS_GETPPID ideal-int +pkg syscall (netbsd-arm64), const SYS_GETPRIORITY = 100 +pkg syscall (netbsd-arm64), const SYS_GETPRIORITY ideal-int +pkg syscall (netbsd-arm64), const SYS_GETRLIMIT = 194 +pkg syscall (netbsd-arm64), const SYS_GETRLIMIT ideal-int +pkg syscall (netbsd-arm64), const SYS_GETRUSAGE = 445 +pkg syscall (netbsd-arm64), const SYS_GETRUSAGE ideal-int +pkg syscall (netbsd-arm64), const SYS_GETSID = 286 +pkg syscall (netbsd-arm64), const SYS_GETSID ideal-int +pkg syscall (netbsd-arm64), const SYS_GETSOCKNAME = 32 +pkg syscall (netbsd-arm64), const SYS_GETSOCKNAME ideal-int +pkg syscall (netbsd-arm64), const SYS_GETSOCKOPT = 118 +pkg syscall (netbsd-arm64), const SYS_GETSOCKOPT ideal-int +pkg syscall (netbsd-arm64), const SYS_GETTIMEOFDAY = 418 +pkg syscall (netbsd-arm64), const SYS_GETTIMEOFDAY ideal-int +pkg syscall (netbsd-arm64), const SYS_GETUID = 24 +pkg syscall (netbsd-arm64), const SYS_GETUID ideal-int +pkg syscall (netbsd-arm64), const SYS_GETVFSSTAT = 356 +pkg syscall (netbsd-arm64), const SYS_GETVFSSTAT ideal-int +pkg syscall (netbsd-arm64), const SYS_GETXATTR = 378 +pkg syscall (netbsd-arm64), const SYS_GETXATTR ideal-int +pkg syscall (netbsd-arm64), const SYS_IOCTL = 54 +pkg syscall (netbsd-arm64), const SYS_IOCTL ideal-int +pkg syscall (netbsd-arm64), const SYS_ISSETUGID = 305 +pkg syscall (netbsd-arm64), const SYS_ISSETUGID ideal-int +pkg syscall (netbsd-arm64), const SYS_KEVENT = 435 +pkg syscall (netbsd-arm64), const SYS_KEVENT ideal-int +pkg syscall (netbsd-arm64), const SYS_KILL = 37 +pkg syscall (netbsd-arm64), const SYS_KILL ideal-int +pkg syscall (netbsd-arm64), const SYS_KQUEUE1 = 455 +pkg syscall (netbsd-arm64), const SYS_KQUEUE1 ideal-int +pkg syscall (netbsd-arm64), const SYS_KQUEUE = 344 +pkg syscall (netbsd-arm64), const SYS_KQUEUE ideal-int +pkg syscall (netbsd-arm64), const SYS_KTRACE = 45 +pkg syscall (netbsd-arm64), const SYS_KTRACE ideal-int +pkg syscall (netbsd-arm64), const SYS_LCHFLAGS = 304 +pkg syscall (netbsd-arm64), const SYS_LCHFLAGS ideal-int +pkg syscall (netbsd-arm64), const SYS_LCHMOD = 274 +pkg syscall (netbsd-arm64), const SYS_LCHMOD ideal-int +pkg syscall (netbsd-arm64), const SYS_LCHOWN = 275 +pkg syscall (netbsd-arm64), const SYS_LCHOWN ideal-int +pkg syscall (netbsd-arm64), const SYS_LGETXATTR = 379 +pkg syscall (netbsd-arm64), const SYS_LGETXATTR ideal-int +pkg syscall (netbsd-arm64), const SYS_LINK = 9 +pkg syscall (netbsd-arm64), const SYS_LINKAT = 457 +pkg syscall (netbsd-arm64), const SYS_LINKAT ideal-int +pkg syscall (netbsd-arm64), const SYS_LINK ideal-int +pkg syscall (netbsd-arm64), const SYS_LISTEN = 106 +pkg syscall (netbsd-arm64), const SYS_LISTEN ideal-int +pkg syscall (netbsd-arm64), const SYS_LISTXATTR = 381 +pkg syscall (netbsd-arm64), const SYS_LISTXATTR ideal-int +pkg syscall (netbsd-arm64), const SYS_LLISTXATTR = 382 +pkg syscall (netbsd-arm64), const SYS_LLISTXATTR ideal-int +pkg syscall (netbsd-arm64), const SYS_LREMOVEXATTR = 385 +pkg syscall (netbsd-arm64), const SYS_LREMOVEXATTR ideal-int +pkg syscall (netbsd-arm64), const SYS_LSEEK = 199 +pkg syscall (netbsd-arm64), const SYS_LSEEK ideal-int +pkg syscall (netbsd-arm64), const SYS_LSETXATTR = 376 +pkg syscall (netbsd-arm64), const SYS_LSETXATTR ideal-int +pkg syscall (netbsd-arm64), const SYS_LSTAT = 441 +pkg syscall (netbsd-arm64), const SYS_LSTAT ideal-int +pkg syscall (netbsd-arm64), const SYS_LUTIMES = 424 +pkg syscall (netbsd-arm64), const SYS_LUTIMES ideal-int +pkg syscall (netbsd-arm64), const SYS__LWP_CONTINUE = 314 +pkg syscall (netbsd-arm64), const SYS__LWP_CONTINUE ideal-int +pkg syscall (netbsd-arm64), const SYS__LWP_CREATE = 309 +pkg syscall (netbsd-arm64), const SYS__LWP_CREATE ideal-int +pkg syscall (netbsd-arm64), const SYS__LWP_CTL = 325 +pkg syscall (netbsd-arm64), const SYS__LWP_CTL ideal-int +pkg syscall (netbsd-arm64), const SYS__LWP_DETACH = 319 +pkg syscall (netbsd-arm64), const SYS__LWP_DETACH ideal-int +pkg syscall (netbsd-arm64), const SYS__LWP_EXIT = 310 +pkg syscall (netbsd-arm64), const SYS__LWP_EXIT ideal-int +pkg syscall (netbsd-arm64), const SYS__LWP_GETNAME = 324 +pkg syscall (netbsd-arm64), const SYS__LWP_GETNAME ideal-int +pkg syscall (netbsd-arm64), const SYS__LWP_GETPRIVATE = 316 +pkg syscall (netbsd-arm64), const SYS__LWP_GETPRIVATE ideal-int +pkg syscall (netbsd-arm64), const SYS__LWP_KILL = 318 +pkg syscall (netbsd-arm64), const SYS__LWP_KILL ideal-int +pkg syscall (netbsd-arm64), const SYS__LWP_PARK = 434 +pkg syscall (netbsd-arm64), const SYS__LWP_PARK ideal-int +pkg syscall (netbsd-arm64), const SYS__LWP_SELF = 311 +pkg syscall (netbsd-arm64), const SYS__LWP_SELF ideal-int +pkg syscall (netbsd-arm64), const SYS__LWP_SETNAME = 323 +pkg syscall (netbsd-arm64), const SYS__LWP_SETNAME ideal-int +pkg syscall (netbsd-arm64), const SYS__LWP_SETPRIVATE = 317 +pkg syscall (netbsd-arm64), const SYS__LWP_SETPRIVATE ideal-int +pkg syscall (netbsd-arm64), const SYS__LWP_SUSPEND = 313 +pkg syscall (netbsd-arm64), const SYS__LWP_SUSPEND ideal-int +pkg syscall (netbsd-arm64), const SYS__LWP_UNPARK = 321 +pkg syscall (netbsd-arm64), const SYS__LWP_UNPARK_ALL = 322 +pkg syscall (netbsd-arm64), const SYS__LWP_UNPARK_ALL ideal-int +pkg syscall (netbsd-arm64), const SYS__LWP_UNPARK ideal-int +pkg syscall (netbsd-arm64), const SYS__LWP_WAIT = 312 +pkg syscall (netbsd-arm64), const SYS__LWP_WAIT ideal-int +pkg syscall (netbsd-arm64), const SYS__LWP_WAKEUP = 315 +pkg syscall (netbsd-arm64), const SYS__LWP_WAKEUP ideal-int +pkg syscall (netbsd-arm64), const SYS_MADVISE = 75 +pkg syscall (netbsd-arm64), const SYS_MADVISE ideal-int +pkg syscall (netbsd-arm64), const SYS_MINCORE = 78 +pkg syscall (netbsd-arm64), const SYS_MINCORE ideal-int +pkg syscall (netbsd-arm64), const SYS_MINHERIT = 273 +pkg syscall (netbsd-arm64), const SYS_MINHERIT ideal-int +pkg syscall (netbsd-arm64), const SYS_MKDIR = 136 +pkg syscall (netbsd-arm64), const SYS_MKDIRAT = 461 +pkg syscall (netbsd-arm64), const SYS_MKDIRAT ideal-int +pkg syscall (netbsd-arm64), const SYS_MKDIR ideal-int +pkg syscall (netbsd-arm64), const SYS_MKFIFO = 132 +pkg syscall (netbsd-arm64), const SYS_MKFIFOAT = 459 +pkg syscall (netbsd-arm64), const SYS_MKFIFOAT ideal-int +pkg syscall (netbsd-arm64), const SYS_MKFIFO ideal-int +pkg syscall (netbsd-arm64), const SYS_MKNOD = 450 +pkg syscall (netbsd-arm64), const SYS_MKNODAT = 460 +pkg syscall (netbsd-arm64), const SYS_MKNODAT ideal-int +pkg syscall (netbsd-arm64), const SYS_MKNOD ideal-int +pkg syscall (netbsd-arm64), const SYS_MLOCK = 203 +pkg syscall (netbsd-arm64), const SYS_MLOCKALL = 242 +pkg syscall (netbsd-arm64), const SYS_MLOCKALL ideal-int +pkg syscall (netbsd-arm64), const SYS_MLOCK ideal-int +pkg syscall (netbsd-arm64), const SYS_MMAP = 197 +pkg syscall (netbsd-arm64), const SYS_MMAP ideal-int +pkg syscall (netbsd-arm64), const SYS_MODCTL = 246 +pkg syscall (netbsd-arm64), const SYS_MODCTL ideal-int +pkg syscall (netbsd-arm64), const SYS_MOUNT = 410 +pkg syscall (netbsd-arm64), const SYS_MOUNT ideal-int +pkg syscall (netbsd-arm64), const SYS_MPROTECT = 74 +pkg syscall (netbsd-arm64), const SYS_MPROTECT ideal-int +pkg syscall (netbsd-arm64), const SYS_MREMAP = 411 +pkg syscall (netbsd-arm64), const SYS_MREMAP ideal-int +pkg syscall (netbsd-arm64), const SYS_MSGCTL = 444 +pkg syscall (netbsd-arm64), const SYS_MSGCTL ideal-int +pkg syscall (netbsd-arm64), const SYS_MSGGET = 225 +pkg syscall (netbsd-arm64), const SYS_MSGGET ideal-int +pkg syscall (netbsd-arm64), const SYS_MSGRCV = 227 +pkg syscall (netbsd-arm64), const SYS_MSGRCV ideal-int +pkg syscall (netbsd-arm64), const SYS_MSGSND = 226 +pkg syscall (netbsd-arm64), const SYS_MSGSND ideal-int +pkg syscall (netbsd-arm64), const SYS_MUNLOCK = 204 +pkg syscall (netbsd-arm64), const SYS_MUNLOCKALL = 243 +pkg syscall (netbsd-arm64), const SYS_MUNLOCKALL ideal-int +pkg syscall (netbsd-arm64), const SYS_MUNLOCK ideal-int +pkg syscall (netbsd-arm64), const SYS_MUNMAP = 73 +pkg syscall (netbsd-arm64), const SYS_MUNMAP ideal-int +pkg syscall (netbsd-arm64), const SYS_NANOSLEEP = 430 +pkg syscall (netbsd-arm64), const SYS_NANOSLEEP ideal-int +pkg syscall (netbsd-arm64), const SYS_NTP_ADJTIME = 176 +pkg syscall (netbsd-arm64), const SYS_NTP_ADJTIME ideal-int +pkg syscall (netbsd-arm64), const SYS_NTP_GETTIME = 448 +pkg syscall (netbsd-arm64), const SYS_NTP_GETTIME ideal-int +pkg syscall (netbsd-arm64), const SYS_OPEN = 5 +pkg syscall (netbsd-arm64), const SYS_OPENAT = 468 +pkg syscall (netbsd-arm64), const SYS_OPENAT ideal-int +pkg syscall (netbsd-arm64), const SYS_OPEN ideal-int +pkg syscall (netbsd-arm64), const SYS_PACCEPT = 456 +pkg syscall (netbsd-arm64), const SYS_PACCEPT ideal-int +pkg syscall (netbsd-arm64), const SYS_PATHCONF = 191 +pkg syscall (netbsd-arm64), const SYS_PATHCONF ideal-int +pkg syscall (netbsd-arm64), const SYS_PIPE2 = 453 +pkg syscall (netbsd-arm64), const SYS_PIPE2 ideal-int +pkg syscall (netbsd-arm64), const SYS_PIPE = 42 +pkg syscall (netbsd-arm64), const SYS_PIPE ideal-int +pkg syscall (netbsd-arm64), const SYS_PMC_CONTROL = 342 +pkg syscall (netbsd-arm64), const SYS_PMC_CONTROL ideal-int +pkg syscall (netbsd-arm64), const SYS_PMC_GET_INFO = 341 +pkg syscall (netbsd-arm64), const SYS_PMC_GET_INFO ideal-int +pkg syscall (netbsd-arm64), const SYS_POLL = 209 +pkg syscall (netbsd-arm64), const SYS_POLL ideal-int +pkg syscall (netbsd-arm64), const SYS_POLLTS = 437 +pkg syscall (netbsd-arm64), const SYS_POLLTS ideal-int +pkg syscall (netbsd-arm64), const SYS___POSIX_CHOWN = 283 +pkg syscall (netbsd-arm64), const SYS___POSIX_CHOWN ideal-int +pkg syscall (netbsd-arm64), const SYS_POSIX_FADVISE = 416 +pkg syscall (netbsd-arm64), const SYS_POSIX_FADVISE ideal-int +pkg syscall (netbsd-arm64), const SYS___POSIX_FCHOWN = 284 +pkg syscall (netbsd-arm64), const SYS___POSIX_FCHOWN ideal-int +pkg syscall (netbsd-arm64), const SYS___POSIX_LCHOWN = 285 +pkg syscall (netbsd-arm64), const SYS___POSIX_LCHOWN ideal-int +pkg syscall (netbsd-arm64), const SYS___POSIX_RENAME = 270 +pkg syscall (netbsd-arm64), const SYS___POSIX_RENAME ideal-int +pkg syscall (netbsd-arm64), const SYS_POSIX_SPAWN = 474 +pkg syscall (netbsd-arm64), const SYS_POSIX_SPAWN ideal-int +pkg syscall (netbsd-arm64), const SYS_PREAD = 173 +pkg syscall (netbsd-arm64), const SYS_PREAD ideal-int +pkg syscall (netbsd-arm64), const SYS_PREADV = 289 +pkg syscall (netbsd-arm64), const SYS_PREADV ideal-int +pkg syscall (netbsd-arm64), const SYS_PROFIL = 44 +pkg syscall (netbsd-arm64), const SYS_PROFIL ideal-int +pkg syscall (netbsd-arm64), const SYS_PSELECT = 436 +pkg syscall (netbsd-arm64), const SYS_PSELECT ideal-int +pkg syscall (netbsd-arm64), const SYS_PSET_ASSIGN = 414 +pkg syscall (netbsd-arm64), const SYS_PSET_ASSIGN ideal-int +pkg syscall (netbsd-arm64), const SYS__PSET_BIND = 415 +pkg syscall (netbsd-arm64), const SYS__PSET_BIND ideal-int +pkg syscall (netbsd-arm64), const SYS_PSET_CREATE = 412 +pkg syscall (netbsd-arm64), const SYS_PSET_CREATE ideal-int +pkg syscall (netbsd-arm64), const SYS_PSET_DESTROY = 413 +pkg syscall (netbsd-arm64), const SYS_PSET_DESTROY ideal-int +pkg syscall (netbsd-arm64), const SYS_PTRACE = 26 +pkg syscall (netbsd-arm64), const SYS_PTRACE ideal-int +pkg syscall (netbsd-arm64), const SYS_PWRITE = 174 +pkg syscall (netbsd-arm64), const SYS_PWRITE ideal-int +pkg syscall (netbsd-arm64), const SYS_PWRITEV = 290 +pkg syscall (netbsd-arm64), const SYS_PWRITEV ideal-int +pkg syscall (netbsd-arm64), const SYS___QUOTACTL = 473 +pkg syscall (netbsd-arm64), const SYS___QUOTACTL ideal-int +pkg syscall (netbsd-arm64), const SYS_RASCTL = 343 +pkg syscall (netbsd-arm64), const SYS_RASCTL ideal-int +pkg syscall (netbsd-arm64), const SYS_READ = 3 +pkg syscall (netbsd-arm64), const SYS_READ ideal-int +pkg syscall (netbsd-arm64), const SYS_READLINK = 58 +pkg syscall (netbsd-arm64), const SYS_READLINKAT = 469 +pkg syscall (netbsd-arm64), const SYS_READLINKAT ideal-int +pkg syscall (netbsd-arm64), const SYS_READLINK ideal-int +pkg syscall (netbsd-arm64), const SYS_READV = 120 +pkg syscall (netbsd-arm64), const SYS_READV ideal-int +pkg syscall (netbsd-arm64), const SYS_REBOOT = 208 +pkg syscall (netbsd-arm64), const SYS_REBOOT ideal-int +pkg syscall (netbsd-arm64), const SYS_RECVFROM = 29 +pkg syscall (netbsd-arm64), const SYS_RECVFROM ideal-int +pkg syscall (netbsd-arm64), const SYS_RECVMMSG = 475 +pkg syscall (netbsd-arm64), const SYS_RECVMMSG ideal-int +pkg syscall (netbsd-arm64), const SYS_RECVMSG = 27 +pkg syscall (netbsd-arm64), const SYS_RECVMSG ideal-int +pkg syscall (netbsd-arm64), const SYS_REMOVEXATTR = 384 +pkg syscall (netbsd-arm64), const SYS_REMOVEXATTR ideal-int +pkg syscall (netbsd-arm64), const SYS_RENAME = 128 +pkg syscall (netbsd-arm64), const SYS_RENAMEAT = 458 +pkg syscall (netbsd-arm64), const SYS_RENAMEAT ideal-int +pkg syscall (netbsd-arm64), const SYS_RENAME ideal-int +pkg syscall (netbsd-arm64), const SYS_REVOKE = 56 +pkg syscall (netbsd-arm64), const SYS_REVOKE ideal-int +pkg syscall (netbsd-arm64), const SYS_RMDIR = 137 +pkg syscall (netbsd-arm64), const SYS_RMDIR ideal-int +pkg syscall (netbsd-arm64), const SYS_SBRK = 69 +pkg syscall (netbsd-arm64), const SYS_SBRK ideal-int +pkg syscall (netbsd-arm64), const SYS__SCHED_GETAFFINITY = 349 +pkg syscall (netbsd-arm64), const SYS__SCHED_GETAFFINITY ideal-int +pkg syscall (netbsd-arm64), const SYS__SCHED_GETPARAM = 347 +pkg syscall (netbsd-arm64), const SYS__SCHED_GETPARAM ideal-int +pkg syscall (netbsd-arm64), const SYS__SCHED_SETAFFINITY = 348 +pkg syscall (netbsd-arm64), const SYS__SCHED_SETAFFINITY ideal-int +pkg syscall (netbsd-arm64), const SYS__SCHED_SETPARAM = 346 +pkg syscall (netbsd-arm64), const SYS__SCHED_SETPARAM ideal-int +pkg syscall (netbsd-arm64), const SYS_SCHED_YIELD = 350 +pkg syscall (netbsd-arm64), const SYS_SCHED_YIELD ideal-int +pkg syscall (netbsd-arm64), const SYS_SELECT = 417 +pkg syscall (netbsd-arm64), const SYS_SELECT ideal-int +pkg syscall (netbsd-arm64), const SYS_SEMCONFIG = 223 +pkg syscall (netbsd-arm64), const SYS_SEMCONFIG ideal-int +pkg syscall (netbsd-arm64), const SYS___SEMCTL = 442 +pkg syscall (netbsd-arm64), const SYS___SEMCTL ideal-int +pkg syscall (netbsd-arm64), const SYS_SEMGET = 221 +pkg syscall (netbsd-arm64), const SYS_SEMGET ideal-int +pkg syscall (netbsd-arm64), const SYS_SEMOP = 222 +pkg syscall (netbsd-arm64), const SYS_SEMOP ideal-int +pkg syscall (netbsd-arm64), const SYS_SENDMMSG = 476 +pkg syscall (netbsd-arm64), const SYS_SENDMMSG ideal-int +pkg syscall (netbsd-arm64), const SYS_SENDMSG = 28 +pkg syscall (netbsd-arm64), const SYS_SENDMSG ideal-int +pkg syscall (netbsd-arm64), const SYS_SENDTO = 133 +pkg syscall (netbsd-arm64), const SYS_SENDTO ideal-int +pkg syscall (netbsd-arm64), const SYS_SETCONTEXT = 308 +pkg syscall (netbsd-arm64), const SYS_SETCONTEXT ideal-int +pkg syscall (netbsd-arm64), const SYS_SETEGID = 182 +pkg syscall (netbsd-arm64), const SYS_SETEGID ideal-int +pkg syscall (netbsd-arm64), const SYS_SETEUID = 183 +pkg syscall (netbsd-arm64), const SYS_SETEUID ideal-int +pkg syscall (netbsd-arm64), const SYS_SETGID = 181 +pkg syscall (netbsd-arm64), const SYS_SETGID ideal-int +pkg syscall (netbsd-arm64), const SYS_SETGROUPS = 80 +pkg syscall (netbsd-arm64), const SYS_SETGROUPS ideal-int +pkg syscall (netbsd-arm64), const SYS_SETITIMER = 425 +pkg syscall (netbsd-arm64), const SYS_SETITIMER ideal-int +pkg syscall (netbsd-arm64), const SYS___SETLOGIN = 50 +pkg syscall (netbsd-arm64), const SYS___SETLOGIN ideal-int +pkg syscall (netbsd-arm64), const SYS_SETPGID = 82 +pkg syscall (netbsd-arm64), const SYS_SETPGID ideal-int +pkg syscall (netbsd-arm64), const SYS_SETPRIORITY = 96 +pkg syscall (netbsd-arm64), const SYS_SETPRIORITY ideal-int +pkg syscall (netbsd-arm64), const SYS_SETREGID = 127 +pkg syscall (netbsd-arm64), const SYS_SETREGID ideal-int +pkg syscall (netbsd-arm64), const SYS_SETREUID = 126 +pkg syscall (netbsd-arm64), const SYS_SETREUID ideal-int +pkg syscall (netbsd-arm64), const SYS_SETRLIMIT = 195 +pkg syscall (netbsd-arm64), const SYS_SETRLIMIT ideal-int +pkg syscall (netbsd-arm64), const SYS_SETSID = 147 +pkg syscall (netbsd-arm64), const SYS_SETSID ideal-int +pkg syscall (netbsd-arm64), const SYS_SETSOCKOPT = 105 +pkg syscall (netbsd-arm64), const SYS_SETSOCKOPT ideal-int +pkg syscall (netbsd-arm64), const SYS_SETTIMEOFDAY = 419 +pkg syscall (netbsd-arm64), const SYS_SETTIMEOFDAY ideal-int +pkg syscall (netbsd-arm64), const SYS_SETUID = 23 +pkg syscall (netbsd-arm64), const SYS_SETUID ideal-int +pkg syscall (netbsd-arm64), const SYS_SETXATTR = 375 +pkg syscall (netbsd-arm64), const SYS_SETXATTR ideal-int +pkg syscall (netbsd-arm64), const SYS_SHMAT = 228 +pkg syscall (netbsd-arm64), const SYS_SHMAT ideal-int +pkg syscall (netbsd-arm64), const SYS_SHMCTL = 443 +pkg syscall (netbsd-arm64), const SYS_SHMCTL ideal-int +pkg syscall (netbsd-arm64), const SYS_SHMDT = 230 +pkg syscall (netbsd-arm64), const SYS_SHMDT ideal-int +pkg syscall (netbsd-arm64), const SYS_SHMGET = 231 +pkg syscall (netbsd-arm64), const SYS_SHMGET ideal-int +pkg syscall (netbsd-arm64), const SYS_SHUTDOWN = 134 +pkg syscall (netbsd-arm64), const SYS_SHUTDOWN ideal-int +pkg syscall (netbsd-arm64), const SYS___SIGACTION_SIGTRAMP = 340 +pkg syscall (netbsd-arm64), const SYS___SIGACTION_SIGTRAMP ideal-int +pkg syscall (netbsd-arm64), const SYS_SIGQUEUEINFO = 245 +pkg syscall (netbsd-arm64), const SYS_SIGQUEUEINFO ideal-int +pkg syscall (netbsd-arm64), const SYS___SIGTIMEDWAIT = 431 +pkg syscall (netbsd-arm64), const SYS___SIGTIMEDWAIT ideal-int +pkg syscall (netbsd-arm64), const SYS_SOCKET = 394 +pkg syscall (netbsd-arm64), const SYS_SOCKET ideal-int +pkg syscall (netbsd-arm64), const SYS_SOCKETPAIR = 135 +pkg syscall (netbsd-arm64), const SYS_SOCKETPAIR ideal-int +pkg syscall (netbsd-arm64), const SYS_SSTK = 70 +pkg syscall (netbsd-arm64), const SYS_SSTK ideal-int +pkg syscall (netbsd-arm64), const SYS_STAT = 439 +pkg syscall (netbsd-arm64), const SYS_STAT ideal-int +pkg syscall (netbsd-arm64), const SYS_STATVFS1 = 357 +pkg syscall (netbsd-arm64), const SYS_STATVFS1 ideal-int +pkg syscall (netbsd-arm64), const SYS_SWAPCTL = 271 +pkg syscall (netbsd-arm64), const SYS_SWAPCTL ideal-int +pkg syscall (netbsd-arm64), const SYS_SYMLINK = 57 +pkg syscall (netbsd-arm64), const SYS_SYMLINKAT = 470 +pkg syscall (netbsd-arm64), const SYS_SYMLINKAT ideal-int +pkg syscall (netbsd-arm64), const SYS_SYMLINK ideal-int +pkg syscall (netbsd-arm64), const SYS_SYNC = 36 +pkg syscall (netbsd-arm64), const SYS_SYNC ideal-int +pkg syscall (netbsd-arm64), const SYS_SYSARCH = 165 +pkg syscall (netbsd-arm64), const SYS_SYSARCH ideal-int +pkg syscall (netbsd-arm64), const SYS___SYSCTL = 202 +pkg syscall (netbsd-arm64), const SYS___SYSCTL ideal-int +pkg syscall (netbsd-arm64), const SYS_TIMER_CREATE = 235 +pkg syscall (netbsd-arm64), const SYS_TIMER_CREATE ideal-int +pkg syscall (netbsd-arm64), const SYS_TIMER_DELETE = 236 +pkg syscall (netbsd-arm64), const SYS_TIMER_DELETE ideal-int +pkg syscall (netbsd-arm64), const SYS_TIMER_GETOVERRUN = 239 +pkg syscall (netbsd-arm64), const SYS_TIMER_GETOVERRUN ideal-int +pkg syscall (netbsd-arm64), const SYS_TIMER_GETTIME = 447 +pkg syscall (netbsd-arm64), const SYS_TIMER_GETTIME ideal-int +pkg syscall (netbsd-arm64), const SYS_TIMER_SETTIME = 446 +pkg syscall (netbsd-arm64), const SYS_TIMER_SETTIME ideal-int +pkg syscall (netbsd-arm64), const SYS_TRUNCATE = 200 +pkg syscall (netbsd-arm64), const SYS_TRUNCATE ideal-int +pkg syscall (netbsd-arm64), const SYS_UMASK = 60 +pkg syscall (netbsd-arm64), const SYS_UMASK ideal-int +pkg syscall (netbsd-arm64), const SYS_UNDELETE = 205 +pkg syscall (netbsd-arm64), const SYS_UNDELETE ideal-int +pkg syscall (netbsd-arm64), const SYS_UNLINK = 10 +pkg syscall (netbsd-arm64), const SYS_UNLINKAT = 471 +pkg syscall (netbsd-arm64), const SYS_UNLINKAT ideal-int +pkg syscall (netbsd-arm64), const SYS_UNLINK ideal-int +pkg syscall (netbsd-arm64), const SYS_UNMOUNT = 22 +pkg syscall (netbsd-arm64), const SYS_UNMOUNT ideal-int +pkg syscall (netbsd-arm64), const SYS_UTIMENSAT = 467 +pkg syscall (netbsd-arm64), const SYS_UTIMENSAT ideal-int +pkg syscall (netbsd-arm64), const SYS_UTIMES = 420 +pkg syscall (netbsd-arm64), const SYS_UTIMES ideal-int +pkg syscall (netbsd-arm64), const SYS_UTRACE = 306 +pkg syscall (netbsd-arm64), const SYS_UTRACE ideal-int +pkg syscall (netbsd-arm64), const SYS_UUIDGEN = 355 +pkg syscall (netbsd-arm64), const SYS_UUIDGEN ideal-int +pkg syscall (netbsd-arm64), const SYS_VADVISE = 72 +pkg syscall (netbsd-arm64), const SYS_VADVISE ideal-int +pkg syscall (netbsd-arm64), const SYS_VFORK = 66 +pkg syscall (netbsd-arm64), const SYS_VFORK ideal-int +pkg syscall (netbsd-arm64), const SYS_WAIT4 = 449 +pkg syscall (netbsd-arm64), const SYS_WAIT4 ideal-int +pkg syscall (netbsd-arm64), const SYS_WRITE = 4 +pkg syscall (netbsd-arm64), const SYS_WRITE ideal-int +pkg syscall (netbsd-arm64), const SYS_WRITEV = 121 +pkg syscall (netbsd-arm64), const SYS_WRITEV ideal-int +pkg syscall (netbsd-arm64), const TCIFLUSH = 1 +pkg syscall (netbsd-arm64), const TCIFLUSH ideal-int +pkg syscall (netbsd-arm64), const TCIOFLUSH = 3 +pkg syscall (netbsd-arm64), const TCIOFLUSH ideal-int +pkg syscall (netbsd-arm64), const TCOFLUSH = 2 +pkg syscall (netbsd-arm64), const TCOFLUSH ideal-int +pkg syscall (netbsd-arm64), const TCP_CONGCTL = 32 +pkg syscall (netbsd-arm64), const TCP_CONGCTL ideal-int +pkg syscall (netbsd-arm64), const TCP_KEEPCNT = 6 +pkg syscall (netbsd-arm64), const TCP_KEEPCNT ideal-int +pkg syscall (netbsd-arm64), const TCP_KEEPIDLE = 3 +pkg syscall (netbsd-arm64), const TCP_KEEPIDLE ideal-int +pkg syscall (netbsd-arm64), const TCP_KEEPINIT = 7 +pkg syscall (netbsd-arm64), const TCP_KEEPINIT ideal-int +pkg syscall (netbsd-arm64), const TCP_KEEPINTVL = 5 +pkg syscall (netbsd-arm64), const TCP_KEEPINTVL ideal-int +pkg syscall (netbsd-arm64), const TCP_MAXBURST = 4 +pkg syscall (netbsd-arm64), const TCP_MAXBURST ideal-int +pkg syscall (netbsd-arm64), const TCP_MAXSEG = 2 +pkg syscall (netbsd-arm64), const TCP_MAXSEG ideal-int +pkg syscall (netbsd-arm64), const TCP_MAXWIN = 65535 +pkg syscall (netbsd-arm64), const TCP_MAXWIN ideal-int +pkg syscall (netbsd-arm64), const TCP_MAX_WINSHIFT = 14 +pkg syscall (netbsd-arm64), const TCP_MAX_WINSHIFT ideal-int +pkg syscall (netbsd-arm64), const TCP_MD5SIG = 16 +pkg syscall (netbsd-arm64), const TCP_MD5SIG ideal-int +pkg syscall (netbsd-arm64), const TCP_MINMSS = 216 +pkg syscall (netbsd-arm64), const TCP_MINMSS ideal-int +pkg syscall (netbsd-arm64), const TCP_MSS = 536 +pkg syscall (netbsd-arm64), const TCP_MSS ideal-int +pkg syscall (netbsd-arm64), const TCSAFLUSH = 2 +pkg syscall (netbsd-arm64), const TCSAFLUSH ideal-int +pkg syscall (netbsd-arm64), const TIOCCBRK = 536900730 +pkg syscall (netbsd-arm64), const TIOCCBRK ideal-int +pkg syscall (netbsd-arm64), const TIOCCDTR = 536900728 +pkg syscall (netbsd-arm64), const TIOCCDTR ideal-int +pkg syscall (netbsd-arm64), const TIOCCONS = 2147775586 +pkg syscall (netbsd-arm64), const TIOCCONS ideal-int +pkg syscall (netbsd-arm64), const TIOCDCDTIMESTAMP = 1074820184 +pkg syscall (netbsd-arm64), const TIOCDCDTIMESTAMP ideal-int +pkg syscall (netbsd-arm64), const TIOCDRAIN = 536900702 +pkg syscall (netbsd-arm64), const TIOCDRAIN ideal-int +pkg syscall (netbsd-arm64), const TIOCEXCL = 536900621 +pkg syscall (netbsd-arm64), const TIOCEXCL ideal-int +pkg syscall (netbsd-arm64), const TIOCEXT = 2147775584 +pkg syscall (netbsd-arm64), const TIOCEXT ideal-int +pkg syscall (netbsd-arm64), const TIOCFLAG_CDTRCTS = 16 +pkg syscall (netbsd-arm64), const TIOCFLAG_CDTRCTS ideal-int +pkg syscall (netbsd-arm64), const TIOCFLAG_CLOCAL = 2 +pkg syscall (netbsd-arm64), const TIOCFLAG_CLOCAL ideal-int +pkg syscall (netbsd-arm64), const TIOCFLAG_CRTSCTS = 4 +pkg syscall (netbsd-arm64), const TIOCFLAG_CRTSCTS ideal-int +pkg syscall (netbsd-arm64), const TIOCFLAG_MDMBUF = 8 +pkg syscall (netbsd-arm64), const TIOCFLAG_MDMBUF ideal-int +pkg syscall (netbsd-arm64), const TIOCFLAG_SOFTCAR = 1 +pkg syscall (netbsd-arm64), const TIOCFLAG_SOFTCAR ideal-int +pkg syscall (netbsd-arm64), const TIOCFLUSH = 2147775504 +pkg syscall (netbsd-arm64), const TIOCFLUSH ideal-int +pkg syscall (netbsd-arm64), const TIOCGETA = 1076655123 +pkg syscall (netbsd-arm64), const TIOCGETA ideal-int +pkg syscall (netbsd-arm64), const TIOCGETD = 1074033690 +pkg syscall (netbsd-arm64), const TIOCGETD ideal-int +pkg syscall (netbsd-arm64), const TIOCGFLAGS = 1074033757 +pkg syscall (netbsd-arm64), const TIOCGFLAGS ideal-int +pkg syscall (netbsd-arm64), const TIOCGLINED = 1075868738 +pkg syscall (netbsd-arm64), const TIOCGLINED ideal-int +pkg syscall (netbsd-arm64), const TIOCGPGRP = 1074033783 +pkg syscall (netbsd-arm64), const TIOCGPGRP ideal-int +pkg syscall (netbsd-arm64), const TIOCGQSIZE = 1074033793 +pkg syscall (netbsd-arm64), const TIOCGQSIZE ideal-int +pkg syscall (netbsd-arm64), const TIOCGRANTPT = 536900679 +pkg syscall (netbsd-arm64), const TIOCGRANTPT ideal-int +pkg syscall (netbsd-arm64), const TIOCGSID = 1074033763 +pkg syscall (netbsd-arm64), const TIOCGSID ideal-int +pkg syscall (netbsd-arm64), const TIOCGSIZE = 1074295912 +pkg syscall (netbsd-arm64), const TIOCGSIZE ideal-int +pkg syscall (netbsd-arm64), const TIOCGWINSZ = 1074295912 +pkg syscall (netbsd-arm64), const TIOCGWINSZ ideal-int +pkg syscall (netbsd-arm64), const TIOCMBIC = 2147775595 +pkg syscall (netbsd-arm64), const TIOCMBIC ideal-int +pkg syscall (netbsd-arm64), const TIOCMBIS = 2147775596 +pkg syscall (netbsd-arm64), const TIOCMBIS ideal-int +pkg syscall (netbsd-arm64), const TIOCM_CAR = 64 +pkg syscall (netbsd-arm64), const TIOCM_CAR ideal-int +pkg syscall (netbsd-arm64), const TIOCM_CD = 64 +pkg syscall (netbsd-arm64), const TIOCM_CD ideal-int +pkg syscall (netbsd-arm64), const TIOCM_CTS = 32 +pkg syscall (netbsd-arm64), const TIOCM_CTS ideal-int +pkg syscall (netbsd-arm64), const TIOCM_DSR = 256 +pkg syscall (netbsd-arm64), const TIOCM_DSR ideal-int +pkg syscall (netbsd-arm64), const TIOCM_DTR = 2 +pkg syscall (netbsd-arm64), const TIOCM_DTR ideal-int +pkg syscall (netbsd-arm64), const TIOCMGET = 1074033770 +pkg syscall (netbsd-arm64), const TIOCMGET ideal-int +pkg syscall (netbsd-arm64), const TIOCM_LE = 1 +pkg syscall (netbsd-arm64), const TIOCM_LE ideal-int +pkg syscall (netbsd-arm64), const TIOCM_RI = 128 +pkg syscall (netbsd-arm64), const TIOCM_RI ideal-int +pkg syscall (netbsd-arm64), const TIOCM_RNG = 128 +pkg syscall (netbsd-arm64), const TIOCM_RNG ideal-int +pkg syscall (netbsd-arm64), const TIOCM_RTS = 4 +pkg syscall (netbsd-arm64), const TIOCM_RTS ideal-int +pkg syscall (netbsd-arm64), const TIOCMSET = 2147775597 +pkg syscall (netbsd-arm64), const TIOCMSET ideal-int +pkg syscall (netbsd-arm64), const TIOCM_SR = 16 +pkg syscall (netbsd-arm64), const TIOCM_SR ideal-int +pkg syscall (netbsd-arm64), const TIOCM_ST = 8 +pkg syscall (netbsd-arm64), const TIOCM_ST ideal-int +pkg syscall (netbsd-arm64), const TIOCNOTTY = 536900721 +pkg syscall (netbsd-arm64), const TIOCNOTTY ideal-int +pkg syscall (netbsd-arm64), const TIOCNXCL = 536900622 +pkg syscall (netbsd-arm64), const TIOCNXCL ideal-int +pkg syscall (netbsd-arm64), const TIOCOUTQ = 1074033779 +pkg syscall (netbsd-arm64), const TIOCOUTQ ideal-int +pkg syscall (netbsd-arm64), const TIOCPKT = 2147775600 +pkg syscall (netbsd-arm64), const TIOCPKT_DATA = 0 +pkg syscall (netbsd-arm64), const TIOCPKT_DATA ideal-int +pkg syscall (netbsd-arm64), const TIOCPKT_DOSTOP = 32 +pkg syscall (netbsd-arm64), const TIOCPKT_DOSTOP ideal-int +pkg syscall (netbsd-arm64), const TIOCPKT_FLUSHREAD = 1 +pkg syscall (netbsd-arm64), const TIOCPKT_FLUSHREAD ideal-int +pkg syscall (netbsd-arm64), const TIOCPKT_FLUSHWRITE = 2 +pkg syscall (netbsd-arm64), const TIOCPKT_FLUSHWRITE ideal-int +pkg syscall (netbsd-arm64), const TIOCPKT ideal-int +pkg syscall (netbsd-arm64), const TIOCPKT_IOCTL = 64 +pkg syscall (netbsd-arm64), const TIOCPKT_IOCTL ideal-int +pkg syscall (netbsd-arm64), const TIOCPKT_NOSTOP = 16 +pkg syscall (netbsd-arm64), const TIOCPKT_NOSTOP ideal-int +pkg syscall (netbsd-arm64), const TIOCPKT_START = 8 +pkg syscall (netbsd-arm64), const TIOCPKT_START ideal-int +pkg syscall (netbsd-arm64), const TIOCPKT_STOP = 4 +pkg syscall (netbsd-arm64), const TIOCPKT_STOP ideal-int +pkg syscall (netbsd-arm64), const TIOCPTMGET = 1076393030 +pkg syscall (netbsd-arm64), const TIOCPTMGET ideal-int +pkg syscall (netbsd-arm64), const TIOCPTSNAME = 1076393032 +pkg syscall (netbsd-arm64), const TIOCPTSNAME ideal-int +pkg syscall (netbsd-arm64), const TIOCRCVFRAME = 2148037701 +pkg syscall (netbsd-arm64), const TIOCRCVFRAME ideal-int +pkg syscall (netbsd-arm64), const TIOCREMOTE = 2147775593 +pkg syscall (netbsd-arm64), const TIOCREMOTE ideal-int +pkg syscall (netbsd-arm64), const TIOCSBRK = 536900731 +pkg syscall (netbsd-arm64), const TIOCSBRK ideal-int +pkg syscall (netbsd-arm64), const TIOCSCTTY = 536900705 +pkg syscall (netbsd-arm64), const TIOCSCTTY ideal-int +pkg syscall (netbsd-arm64), const TIOCSDTR = 536900729 +pkg syscall (netbsd-arm64), const TIOCSDTR ideal-int +pkg syscall (netbsd-arm64), const TIOCSETA = 2150396948 +pkg syscall (netbsd-arm64), const TIOCSETAF = 2150396950 +pkg syscall (netbsd-arm64), const TIOCSETAF ideal-int +pkg syscall (netbsd-arm64), const TIOCSETA ideal-int +pkg syscall (netbsd-arm64), const TIOCSETAW = 2150396949 +pkg syscall (netbsd-arm64), const TIOCSETAW ideal-int +pkg syscall (netbsd-arm64), const TIOCSETD = 2147775515 +pkg syscall (netbsd-arm64), const TIOCSETD ideal-int +pkg syscall (netbsd-arm64), const TIOCSFLAGS = 2147775580 +pkg syscall (netbsd-arm64), const TIOCSFLAGS ideal-int +pkg syscall (netbsd-arm64), const TIOCSIG = 536900703 +pkg syscall (netbsd-arm64), const TIOCSIG ideal-int +pkg syscall (netbsd-arm64), const TIOCSLINED = 2149610563 +pkg syscall (netbsd-arm64), const TIOCSLINED ideal-int +pkg syscall (netbsd-arm64), const TIOCSPGRP = 2147775606 +pkg syscall (netbsd-arm64), const TIOCSPGRP ideal-int +pkg syscall (netbsd-arm64), const TIOCSQSIZE = 2147775616 +pkg syscall (netbsd-arm64), const TIOCSQSIZE ideal-int +pkg syscall (netbsd-arm64), const TIOCSSIZE = 2148037735 +pkg syscall (netbsd-arm64), const TIOCSSIZE ideal-int +pkg syscall (netbsd-arm64), const TIOCSTART = 536900718 +pkg syscall (netbsd-arm64), const TIOCSTART ideal-int +pkg syscall (netbsd-arm64), const TIOCSTAT = 2147775589 +pkg syscall (netbsd-arm64), const TIOCSTAT ideal-int +pkg syscall (netbsd-arm64), const TIOCSTI = 2147578994 +pkg syscall (netbsd-arm64), const TIOCSTI ideal-int +pkg syscall (netbsd-arm64), const TIOCSTOP = 536900719 +pkg syscall (netbsd-arm64), const TIOCSTOP ideal-int +pkg syscall (netbsd-arm64), const TIOCSWINSZ = 2148037735 +pkg syscall (netbsd-arm64), const TIOCSWINSZ ideal-int +pkg syscall (netbsd-arm64), const TIOCUCNTL = 2147775590 +pkg syscall (netbsd-arm64), const TIOCUCNTL ideal-int +pkg syscall (netbsd-arm64), const TIOCXMTFRAME = 2148037700 +pkg syscall (netbsd-arm64), const TIOCXMTFRAME ideal-int +pkg syscall (netbsd-arm64), const TOSTOP = 4194304 +pkg syscall (netbsd-arm64), const TOSTOP ideal-int +pkg syscall (netbsd-arm64), const VDISCARD = 15 +pkg syscall (netbsd-arm64), const VDISCARD ideal-int +pkg syscall (netbsd-arm64), const VDSUSP = 11 +pkg syscall (netbsd-arm64), const VDSUSP ideal-int +pkg syscall (netbsd-arm64), const VEOF = 0 +pkg syscall (netbsd-arm64), const VEOF ideal-int +pkg syscall (netbsd-arm64), const VEOL = 1 +pkg syscall (netbsd-arm64), const VEOL2 = 2 +pkg syscall (netbsd-arm64), const VEOL2 ideal-int +pkg syscall (netbsd-arm64), const VEOL ideal-int +pkg syscall (netbsd-arm64), const VERASE = 3 +pkg syscall (netbsd-arm64), const VERASE ideal-int +pkg syscall (netbsd-arm64), const VINTR = 8 +pkg syscall (netbsd-arm64), const VINTR ideal-int +pkg syscall (netbsd-arm64), const VKILL = 5 +pkg syscall (netbsd-arm64), const VKILL ideal-int +pkg syscall (netbsd-arm64), const VLNEXT = 14 +pkg syscall (netbsd-arm64), const VLNEXT ideal-int +pkg syscall (netbsd-arm64), const VMIN = 16 +pkg syscall (netbsd-arm64), const VMIN ideal-int +pkg syscall (netbsd-arm64), const VQUIT = 9 +pkg syscall (netbsd-arm64), const VQUIT ideal-int +pkg syscall (netbsd-arm64), const VREPRINT = 6 +pkg syscall (netbsd-arm64), const VREPRINT ideal-int +pkg syscall (netbsd-arm64), const VSTART = 12 +pkg syscall (netbsd-arm64), const VSTART ideal-int +pkg syscall (netbsd-arm64), const VSTATUS = 18 +pkg syscall (netbsd-arm64), const VSTATUS ideal-int +pkg syscall (netbsd-arm64), const VSTOP = 13 +pkg syscall (netbsd-arm64), const VSTOP ideal-int +pkg syscall (netbsd-arm64), const VSUSP = 10 +pkg syscall (netbsd-arm64), const VSUSP ideal-int +pkg syscall (netbsd-arm64), const VTIME = 17 +pkg syscall (netbsd-arm64), const VTIME ideal-int +pkg syscall (netbsd-arm64), const VWERASE = 4 +pkg syscall (netbsd-arm64), const VWERASE ideal-int +pkg syscall (netbsd-arm64), const WALL = 8 +pkg syscall (netbsd-arm64), const WALL ideal-int +pkg syscall (netbsd-arm64), const WALLSIG = 8 +pkg syscall (netbsd-arm64), const WALLSIG ideal-int +pkg syscall (netbsd-arm64), const WALTSIG = 4 +pkg syscall (netbsd-arm64), const WALTSIG ideal-int +pkg syscall (netbsd-arm64), const WCLONE = 4 +pkg syscall (netbsd-arm64), const WCLONE ideal-int +pkg syscall (netbsd-arm64), const WCOREFLAG = 128 +pkg syscall (netbsd-arm64), const WCOREFLAG ideal-int +pkg syscall (netbsd-arm64), const WNOHANG = 1 +pkg syscall (netbsd-arm64), const WNOHANG ideal-int +pkg syscall (netbsd-arm64), const WNOWAIT = 65536 +pkg syscall (netbsd-arm64), const WNOWAIT ideal-int +pkg syscall (netbsd-arm64), const WNOZOMBIE = 131072 +pkg syscall (netbsd-arm64), const WNOZOMBIE ideal-int +pkg syscall (netbsd-arm64), const WOPTSCHECKED = 262144 +pkg syscall (netbsd-arm64), const WOPTSCHECKED ideal-int +pkg syscall (netbsd-arm64), const WSTOPPED = 127 +pkg syscall (netbsd-arm64), const WSTOPPED ideal-int +pkg syscall (netbsd-arm64), const WUNTRACED = 2 +pkg syscall (netbsd-arm64), const WUNTRACED ideal-int +pkg syscall (netbsd-arm64), func Accept4(int, int) (int, Sockaddr, error) +pkg syscall (netbsd-arm64), func Accept(int) (int, Sockaddr, error) +pkg syscall (netbsd-arm64), func Access(string, uint32) error +pkg syscall (netbsd-arm64), func Adjtime(*Timeval, *Timeval) error +pkg syscall (netbsd-arm64), func Bind(int, Sockaddr) error +pkg syscall (netbsd-arm64), func BpfBuflen(int) (int, error) +pkg syscall (netbsd-arm64), func BpfDatalink(int) (int, error) +pkg syscall (netbsd-arm64), func BpfHeadercmpl(int) (int, error) +pkg syscall (netbsd-arm64), func BpfInterface(int, string) (string, error) +pkg syscall (netbsd-arm64), func BpfJump(int, int, int, int) *BpfInsn +pkg syscall (netbsd-arm64), func BpfStats(int) (*BpfStat, error) +pkg syscall (netbsd-arm64), func BpfStmt(int, int) *BpfInsn +pkg syscall (netbsd-arm64), func BpfTimeout(int) (*Timeval, error) +pkg syscall (netbsd-arm64), func CheckBpfVersion(int) error +pkg syscall (netbsd-arm64), func Chflags(string, int) error +pkg syscall (netbsd-arm64), func Chroot(string) error +pkg syscall (netbsd-arm64), func Close(int) error +pkg syscall (netbsd-arm64), func CloseOnExec(int) +pkg syscall (netbsd-arm64), func CmsgLen(int) int +pkg syscall (netbsd-arm64), func CmsgSpace(int) int +pkg syscall (netbsd-arm64), func Connect(int, Sockaddr) error +pkg syscall (netbsd-arm64), func Dup2(int, int) error +pkg syscall (netbsd-arm64), func Dup(int) (int, error) +pkg syscall (netbsd-arm64), func Fchdir(int) error +pkg syscall (netbsd-arm64), func Fchflags(int, int) error +pkg syscall (netbsd-arm64), func Fchmod(int, uint32) error +pkg syscall (netbsd-arm64), func Fchown(int, int, int) error +pkg syscall (netbsd-arm64), func FcntlFlock(uintptr, int, *Flock_t) error +pkg syscall (netbsd-arm64), func Flock(int, int) error +pkg syscall (netbsd-arm64), func FlushBpf(int) error +pkg syscall (netbsd-arm64), func ForkExec(string, []string, *ProcAttr) (int, error) +pkg syscall (netbsd-arm64), func Fpathconf(int, int) (int, error) +pkg syscall (netbsd-arm64), func Fstat(int, *Stat_t) error +pkg syscall (netbsd-arm64), func Fsync(int) error +pkg syscall (netbsd-arm64), func Ftruncate(int, int64) error +pkg syscall (netbsd-arm64), func Futimes(int, []Timeval) error +pkg syscall (netbsd-arm64), func Getdirentries(int, []uint8, *uintptr) (int, error) +pkg syscall (netbsd-arm64), func Getpeername(int) (Sockaddr, error) +pkg syscall (netbsd-arm64), func Getpgid(int) (int, error) +pkg syscall (netbsd-arm64), func Getpgrp() int +pkg syscall (netbsd-arm64), func Getpriority(int, int) (int, error) +pkg syscall (netbsd-arm64), func Getrlimit(int, *Rlimit) error +pkg syscall (netbsd-arm64), func Getrusage(int, *Rusage) error +pkg syscall (netbsd-arm64), func Getsid(int) (int, error) +pkg syscall (netbsd-arm64), func Getsockname(int) (Sockaddr, error) +pkg syscall (netbsd-arm64), func GetsockoptByte(int, int, int) (uint8, error) +pkg syscall (netbsd-arm64), func GetsockoptICMPv6Filter(int, int, int) (*ICMPv6Filter, error) +pkg syscall (netbsd-arm64), func GetsockoptInet4Addr(int, int, int) ([4]uint8, error) +pkg syscall (netbsd-arm64), func GetsockoptInt(int, int, int) (int, error) +pkg syscall (netbsd-arm64), func GetsockoptIPMreq(int, int, int) (*IPMreq, error) +pkg syscall (netbsd-arm64), func GetsockoptIPv6Mreq(int, int, int) (*IPv6Mreq, error) +pkg syscall (netbsd-arm64), func GetsockoptIPv6MTUInfo(int, int, int) (*IPv6MTUInfo, error) +pkg syscall (netbsd-arm64), func Issetugid() bool +pkg syscall (netbsd-arm64), func Kevent(int, []Kevent_t, []Kevent_t, *Timespec) (int, error) +pkg syscall (netbsd-arm64), func Kill(int, Signal) error +pkg syscall (netbsd-arm64), func Kqueue() (int, error) +pkg syscall (netbsd-arm64), func Listen(int, int) error +pkg syscall (netbsd-arm64), func Lstat(string, *Stat_t) error +pkg syscall (netbsd-arm64), func Mkfifo(string, uint32) error +pkg syscall (netbsd-arm64), func Mknod(string, uint32, int) error +pkg syscall (netbsd-arm64), func Mmap(int, int64, int, int, int) ([]uint8, error) +pkg syscall (netbsd-arm64), func Munmap([]uint8) error +pkg syscall (netbsd-arm64), func Nanosleep(*Timespec, *Timespec) error +pkg syscall (netbsd-arm64), func Open(string, int, uint32) (int, error) +pkg syscall (netbsd-arm64), func ParseDirent([]uint8, int, []string) (int, int, []string) +pkg syscall (netbsd-arm64), func ParseRoutingMessage([]uint8) ([]RoutingMessage, error) +pkg syscall (netbsd-arm64), func ParseRoutingSockaddr(RoutingMessage) ([]Sockaddr, error) +pkg syscall (netbsd-arm64), func ParseSocketControlMessage([]uint8) ([]SocketControlMessage, error) +pkg syscall (netbsd-arm64), func ParseUnixRights(*SocketControlMessage) ([]int, error) +pkg syscall (netbsd-arm64), func Pathconf(string, int) (int, error) +pkg syscall (netbsd-arm64), func Pipe2([]int, int) error +pkg syscall (netbsd-arm64), func Pipe([]int) error +pkg syscall (netbsd-arm64), func Pread(int, []uint8, int64) (int, error) +pkg syscall (netbsd-arm64), func Pwrite(int, []uint8, int64) (int, error) +pkg syscall (netbsd-arm64), func RawSyscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) +pkg syscall (netbsd-arm64), func RawSyscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) +pkg syscall (netbsd-arm64), func ReadDirent(int, []uint8) (int, error) +pkg syscall (netbsd-arm64), func Read(int, []uint8) (int, error) +pkg syscall (netbsd-arm64), func Recvfrom(int, []uint8, int) (int, Sockaddr, error) +pkg syscall (netbsd-arm64), func Recvmsg(int, []uint8, []uint8, int) (int, int, int, Sockaddr, error) +pkg syscall (netbsd-arm64), func Revoke(string) error +pkg syscall (netbsd-arm64), func RouteRIB(int, int) ([]uint8, error) +pkg syscall (netbsd-arm64), func Seek(int, int64, int) (int64, error) +pkg syscall (netbsd-arm64), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) error +pkg syscall (netbsd-arm64), func Sendfile(int, int, *int64, int) (int, error) +pkg syscall (netbsd-arm64), func Sendmsg(int, []uint8, []uint8, Sockaddr, int) error +pkg syscall (netbsd-arm64), func SendmsgN(int, []uint8, []uint8, Sockaddr, int) (int, error) +pkg syscall (netbsd-arm64), func Sendto(int, []uint8, int, Sockaddr) error +pkg syscall (netbsd-arm64), func SetBpfBuflen(int, int) (int, error) +pkg syscall (netbsd-arm64), func SetBpfDatalink(int, int) (int, error) +pkg syscall (netbsd-arm64), func SetBpfHeadercmpl(int, int) error +pkg syscall (netbsd-arm64), func SetBpfImmediate(int, int) error +pkg syscall (netbsd-arm64), func SetBpf(int, []BpfInsn) error +pkg syscall (netbsd-arm64), func SetBpfInterface(int, string) error +pkg syscall (netbsd-arm64), func SetBpfPromisc(int, int) error +pkg syscall (netbsd-arm64), func SetBpfTimeout(int, *Timeval) error +pkg syscall (netbsd-arm64), func Setegid(int) error +pkg syscall (netbsd-arm64), func Seteuid(int) error +pkg syscall (netbsd-arm64), func Setgid(int) error +pkg syscall (netbsd-arm64), func Setgroups([]int) error +pkg syscall (netbsd-arm64), func SetKevent(*Kevent_t, int, int, int) +pkg syscall (netbsd-arm64), func SetNonblock(int, bool) error +pkg syscall (netbsd-arm64), func Setpgid(int, int) error +pkg syscall (netbsd-arm64), func Setpriority(int, int, int) error +pkg syscall (netbsd-arm64), func Setregid(int, int) error +pkg syscall (netbsd-arm64), func Setreuid(int, int) error +pkg syscall (netbsd-arm64), func Setrlimit(int, *Rlimit) error +pkg syscall (netbsd-arm64), func Setsid() (int, error) +pkg syscall (netbsd-arm64), func SetsockoptByte(int, int, int, uint8) error +pkg syscall (netbsd-arm64), func SetsockoptICMPv6Filter(int, int, int, *ICMPv6Filter) error +pkg syscall (netbsd-arm64), func SetsockoptInet4Addr(int, int, int, [4]uint8) error +pkg syscall (netbsd-arm64), func SetsockoptInt(int, int, int, int) error +pkg syscall (netbsd-arm64), func SetsockoptIPMreq(int, int, int, *IPMreq) error +pkg syscall (netbsd-arm64), func SetsockoptIPv6Mreq(int, int, int, *IPv6Mreq) error +pkg syscall (netbsd-arm64), func SetsockoptLinger(int, int, int, *Linger) error +pkg syscall (netbsd-arm64), func SetsockoptString(int, int, int, string) error +pkg syscall (netbsd-arm64), func SetsockoptTimeval(int, int, int, *Timeval) error +pkg syscall (netbsd-arm64), func Settimeofday(*Timeval) error +pkg syscall (netbsd-arm64), func Setuid(int) error +pkg syscall (netbsd-arm64), func Shutdown(int, int) error +pkg syscall (netbsd-arm64), func SlicePtrFromStrings([]string) ([]*uint8, error) +pkg syscall (netbsd-arm64), func Socket(int, int, int) (int, error) +pkg syscall (netbsd-arm64), func Socketpair(int, int, int) ([2]int, error) +pkg syscall (netbsd-arm64), func Stat(string, *Stat_t) error +pkg syscall (netbsd-arm64), func StringSlicePtr([]string) []*uint8 +pkg syscall (netbsd-arm64), func Sync() error +pkg syscall (netbsd-arm64), func Syscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) +pkg syscall (netbsd-arm64), func Syscall9(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) +pkg syscall (netbsd-arm64), func Syscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) +pkg syscall (netbsd-arm64), func Sysctl(string) (string, error) +pkg syscall (netbsd-arm64), func SysctlUint32(string) (uint32, error) +pkg syscall (netbsd-arm64), func TimevalToNsec(Timeval) int64 +pkg syscall (netbsd-arm64), func Truncate(string, int64) error +pkg syscall (netbsd-arm64), func Umask(int) int +pkg syscall (netbsd-arm64), func UnixRights(...int) []uint8 +pkg syscall (netbsd-arm64), func Unmount(string, int) error +pkg syscall (netbsd-arm64), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) +pkg syscall (netbsd-arm64), func Write(int, []uint8) (int, error) +pkg syscall (netbsd-arm64), method (*Cmsghdr) SetLen(int) +pkg syscall (netbsd-arm64), method (*Iovec) SetLen(int) +pkg syscall (netbsd-arm64), method (*Msghdr) SetControllen(int) +pkg syscall (netbsd-arm64), type BpfHdr struct +pkg syscall (netbsd-arm64), type BpfHdr struct, Caplen uint32 +pkg syscall (netbsd-arm64), type BpfHdr struct, Datalen uint32 +pkg syscall (netbsd-arm64), type BpfHdr struct, Hdrlen uint16 +pkg syscall (netbsd-arm64), type BpfHdr struct, Pad_cgo_0 [6]uint8 +pkg syscall (netbsd-arm64), type BpfHdr struct, Tstamp BpfTimeval +pkg syscall (netbsd-arm64), type BpfInsn struct +pkg syscall (netbsd-arm64), type BpfInsn struct, Code uint16 +pkg syscall (netbsd-arm64), type BpfInsn struct, Jf uint8 +pkg syscall (netbsd-arm64), type BpfInsn struct, Jt uint8 +pkg syscall (netbsd-arm64), type BpfInsn struct, K uint32 +pkg syscall (netbsd-arm64), type BpfProgram struct +pkg syscall (netbsd-arm64), type BpfProgram struct, Insns *BpfInsn +pkg syscall (netbsd-arm64), type BpfProgram struct, Len uint32 +pkg syscall (netbsd-arm64), type BpfProgram struct, Pad_cgo_0 [4]uint8 +pkg syscall (netbsd-arm64), type BpfStat struct +pkg syscall (netbsd-arm64), type BpfStat struct, Capt uint64 +pkg syscall (netbsd-arm64), type BpfStat struct, Drop uint64 +pkg syscall (netbsd-arm64), type BpfStat struct, Padding [13]uint64 +pkg syscall (netbsd-arm64), type BpfStat struct, Recv uint64 +pkg syscall (netbsd-arm64), type BpfTimeval struct +pkg syscall (netbsd-arm64), type BpfTimeval struct, Sec int64 +pkg syscall (netbsd-arm64), type BpfTimeval struct, Usec int64 +pkg syscall (netbsd-arm64), type BpfVersion struct +pkg syscall (netbsd-arm64), type BpfVersion struct, Major uint16 +pkg syscall (netbsd-arm64), type BpfVersion struct, Minor uint16 +pkg syscall (netbsd-arm64), type Cmsghdr struct +pkg syscall (netbsd-arm64), type Cmsghdr struct, Len uint32 +pkg syscall (netbsd-arm64), type Cmsghdr struct, Level int32 +pkg syscall (netbsd-arm64), type Cmsghdr struct, Type int32 +pkg syscall (netbsd-arm64), type Credential struct +pkg syscall (netbsd-arm64), type Credential struct, Gid uint32 +pkg syscall (netbsd-arm64), type Credential struct, Groups []uint32 +pkg syscall (netbsd-arm64), type Credential struct, NoSetGroups bool +pkg syscall (netbsd-arm64), type Credential struct, Uid uint32 +pkg syscall (netbsd-arm64), type Dirent struct +pkg syscall (netbsd-arm64), type Dirent struct, Fileno uint64 +pkg syscall (netbsd-arm64), type Dirent struct, Name [512]int8 +pkg syscall (netbsd-arm64), type Dirent struct, Namlen uint16 +pkg syscall (netbsd-arm64), type Dirent struct, Pad_cgo_0 [3]uint8 +pkg syscall (netbsd-arm64), type Dirent struct, Reclen uint16 +pkg syscall (netbsd-arm64), type Dirent struct, Type uint8 +pkg syscall (netbsd-arm64), type FdSet struct +pkg syscall (netbsd-arm64), type FdSet struct, Bits [8]uint32 +pkg syscall (netbsd-arm64), type Flock_t struct +pkg syscall (netbsd-arm64), type Flock_t struct, Len int64 +pkg syscall (netbsd-arm64), type Flock_t struct, Pid int32 +pkg syscall (netbsd-arm64), type Flock_t struct, Start int64 +pkg syscall (netbsd-arm64), type Flock_t struct, Type int16 +pkg syscall (netbsd-arm64), type Flock_t struct, Whence int16 +pkg syscall (netbsd-arm64), type Fsid struct +pkg syscall (netbsd-arm64), type Fsid struct, X__fsid_val [2]int32 +pkg syscall (netbsd-arm64), type ICMPv6Filter struct +pkg syscall (netbsd-arm64), type ICMPv6Filter struct, Filt [8]uint32 +pkg syscall (netbsd-arm64), type IfaMsghdr struct +pkg syscall (netbsd-arm64), type IfaMsghdr struct, Addrs int32 +pkg syscall (netbsd-arm64), type IfaMsghdr struct, Flags int32 +pkg syscall (netbsd-arm64), type IfaMsghdr struct, Index uint16 +pkg syscall (netbsd-arm64), type IfaMsghdr struct, Metric int32 +pkg syscall (netbsd-arm64), type IfaMsghdr struct, Msglen uint16 +pkg syscall (netbsd-arm64), type IfaMsghdr struct, Pad_cgo_0 [6]uint8 +pkg syscall (netbsd-arm64), type IfaMsghdr struct, Type uint8 +pkg syscall (netbsd-arm64), type IfaMsghdr struct, Version uint8 +pkg syscall (netbsd-arm64), type IfAnnounceMsghdr struct +pkg syscall (netbsd-arm64), type IfAnnounceMsghdr struct, Index uint16 +pkg syscall (netbsd-arm64), type IfAnnounceMsghdr struct, Msglen uint16 +pkg syscall (netbsd-arm64), type IfAnnounceMsghdr struct, Name [16]int8 +pkg syscall (netbsd-arm64), type IfAnnounceMsghdr struct, Type uint8 +pkg syscall (netbsd-arm64), type IfAnnounceMsghdr struct, Version uint8 +pkg syscall (netbsd-arm64), type IfAnnounceMsghdr struct, What uint16 +pkg syscall (netbsd-arm64), type IfData struct +pkg syscall (netbsd-arm64), type IfData struct, Addrlen uint8 +pkg syscall (netbsd-arm64), type IfData struct, Baudrate uint64 +pkg syscall (netbsd-arm64), type IfData struct, Collisions uint64 +pkg syscall (netbsd-arm64), type IfData struct, Hdrlen uint8 +pkg syscall (netbsd-arm64), type IfData struct, Ibytes uint64 +pkg syscall (netbsd-arm64), type IfData struct, Ierrors uint64 +pkg syscall (netbsd-arm64), type IfData struct, Imcasts uint64 +pkg syscall (netbsd-arm64), type IfData struct, Ipackets uint64 +pkg syscall (netbsd-arm64), type IfData struct, Iqdrops uint64 +pkg syscall (netbsd-arm64), type IfData struct, Lastchange Timespec +pkg syscall (netbsd-arm64), type IfData struct, Link_state int32 +pkg syscall (netbsd-arm64), type IfData struct, Metric uint64 +pkg syscall (netbsd-arm64), type IfData struct, Mtu uint64 +pkg syscall (netbsd-arm64), type IfData struct, Noproto uint64 +pkg syscall (netbsd-arm64), type IfData struct, Obytes uint64 +pkg syscall (netbsd-arm64), type IfData struct, Oerrors uint64 +pkg syscall (netbsd-arm64), type IfData struct, Omcasts uint64 +pkg syscall (netbsd-arm64), type IfData struct, Opackets uint64 +pkg syscall (netbsd-arm64), type IfData struct, Pad_cgo_0 [1]uint8 +pkg syscall (netbsd-arm64), type IfData struct, Type uint8 +pkg syscall (netbsd-arm64), type IfMsghdr struct +pkg syscall (netbsd-arm64), type IfMsghdr struct, Addrs int32 +pkg syscall (netbsd-arm64), type IfMsghdr struct, Data IfData +pkg syscall (netbsd-arm64), type IfMsghdr struct, Flags int32 +pkg syscall (netbsd-arm64), type IfMsghdr struct, Index uint16 +pkg syscall (netbsd-arm64), type IfMsghdr struct, Msglen uint16 +pkg syscall (netbsd-arm64), type IfMsghdr struct, Pad_cgo_0 [2]uint8 +pkg syscall (netbsd-arm64), type IfMsghdr struct, Type uint8 +pkg syscall (netbsd-arm64), type IfMsghdr struct, Version uint8 +pkg syscall (netbsd-arm64), type Inet6Pktinfo struct +pkg syscall (netbsd-arm64), type Inet6Pktinfo struct, Addr [16]uint8 +pkg syscall (netbsd-arm64), type Inet6Pktinfo struct, Ifindex uint32 +pkg syscall (netbsd-arm64), type InterfaceAddrMessage struct +pkg syscall (netbsd-arm64), type InterfaceAddrMessage struct, Data []uint8 +pkg syscall (netbsd-arm64), type InterfaceAddrMessage struct, Header IfaMsghdr +pkg syscall (netbsd-arm64), type InterfaceAnnounceMessage struct +pkg syscall (netbsd-arm64), type InterfaceAnnounceMessage struct, Header IfAnnounceMsghdr +pkg syscall (netbsd-arm64), type InterfaceMessage struct +pkg syscall (netbsd-arm64), type InterfaceMessage struct, Data []uint8 +pkg syscall (netbsd-arm64), type InterfaceMessage struct, Header IfMsghdr +pkg syscall (netbsd-arm64), type Iovec struct +pkg syscall (netbsd-arm64), type Iovec struct, Base *uint8 +pkg syscall (netbsd-arm64), type Iovec struct, Len uint64 +pkg syscall (netbsd-arm64), type IPv6MTUInfo struct +pkg syscall (netbsd-arm64), type IPv6MTUInfo struct, Addr RawSockaddrInet6 +pkg syscall (netbsd-arm64), type IPv6MTUInfo struct, Mtu uint32 +pkg syscall (netbsd-arm64), type Kevent_t struct +pkg syscall (netbsd-arm64), type Kevent_t struct, Data int64 +pkg syscall (netbsd-arm64), type Kevent_t struct, Fflags uint32 +pkg syscall (netbsd-arm64), type Kevent_t struct, Filter uint32 +pkg syscall (netbsd-arm64), type Kevent_t struct, Flags uint32 +pkg syscall (netbsd-arm64), type Kevent_t struct, Ident uint64 +pkg syscall (netbsd-arm64), type Kevent_t struct, Pad_cgo_0 [4]uint8 +pkg syscall (netbsd-arm64), type Kevent_t struct, Udata int64 +pkg syscall (netbsd-arm64), type Mclpool [0]uint8 +pkg syscall (netbsd-arm64), type Msghdr struct +pkg syscall (netbsd-arm64), type Msghdr struct, Controllen uint32 +pkg syscall (netbsd-arm64), type Msghdr struct, Control *uint8 +pkg syscall (netbsd-arm64), type Msghdr struct, Flags int32 +pkg syscall (netbsd-arm64), type Msghdr struct, Iov *Iovec +pkg syscall (netbsd-arm64), type Msghdr struct, Iovlen int32 +pkg syscall (netbsd-arm64), type Msghdr struct, Namelen uint32 +pkg syscall (netbsd-arm64), type Msghdr struct, Name *uint8 +pkg syscall (netbsd-arm64), type Msghdr struct, Pad_cgo_0 [4]uint8 +pkg syscall (netbsd-arm64), type Msghdr struct, Pad_cgo_1 [4]uint8 +pkg syscall (netbsd-arm64), type RawSockaddrAny struct, Pad [92]int8 +pkg syscall (netbsd-arm64), type RawSockaddrDatalink struct +pkg syscall (netbsd-arm64), type RawSockaddrDatalink struct, Alen uint8 +pkg syscall (netbsd-arm64), type RawSockaddrDatalink struct, Data [12]int8 +pkg syscall (netbsd-arm64), type RawSockaddrDatalink struct, Family uint8 +pkg syscall (netbsd-arm64), type RawSockaddrDatalink struct, Index uint16 +pkg syscall (netbsd-arm64), type RawSockaddrDatalink struct, Len uint8 +pkg syscall (netbsd-arm64), type RawSockaddrDatalink struct, Nlen uint8 +pkg syscall (netbsd-arm64), type RawSockaddrDatalink struct, Slen uint8 +pkg syscall (netbsd-arm64), type RawSockaddrDatalink struct, Type uint8 +pkg syscall (netbsd-arm64), type RawSockaddrInet4 struct, Family uint8 +pkg syscall (netbsd-arm64), type RawSockaddrInet4 struct, Len uint8 +pkg syscall (netbsd-arm64), type RawSockaddrInet4 struct, Zero [8]int8 +pkg syscall (netbsd-arm64), type RawSockaddrInet6 struct, Family uint8 +pkg syscall (netbsd-arm64), type RawSockaddrInet6 struct, Len uint8 +pkg syscall (netbsd-arm64), type RawSockaddr struct, Data [14]int8 +pkg syscall (netbsd-arm64), type RawSockaddr struct, Family uint8 +pkg syscall (netbsd-arm64), type RawSockaddr struct, Len uint8 +pkg syscall (netbsd-arm64), type RawSockaddrUnix struct, Family uint8 +pkg syscall (netbsd-arm64), type RawSockaddrUnix struct, Len uint8 +pkg syscall (netbsd-arm64), type RawSockaddrUnix struct, Path [104]int8 +pkg syscall (netbsd-arm64), type Rlimit struct +pkg syscall (netbsd-arm64), type Rlimit struct, Cur uint64 +pkg syscall (netbsd-arm64), type Rlimit struct, Max uint64 +pkg syscall (netbsd-arm64), type RouteMessage struct +pkg syscall (netbsd-arm64), type RouteMessage struct, Data []uint8 +pkg syscall (netbsd-arm64), type RouteMessage struct, Header RtMsghdr +pkg syscall (netbsd-arm64), type RoutingMessage interface, unexported methods +pkg syscall (netbsd-arm64), type RtMetrics struct +pkg syscall (netbsd-arm64), type RtMetrics struct, Expire int64 +pkg syscall (netbsd-arm64), type RtMetrics struct, Hopcount uint64 +pkg syscall (netbsd-arm64), type RtMetrics struct, Locks uint64 +pkg syscall (netbsd-arm64), type RtMetrics struct, Mtu uint64 +pkg syscall (netbsd-arm64), type RtMetrics struct, Pksent int64 +pkg syscall (netbsd-arm64), type RtMetrics struct, Recvpipe uint64 +pkg syscall (netbsd-arm64), type RtMetrics struct, Rtt uint64 +pkg syscall (netbsd-arm64), type RtMetrics struct, Rttvar uint64 +pkg syscall (netbsd-arm64), type RtMetrics struct, Sendpipe uint64 +pkg syscall (netbsd-arm64), type RtMetrics struct, Ssthresh uint64 +pkg syscall (netbsd-arm64), type RtMsghdr struct +pkg syscall (netbsd-arm64), type RtMsghdr struct, Addrs int32 +pkg syscall (netbsd-arm64), type RtMsghdr struct, Errno int32 +pkg syscall (netbsd-arm64), type RtMsghdr struct, Flags int32 +pkg syscall (netbsd-arm64), type RtMsghdr struct, Index uint16 +pkg syscall (netbsd-arm64), type RtMsghdr struct, Inits int32 +pkg syscall (netbsd-arm64), type RtMsghdr struct, Msglen uint16 +pkg syscall (netbsd-arm64), type RtMsghdr struct, Pad_cgo_0 [2]uint8 +pkg syscall (netbsd-arm64), type RtMsghdr struct, Pad_cgo_1 [4]uint8 +pkg syscall (netbsd-arm64), type RtMsghdr struct, Pid int32 +pkg syscall (netbsd-arm64), type RtMsghdr struct, Rmx RtMetrics +pkg syscall (netbsd-arm64), type RtMsghdr struct, Seq int32 +pkg syscall (netbsd-arm64), type RtMsghdr struct, Type uint8 +pkg syscall (netbsd-arm64), type RtMsghdr struct, Use int32 +pkg syscall (netbsd-arm64), type RtMsghdr struct, Version uint8 +pkg syscall (netbsd-arm64), type Rusage struct, Idrss int64 +pkg syscall (netbsd-arm64), type Rusage struct, Inblock int64 +pkg syscall (netbsd-arm64), type Rusage struct, Isrss int64 +pkg syscall (netbsd-arm64), type Rusage struct, Ixrss int64 +pkg syscall (netbsd-arm64), type Rusage struct, Majflt int64 +pkg syscall (netbsd-arm64), type Rusage struct, Maxrss int64 +pkg syscall (netbsd-arm64), type Rusage struct, Minflt int64 +pkg syscall (netbsd-arm64), type Rusage struct, Msgrcv int64 +pkg syscall (netbsd-arm64), type Rusage struct, Msgsnd int64 +pkg syscall (netbsd-arm64), type Rusage struct, Nivcsw int64 +pkg syscall (netbsd-arm64), type Rusage struct, Nsignals int64 +pkg syscall (netbsd-arm64), type Rusage struct, Nswap int64 +pkg syscall (netbsd-arm64), type Rusage struct, Nvcsw int64 +pkg syscall (netbsd-arm64), type Rusage struct, Oublock int64 +pkg syscall (netbsd-arm64), type Rusage struct, Stime Timeval +pkg syscall (netbsd-arm64), type Rusage struct, Utime Timeval +pkg syscall (netbsd-arm64), type SockaddrDatalink struct +pkg syscall (netbsd-arm64), type SockaddrDatalink struct, Alen uint8 +pkg syscall (netbsd-arm64), type SockaddrDatalink struct, Data [12]int8 +pkg syscall (netbsd-arm64), type SockaddrDatalink struct, Family uint8 +pkg syscall (netbsd-arm64), type SockaddrDatalink struct, Index uint16 +pkg syscall (netbsd-arm64), type SockaddrDatalink struct, Len uint8 +pkg syscall (netbsd-arm64), type SockaddrDatalink struct, Nlen uint8 +pkg syscall (netbsd-arm64), type SockaddrDatalink struct, Slen uint8 +pkg syscall (netbsd-arm64), type SockaddrDatalink struct, Type uint8 +pkg syscall (netbsd-arm64), type SocketControlMessage struct +pkg syscall (netbsd-arm64), type SocketControlMessage struct, Data []uint8 +pkg syscall (netbsd-arm64), type SocketControlMessage struct, Header Cmsghdr +pkg syscall (netbsd-arm64), type Statfs_t [0]uint8 +pkg syscall (netbsd-arm64), type Stat_t struct +pkg syscall (netbsd-arm64), type Stat_t struct, Atimespec Timespec +pkg syscall (netbsd-arm64), type Stat_t struct, Birthtimespec Timespec +pkg syscall (netbsd-arm64), type Stat_t struct, Blksize uint32 +pkg syscall (netbsd-arm64), type Stat_t struct, Blocks int64 +pkg syscall (netbsd-arm64), type Stat_t struct, Ctimespec Timespec +pkg syscall (netbsd-arm64), type Stat_t struct, Dev uint64 +pkg syscall (netbsd-arm64), type Stat_t struct, Flags uint32 +pkg syscall (netbsd-arm64), type Stat_t struct, Gen uint32 +pkg syscall (netbsd-arm64), type Stat_t struct, Gid uint32 +pkg syscall (netbsd-arm64), type Stat_t struct, Ino uint64 +pkg syscall (netbsd-arm64), type Stat_t struct, Mode uint32 +pkg syscall (netbsd-arm64), type Stat_t struct, Mtimespec Timespec +pkg syscall (netbsd-arm64), type Stat_t struct, Nlink uint32 +pkg syscall (netbsd-arm64), type Stat_t struct, Pad_cgo_0 [4]uint8 +pkg syscall (netbsd-arm64), type Stat_t struct, Pad_cgo_1 [4]uint8 +pkg syscall (netbsd-arm64), type Stat_t struct, Pad_cgo_2 [4]uint8 +pkg syscall (netbsd-arm64), type Stat_t struct, Rdev uint64 +pkg syscall (netbsd-arm64), type Stat_t struct, Size int64 +pkg syscall (netbsd-arm64), type Stat_t struct, Spare [2]uint32 +pkg syscall (netbsd-arm64), type Stat_t struct, Uid uint32 +pkg syscall (netbsd-arm64), type Sysctlnode struct +pkg syscall (netbsd-arm64), type Sysctlnode struct, Flags uint32 +pkg syscall (netbsd-arm64), type Sysctlnode struct, Name [32]int8 +pkg syscall (netbsd-arm64), type Sysctlnode struct, Num int32 +pkg syscall (netbsd-arm64), type Sysctlnode struct, Un [16]uint8 +pkg syscall (netbsd-arm64), type Sysctlnode struct, Ver uint32 +pkg syscall (netbsd-arm64), type Sysctlnode struct, X__rsvd uint32 +pkg syscall (netbsd-arm64), type Sysctlnode struct, X_sysctl_desc [8]uint8 +pkg syscall (netbsd-arm64), type Sysctlnode struct, X_sysctl_func [8]uint8 +pkg syscall (netbsd-arm64), type Sysctlnode struct, X_sysctl_parent [8]uint8 +pkg syscall (netbsd-arm64), type Sysctlnode struct, X_sysctl_size [8]uint8 +pkg syscall (netbsd-arm64), type SysProcAttr struct, Chroot string +pkg syscall (netbsd-arm64), type SysProcAttr struct, Credential *Credential +pkg syscall (netbsd-arm64), type SysProcAttr struct, Ctty int +pkg syscall (netbsd-arm64), type SysProcAttr struct, Foreground bool +pkg syscall (netbsd-arm64), type SysProcAttr struct, Noctty bool +pkg syscall (netbsd-arm64), type SysProcAttr struct, Pgid int +pkg syscall (netbsd-arm64), type SysProcAttr struct, Ptrace bool +pkg syscall (netbsd-arm64), type SysProcAttr struct, Setctty bool +pkg syscall (netbsd-arm64), type SysProcAttr struct, Setpgid bool +pkg syscall (netbsd-arm64), type SysProcAttr struct, Setsid bool +pkg syscall (netbsd-arm64), type Termios struct +pkg syscall (netbsd-arm64), type Termios struct, Cc [20]uint8 +pkg syscall (netbsd-arm64), type Termios struct, Cflag uint32 +pkg syscall (netbsd-arm64), type Termios struct, Iflag uint32 +pkg syscall (netbsd-arm64), type Termios struct, Ispeed int32 +pkg syscall (netbsd-arm64), type Termios struct, Lflag uint32 +pkg syscall (netbsd-arm64), type Termios struct, Oflag uint32 +pkg syscall (netbsd-arm64), type Termios struct, Ospeed int32 +pkg syscall (netbsd-arm64), type Timespec struct, Nsec int64 +pkg syscall (netbsd-arm64), type Timespec struct, Sec int64 +pkg syscall (netbsd-arm64), type Timeval struct, Pad_cgo_0 [4]uint8 +pkg syscall (netbsd-arm64), type Timeval struct, Sec int64 +pkg syscall (netbsd-arm64), type Timeval struct, Usec int32 +pkg syscall (netbsd-arm64), type WaitStatus uint32 +pkg syscall (netbsd-arm64), var Stderr int +pkg syscall (netbsd-arm64), var Stdin int +pkg syscall (netbsd-arm64), var Stdout int +pkg syscall (windows-386), type SysProcAttr struct, ProcessAttributes *SecurityAttributes +pkg syscall (windows-386), type SysProcAttr struct, ThreadAttributes *SecurityAttributes +pkg syscall (windows-amd64), type SysProcAttr struct, ProcessAttributes *SecurityAttributes +pkg syscall (windows-amd64), type SysProcAttr struct, ThreadAttributes *SecurityAttributes +pkg testing, func Init() +pkg testing, method (*B) ReportMetric(float64, string) +pkg testing, type BenchmarkResult struct, Extra map[string]float64 +pkg text/scanner, const AllowDigitSeparators = 1024 +pkg text/scanner, const AllowDigitSeparators ideal-int +pkg text/scanner, const GoTokens = 2036 +pkg text/template, method (ExecError) Unwrap() error +pkg time, method (Duration) Microseconds() int64 +pkg time, method (Duration) Milliseconds() int64 +pkg unicode, const Version = "11.0.0" +pkg unicode, var Dogra *RangeTable +pkg unicode, var Gunjala_Gondi *RangeTable +pkg unicode, var Hanifi_Rohingya *RangeTable +pkg unicode, var Makasar *RangeTable +pkg unicode, var Medefaidrin *RangeTable +pkg unicode, var Old_Sogdian *RangeTable +pkg unicode, var Sogdian *RangeTable diff --git a/api/next.txt b/api/next.txt index 24c4daf1ad..e69de29bb2 100644 --- a/api/next.txt +++ b/api/next.txt @@ -1,8042 +0,0 @@ -pkg bytes, func ToValidUTF8([]uint8, []uint8) []uint8 -pkg crypto/ed25519, const PrivateKeySize = 64 -pkg crypto/ed25519, const PrivateKeySize ideal-int -pkg crypto/ed25519, const PublicKeySize = 32 -pkg crypto/ed25519, const PublicKeySize ideal-int -pkg crypto/ed25519, const SeedSize = 32 -pkg crypto/ed25519, const SeedSize ideal-int -pkg crypto/ed25519, const SignatureSize = 64 -pkg crypto/ed25519, const SignatureSize ideal-int -pkg crypto/ed25519, func GenerateKey(io.Reader) (PublicKey, PrivateKey, error) -pkg crypto/ed25519, func NewKeyFromSeed([]uint8) PrivateKey -pkg crypto/ed25519, func Sign(PrivateKey, []uint8) []uint8 -pkg crypto/ed25519, func Verify(PublicKey, []uint8, []uint8) bool -pkg crypto/ed25519, method (PrivateKey) Public() crypto.PublicKey -pkg crypto/ed25519, method (PrivateKey) Seed() []uint8 -pkg crypto/ed25519, method (PrivateKey) Sign(io.Reader, []uint8, crypto.SignerOpts) ([]uint8, error) -pkg crypto/ed25519, type PrivateKey []uint8 -pkg crypto/ed25519, type PublicKey []uint8 -pkg database/sql, method (*NullInt32) Scan(interface{}) error -pkg database/sql, method (*NullTime) Scan(interface{}) error -pkg database/sql, method (NullInt32) Value() (driver.Value, error) -pkg database/sql, method (NullTime) Value() (driver.Value, error) -pkg database/sql, type NullInt32 struct -pkg database/sql, type NullInt32 struct, Int32 int32 -pkg database/sql, type NullInt32 struct, Valid bool -pkg database/sql, type NullTime struct -pkg database/sql, type NullTime struct, Time time.Time -pkg database/sql, type NullTime struct, Valid bool -pkg debug/dwarf, method (*UnsupportedType) Common() *CommonType -pkg debug/dwarf, method (*UnsupportedType) Size() int64 -pkg debug/dwarf, method (*UnsupportedType) String() string -pkg debug/dwarf, type UnsupportedType struct -pkg debug/dwarf, type UnsupportedType struct, Tag Tag -pkg debug/dwarf, type UnsupportedType struct, embedded CommonType -pkg encoding/csv, method (*ParseError) Unwrap() error -pkg encoding/json, method (*MarshalerError) Unwrap() error -pkg errors, func As(error, interface{}) bool -pkg errors, func Caller(int) Frame -pkg errors, func Is(error, error) bool -pkg errors, func Opaque(error) error -pkg errors, func Unwrap(error) error -pkg errors, method (Frame) Format(Printer) -pkg errors, type Formatter interface { Error, FormatError } -pkg errors, type Formatter interface, Error() string -pkg errors, type Formatter interface, FormatError(Printer) error -pkg errors, type Frame struct -pkg errors, type Printer interface { Detail, Print, Printf } -pkg errors, type Printer interface, Detail() bool -pkg errors, type Printer interface, Print(...interface{}) -pkg errors, type Printer interface, Printf(string, ...interface{}) -pkg errors, type Wrapper interface { Unwrap } -pkg errors, type Wrapper interface, Unwrap() error -pkg go/constant, func Make(interface{}) Value -pkg go/constant, func Val(Value) interface{} -pkg go/token, func IsExported(string) bool -pkg go/token, func IsIdentifier(string) bool -pkg go/token, func IsKeyword(string) bool -pkg log, func Writer() io.Writer -pkg log/syslog (netbsd-arm64), const LOG_ALERT = 1 -pkg log/syslog (netbsd-arm64), const LOG_ALERT Priority -pkg log/syslog (netbsd-arm64), const LOG_AUTH = 32 -pkg log/syslog (netbsd-arm64), const LOG_AUTH Priority -pkg log/syslog (netbsd-arm64), const LOG_AUTHPRIV = 80 -pkg log/syslog (netbsd-arm64), const LOG_AUTHPRIV Priority -pkg log/syslog (netbsd-arm64), const LOG_CRIT = 2 -pkg log/syslog (netbsd-arm64), const LOG_CRIT Priority -pkg log/syslog (netbsd-arm64), const LOG_CRON = 72 -pkg log/syslog (netbsd-arm64), const LOG_CRON Priority -pkg log/syslog (netbsd-arm64), const LOG_DAEMON = 24 -pkg log/syslog (netbsd-arm64), const LOG_DAEMON Priority -pkg log/syslog (netbsd-arm64), const LOG_DEBUG = 7 -pkg log/syslog (netbsd-arm64), const LOG_DEBUG Priority -pkg log/syslog (netbsd-arm64), const LOG_EMERG = 0 -pkg log/syslog (netbsd-arm64), const LOG_EMERG Priority -pkg log/syslog (netbsd-arm64), const LOG_ERR = 3 -pkg log/syslog (netbsd-arm64), const LOG_ERR Priority -pkg log/syslog (netbsd-arm64), const LOG_FTP = 88 -pkg log/syslog (netbsd-arm64), const LOG_FTP Priority -pkg log/syslog (netbsd-arm64), const LOG_INFO = 6 -pkg log/syslog (netbsd-arm64), const LOG_INFO Priority -pkg log/syslog (netbsd-arm64), const LOG_KERN = 0 -pkg log/syslog (netbsd-arm64), const LOG_KERN Priority -pkg log/syslog (netbsd-arm64), const LOG_LOCAL0 = 128 -pkg log/syslog (netbsd-arm64), const LOG_LOCAL0 Priority -pkg log/syslog (netbsd-arm64), const LOG_LOCAL1 = 136 -pkg log/syslog (netbsd-arm64), const LOG_LOCAL1 Priority -pkg log/syslog (netbsd-arm64), const LOG_LOCAL2 = 144 -pkg log/syslog (netbsd-arm64), const LOG_LOCAL2 Priority -pkg log/syslog (netbsd-arm64), const LOG_LOCAL3 = 152 -pkg log/syslog (netbsd-arm64), const LOG_LOCAL3 Priority -pkg log/syslog (netbsd-arm64), const LOG_LOCAL4 = 160 -pkg log/syslog (netbsd-arm64), const LOG_LOCAL4 Priority -pkg log/syslog (netbsd-arm64), const LOG_LOCAL5 = 168 -pkg log/syslog (netbsd-arm64), const LOG_LOCAL5 Priority -pkg log/syslog (netbsd-arm64), const LOG_LOCAL6 = 176 -pkg log/syslog (netbsd-arm64), const LOG_LOCAL6 Priority -pkg log/syslog (netbsd-arm64), const LOG_LOCAL7 = 184 -pkg log/syslog (netbsd-arm64), const LOG_LOCAL7 Priority -pkg log/syslog (netbsd-arm64), const LOG_LPR = 48 -pkg log/syslog (netbsd-arm64), const LOG_LPR Priority -pkg log/syslog (netbsd-arm64), const LOG_MAIL = 16 -pkg log/syslog (netbsd-arm64), const LOG_MAIL Priority -pkg log/syslog (netbsd-arm64), const LOG_NEWS = 56 -pkg log/syslog (netbsd-arm64), const LOG_NEWS Priority -pkg log/syslog (netbsd-arm64), const LOG_NOTICE = 5 -pkg log/syslog (netbsd-arm64), const LOG_NOTICE Priority -pkg log/syslog (netbsd-arm64), const LOG_SYSLOG = 40 -pkg log/syslog (netbsd-arm64), const LOG_SYSLOG Priority -pkg log/syslog (netbsd-arm64), const LOG_USER = 8 -pkg log/syslog (netbsd-arm64), const LOG_USER Priority -pkg log/syslog (netbsd-arm64), const LOG_UUCP = 64 -pkg log/syslog (netbsd-arm64), const LOG_UUCP Priority -pkg log/syslog (netbsd-arm64), const LOG_WARNING = 4 -pkg log/syslog (netbsd-arm64), const LOG_WARNING Priority -pkg log/syslog (netbsd-arm64), func Dial(string, string, Priority, string) (*Writer, error) -pkg log/syslog (netbsd-arm64), func New(Priority, string) (*Writer, error) -pkg log/syslog (netbsd-arm64), func NewLogger(Priority, int) (*log.Logger, error) -pkg log/syslog (netbsd-arm64), method (*Writer) Alert(string) error -pkg log/syslog (netbsd-arm64), method (*Writer) Close() error -pkg log/syslog (netbsd-arm64), method (*Writer) Crit(string) error -pkg log/syslog (netbsd-arm64), method (*Writer) Debug(string) error -pkg log/syslog (netbsd-arm64), method (*Writer) Emerg(string) error -pkg log/syslog (netbsd-arm64), method (*Writer) Err(string) error -pkg log/syslog (netbsd-arm64), method (*Writer) Info(string) error -pkg log/syslog (netbsd-arm64), method (*Writer) Notice(string) error -pkg log/syslog (netbsd-arm64), method (*Writer) Warning(string) error -pkg log/syslog (netbsd-arm64), method (*Writer) Write([]uint8) (int, error) -pkg log/syslog (netbsd-arm64), type Priority int -pkg log/syslog (netbsd-arm64), type Writer struct -pkg log/syslog (netbsd-arm64-cgo), const LOG_ALERT = 1 -pkg log/syslog (netbsd-arm64-cgo), const LOG_ALERT Priority -pkg log/syslog (netbsd-arm64-cgo), const LOG_AUTH = 32 -pkg log/syslog (netbsd-arm64-cgo), const LOG_AUTH Priority -pkg log/syslog (netbsd-arm64-cgo), const LOG_AUTHPRIV = 80 -pkg log/syslog (netbsd-arm64-cgo), const LOG_AUTHPRIV Priority -pkg log/syslog (netbsd-arm64-cgo), const LOG_CRIT = 2 -pkg log/syslog (netbsd-arm64-cgo), const LOG_CRIT Priority -pkg log/syslog (netbsd-arm64-cgo), const LOG_CRON = 72 -pkg log/syslog (netbsd-arm64-cgo), const LOG_CRON Priority -pkg log/syslog (netbsd-arm64-cgo), const LOG_DAEMON = 24 -pkg log/syslog (netbsd-arm64-cgo), const LOG_DAEMON Priority -pkg log/syslog (netbsd-arm64-cgo), const LOG_DEBUG = 7 -pkg log/syslog (netbsd-arm64-cgo), const LOG_DEBUG Priority -pkg log/syslog (netbsd-arm64-cgo), const LOG_EMERG = 0 -pkg log/syslog (netbsd-arm64-cgo), const LOG_EMERG Priority -pkg log/syslog (netbsd-arm64-cgo), const LOG_ERR = 3 -pkg log/syslog (netbsd-arm64-cgo), const LOG_ERR Priority -pkg log/syslog (netbsd-arm64-cgo), const LOG_FTP = 88 -pkg log/syslog (netbsd-arm64-cgo), const LOG_FTP Priority -pkg log/syslog (netbsd-arm64-cgo), const LOG_INFO = 6 -pkg log/syslog (netbsd-arm64-cgo), const LOG_INFO Priority -pkg log/syslog (netbsd-arm64-cgo), const LOG_KERN = 0 -pkg log/syslog (netbsd-arm64-cgo), const LOG_KERN Priority -pkg log/syslog (netbsd-arm64-cgo), const LOG_LOCAL0 = 128 -pkg log/syslog (netbsd-arm64-cgo), const LOG_LOCAL0 Priority -pkg log/syslog (netbsd-arm64-cgo), const LOG_LOCAL1 = 136 -pkg log/syslog (netbsd-arm64-cgo), const LOG_LOCAL1 Priority -pkg log/syslog (netbsd-arm64-cgo), const LOG_LOCAL2 = 144 -pkg log/syslog (netbsd-arm64-cgo), const LOG_LOCAL2 Priority -pkg log/syslog (netbsd-arm64-cgo), const LOG_LOCAL3 = 152 -pkg log/syslog (netbsd-arm64-cgo), const LOG_LOCAL3 Priority -pkg log/syslog (netbsd-arm64-cgo), const LOG_LOCAL4 = 160 -pkg log/syslog (netbsd-arm64-cgo), const LOG_LOCAL4 Priority -pkg log/syslog (netbsd-arm64-cgo), const LOG_LOCAL5 = 168 -pkg log/syslog (netbsd-arm64-cgo), const LOG_LOCAL5 Priority -pkg log/syslog (netbsd-arm64-cgo), const LOG_LOCAL6 = 176 -pkg log/syslog (netbsd-arm64-cgo), const LOG_LOCAL6 Priority -pkg log/syslog (netbsd-arm64-cgo), const LOG_LOCAL7 = 184 -pkg log/syslog (netbsd-arm64-cgo), const LOG_LOCAL7 Priority -pkg log/syslog (netbsd-arm64-cgo), const LOG_LPR = 48 -pkg log/syslog (netbsd-arm64-cgo), const LOG_LPR Priority -pkg log/syslog (netbsd-arm64-cgo), const LOG_MAIL = 16 -pkg log/syslog (netbsd-arm64-cgo), const LOG_MAIL Priority -pkg log/syslog (netbsd-arm64-cgo), const LOG_NEWS = 56 -pkg log/syslog (netbsd-arm64-cgo), const LOG_NEWS Priority -pkg log/syslog (netbsd-arm64-cgo), const LOG_NOTICE = 5 -pkg log/syslog (netbsd-arm64-cgo), const LOG_NOTICE Priority -pkg log/syslog (netbsd-arm64-cgo), const LOG_SYSLOG = 40 -pkg log/syslog (netbsd-arm64-cgo), const LOG_SYSLOG Priority -pkg log/syslog (netbsd-arm64-cgo), const LOG_USER = 8 -pkg log/syslog (netbsd-arm64-cgo), const LOG_USER Priority -pkg log/syslog (netbsd-arm64-cgo), const LOG_UUCP = 64 -pkg log/syslog (netbsd-arm64-cgo), const LOG_UUCP Priority -pkg log/syslog (netbsd-arm64-cgo), const LOG_WARNING = 4 -pkg log/syslog (netbsd-arm64-cgo), const LOG_WARNING Priority -pkg log/syslog (netbsd-arm64-cgo), func Dial(string, string, Priority, string) (*Writer, error) -pkg log/syslog (netbsd-arm64-cgo), func New(Priority, string) (*Writer, error) -pkg log/syslog (netbsd-arm64-cgo), func NewLogger(Priority, int) (*log.Logger, error) -pkg log/syslog (netbsd-arm64-cgo), method (*Writer) Alert(string) error -pkg log/syslog (netbsd-arm64-cgo), method (*Writer) Close() error -pkg log/syslog (netbsd-arm64-cgo), method (*Writer) Crit(string) error -pkg log/syslog (netbsd-arm64-cgo), method (*Writer) Debug(string) error -pkg log/syslog (netbsd-arm64-cgo), method (*Writer) Emerg(string) error -pkg log/syslog (netbsd-arm64-cgo), method (*Writer) Err(string) error -pkg log/syslog (netbsd-arm64-cgo), method (*Writer) Info(string) error -pkg log/syslog (netbsd-arm64-cgo), method (*Writer) Notice(string) error -pkg log/syslog (netbsd-arm64-cgo), method (*Writer) Warning(string) error -pkg log/syslog (netbsd-arm64-cgo), method (*Writer) Write([]uint8) (int, error) -pkg log/syslog (netbsd-arm64-cgo), type Priority int -pkg log/syslog (netbsd-arm64-cgo), type Writer struct -pkg math/big, method (*Int) TrailingZeroBits() uint -pkg math/big, method (*Rat) SetUint64(uint64) *Rat -pkg net, method (*DNSConfigError) Unwrap() error -pkg net, method (*DNSError) Is(error) bool -pkg net, method (*OpError) Is(error) bool -pkg net, method (*OpError) Unwrap() error -pkg net, type DNSError struct, IsNotFound bool -pkg net, type ListenConfig struct, KeepAlive time.Duration -pkg net/http, const SameSiteNoneMode = 4 -pkg net/http, const SameSiteNoneMode SameSite -pkg net/http, const StatusEarlyHints = 103 -pkg net/http, const StatusEarlyHints ideal-int -pkg net/http, func NewRequestWithContext(context.Context, string, string, io.Reader) (*Request, error) -pkg net/http, method (*Request) Clone(context.Context) *Request -pkg net/http, method (*Transport) Clone() *Transport -pkg net/http, method (Header) Clone() Header -pkg net/http, type Server struct, BaseContext func(net.Listener) context.Context -pkg net/http, type Server struct, ConnContext func(context.Context, net.Conn) context.Context -pkg net/http, type Transport struct, ForceAttemptHTTP2 bool -pkg net/http, type Transport struct, ReadBufferSize int -pkg net/http, type Transport struct, WriteBufferSize int -pkg net/url, method (*Error) Unwrap() error -pkg os (netbsd-arm64), const DevNull = "/dev/null" -pkg os (netbsd-arm64), const O_APPEND = 8 -pkg os (netbsd-arm64), const O_CREATE = 512 -pkg os (netbsd-arm64), const O_EXCL = 2048 -pkg os (netbsd-arm64), const O_SYNC = 128 -pkg os (netbsd-arm64), const O_TRUNC = 1024 -pkg os (netbsd-arm64), const PathListSeparator = 58 -pkg os (netbsd-arm64), const PathSeparator = 47 -pkg os (netbsd-arm64-cgo), const DevNull = "/dev/null" -pkg os (netbsd-arm64-cgo), const O_APPEND = 8 -pkg os (netbsd-arm64-cgo), const O_CREATE = 512 -pkg os (netbsd-arm64-cgo), const O_EXCL = 2048 -pkg os (netbsd-arm64-cgo), const O_SYNC = 128 -pkg os (netbsd-arm64-cgo), const O_TRUNC = 1024 -pkg os (netbsd-arm64-cgo), const PathListSeparator = 58 -pkg os (netbsd-arm64-cgo), const PathSeparator = 47 -pkg os, func UserConfigDir() (string, error) -pkg os, method (*LinkError) Unwrap() error -pkg os, method (*PathError) Unwrap() error -pkg os, method (*SyscallError) Unwrap() error -pkg os, var ErrTemporary error -pkg os, var ErrTimeout error -pkg os/exec, method (*Cmd) String() string -pkg os/exec, method (*Error) Unwrap() error -pkg path/filepath (netbsd-arm64), const ListSeparator = 58 -pkg path/filepath (netbsd-arm64), const Separator = 47 -pkg path/filepath (netbsd-arm64-cgo), const ListSeparator = 58 -pkg path/filepath (netbsd-arm64-cgo), const Separator = 47 -pkg reflect, method (Value) IsZero() bool -pkg runtime (netbsd-arm64), const GOARCH = "arm64" -pkg runtime (netbsd-arm64), const GOOS = "netbsd" -pkg runtime (netbsd-arm64-cgo), const GOARCH = "arm64" -pkg runtime (netbsd-arm64-cgo), const GOOS = "netbsd" -pkg strings, func ToValidUTF8(string, string) string -pkg syscall (netbsd-arm64), const AF_APPLETALK = 16 -pkg syscall (netbsd-arm64), const AF_APPLETALK ideal-int -pkg syscall (netbsd-arm64), const AF_ARP = 28 -pkg syscall (netbsd-arm64), const AF_ARP ideal-int -pkg syscall (netbsd-arm64), const AF_BLUETOOTH = 31 -pkg syscall (netbsd-arm64), const AF_BLUETOOTH ideal-int -pkg syscall (netbsd-arm64), const AF_CCITT = 10 -pkg syscall (netbsd-arm64), const AF_CCITT ideal-int -pkg syscall (netbsd-arm64), const AF_CHAOS = 5 -pkg syscall (netbsd-arm64), const AF_CHAOS ideal-int -pkg syscall (netbsd-arm64), const AF_CNT = 21 -pkg syscall (netbsd-arm64), const AF_CNT ideal-int -pkg syscall (netbsd-arm64), const AF_COIP = 20 -pkg syscall (netbsd-arm64), const AF_COIP ideal-int -pkg syscall (netbsd-arm64), const AF_DATAKIT = 9 -pkg syscall (netbsd-arm64), const AF_DATAKIT ideal-int -pkg syscall (netbsd-arm64), const AF_DECnet = 12 -pkg syscall (netbsd-arm64), const AF_DECnet ideal-int -pkg syscall (netbsd-arm64), const AF_DLI = 13 -pkg syscall (netbsd-arm64), const AF_DLI ideal-int -pkg syscall (netbsd-arm64), const AF_E164 = 26 -pkg syscall (netbsd-arm64), const AF_E164 ideal-int -pkg syscall (netbsd-arm64), const AF_ECMA = 8 -pkg syscall (netbsd-arm64), const AF_ECMA ideal-int -pkg syscall (netbsd-arm64), const AF_HYLINK = 15 -pkg syscall (netbsd-arm64), const AF_HYLINK ideal-int -pkg syscall (netbsd-arm64), const AF_IEEE80211 = 32 -pkg syscall (netbsd-arm64), const AF_IEEE80211 ideal-int -pkg syscall (netbsd-arm64), const AF_IMPLINK = 3 -pkg syscall (netbsd-arm64), const AF_IMPLINK ideal-int -pkg syscall (netbsd-arm64), const AF_INET6 = 24 -pkg syscall (netbsd-arm64), const AF_IPX = 23 -pkg syscall (netbsd-arm64), const AF_IPX ideal-int -pkg syscall (netbsd-arm64), const AF_ISDN = 26 -pkg syscall (netbsd-arm64), const AF_ISDN ideal-int -pkg syscall (netbsd-arm64), const AF_ISO = 7 -pkg syscall (netbsd-arm64), const AF_ISO ideal-int -pkg syscall (netbsd-arm64), const AF_LAT = 14 -pkg syscall (netbsd-arm64), const AF_LAT ideal-int -pkg syscall (netbsd-arm64), const AF_LINK = 18 -pkg syscall (netbsd-arm64), const AF_LINK ideal-int -pkg syscall (netbsd-arm64), const AF_LOCAL = 1 -pkg syscall (netbsd-arm64), const AF_LOCAL ideal-int -pkg syscall (netbsd-arm64), const AF_MAX = 35 -pkg syscall (netbsd-arm64), const AF_MAX ideal-int -pkg syscall (netbsd-arm64), const AF_MPLS = 33 -pkg syscall (netbsd-arm64), const AF_MPLS ideal-int -pkg syscall (netbsd-arm64), const AF_NATM = 27 -pkg syscall (netbsd-arm64), const AF_NATM ideal-int -pkg syscall (netbsd-arm64), const AF_NS = 6 -pkg syscall (netbsd-arm64), const AF_NS ideal-int -pkg syscall (netbsd-arm64), const AF_OROUTE = 17 -pkg syscall (netbsd-arm64), const AF_OROUTE ideal-int -pkg syscall (netbsd-arm64), const AF_OSI = 7 -pkg syscall (netbsd-arm64), const AF_OSI ideal-int -pkg syscall (netbsd-arm64), const AF_PUP = 4 -pkg syscall (netbsd-arm64), const AF_PUP ideal-int -pkg syscall (netbsd-arm64), const AF_ROUTE = 34 -pkg syscall (netbsd-arm64), const AF_ROUTE ideal-int -pkg syscall (netbsd-arm64), const AF_SNA = 11 -pkg syscall (netbsd-arm64), const AF_SNA ideal-int -pkg syscall (netbsd-arm64), const ARPHRD_ARCNET = 7 -pkg syscall (netbsd-arm64), const ARPHRD_ARCNET ideal-int -pkg syscall (netbsd-arm64), const ARPHRD_ETHER = 1 -pkg syscall (netbsd-arm64), const ARPHRD_ETHER ideal-int -pkg syscall (netbsd-arm64), const ARPHRD_FRELAY = 15 -pkg syscall (netbsd-arm64), const ARPHRD_FRELAY ideal-int -pkg syscall (netbsd-arm64), const ARPHRD_IEEE1394 = 24 -pkg syscall (netbsd-arm64), const ARPHRD_IEEE1394 ideal-int -pkg syscall (netbsd-arm64), const ARPHRD_IEEE802 = 6 -pkg syscall (netbsd-arm64), const ARPHRD_IEEE802 ideal-int -pkg syscall (netbsd-arm64), const ARPHRD_STRIP = 23 -pkg syscall (netbsd-arm64), const ARPHRD_STRIP ideal-int -pkg syscall (netbsd-arm64), const B0 = 0 -pkg syscall (netbsd-arm64), const B0 ideal-int -pkg syscall (netbsd-arm64), const B110 = 110 -pkg syscall (netbsd-arm64), const B110 ideal-int -pkg syscall (netbsd-arm64), const B115200 = 115200 -pkg syscall (netbsd-arm64), const B115200 ideal-int -pkg syscall (netbsd-arm64), const B1200 = 1200 -pkg syscall (netbsd-arm64), const B1200 ideal-int -pkg syscall (netbsd-arm64), const B134 = 134 -pkg syscall (netbsd-arm64), const B134 ideal-int -pkg syscall (netbsd-arm64), const B14400 = 14400 -pkg syscall (netbsd-arm64), const B14400 ideal-int -pkg syscall (netbsd-arm64), const B150 = 150 -pkg syscall (netbsd-arm64), const B150 ideal-int -pkg syscall (netbsd-arm64), const B1800 = 1800 -pkg syscall (netbsd-arm64), const B1800 ideal-int -pkg syscall (netbsd-arm64), const B19200 = 19200 -pkg syscall (netbsd-arm64), const B19200 ideal-int -pkg syscall (netbsd-arm64), const B200 = 200 -pkg syscall (netbsd-arm64), const B200 ideal-int -pkg syscall (netbsd-arm64), const B230400 = 230400 -pkg syscall (netbsd-arm64), const B230400 ideal-int -pkg syscall (netbsd-arm64), const B2400 = 2400 -pkg syscall (netbsd-arm64), const B2400 ideal-int -pkg syscall (netbsd-arm64), const B28800 = 28800 -pkg syscall (netbsd-arm64), const B28800 ideal-int -pkg syscall (netbsd-arm64), const B300 = 300 -pkg syscall (netbsd-arm64), const B300 ideal-int -pkg syscall (netbsd-arm64), const B38400 = 38400 -pkg syscall (netbsd-arm64), const B38400 ideal-int -pkg syscall (netbsd-arm64), const B460800 = 460800 -pkg syscall (netbsd-arm64), const B460800 ideal-int -pkg syscall (netbsd-arm64), const B4800 = 4800 -pkg syscall (netbsd-arm64), const B4800 ideal-int -pkg syscall (netbsd-arm64), const B50 = 50 -pkg syscall (netbsd-arm64), const B50 ideal-int -pkg syscall (netbsd-arm64), const B57600 = 57600 -pkg syscall (netbsd-arm64), const B57600 ideal-int -pkg syscall (netbsd-arm64), const B600 = 600 -pkg syscall (netbsd-arm64), const B600 ideal-int -pkg syscall (netbsd-arm64), const B7200 = 7200 -pkg syscall (netbsd-arm64), const B7200 ideal-int -pkg syscall (netbsd-arm64), const B75 = 75 -pkg syscall (netbsd-arm64), const B75 ideal-int -pkg syscall (netbsd-arm64), const B76800 = 76800 -pkg syscall (netbsd-arm64), const B76800 ideal-int -pkg syscall (netbsd-arm64), const B921600 = 921600 -pkg syscall (netbsd-arm64), const B921600 ideal-int -pkg syscall (netbsd-arm64), const B9600 = 9600 -pkg syscall (netbsd-arm64), const B9600 ideal-int -pkg syscall (netbsd-arm64), const BIOCFEEDBACK = 2147762813 -pkg syscall (netbsd-arm64), const BIOCFEEDBACK ideal-int -pkg syscall (netbsd-arm64), const BIOCFLUSH = 536887912 -pkg syscall (netbsd-arm64), const BIOCFLUSH ideal-int -pkg syscall (netbsd-arm64), const BIOCGBLEN = 1074020966 -pkg syscall (netbsd-arm64), const BIOCGBLEN ideal-int -pkg syscall (netbsd-arm64), const BIOCGDLT = 1074020970 -pkg syscall (netbsd-arm64), const BIOCGDLT ideal-int -pkg syscall (netbsd-arm64), const BIOCGDLTLIST = 3222291063 -pkg syscall (netbsd-arm64), const BIOCGDLTLIST ideal-int -pkg syscall (netbsd-arm64), const BIOCGETIF = 1083196011 -pkg syscall (netbsd-arm64), const BIOCGETIF ideal-int -pkg syscall (netbsd-arm64), const BIOCGFEEDBACK = 1074020988 -pkg syscall (netbsd-arm64), const BIOCGFEEDBACK ideal-int -pkg syscall (netbsd-arm64), const BIOCGHDRCMPLT = 1074020980 -pkg syscall (netbsd-arm64), const BIOCGHDRCMPLT ideal-int -pkg syscall (netbsd-arm64), const BIOCGRTIMEOUT = 1074807419 -pkg syscall (netbsd-arm64), const BIOCGRTIMEOUT ideal-int -pkg syscall (netbsd-arm64), const BIOCGSEESENT = 1074020984 -pkg syscall (netbsd-arm64), const BIOCGSEESENT ideal-int -pkg syscall (netbsd-arm64), const BIOCGSTATS = 1082147439 -pkg syscall (netbsd-arm64), const BIOCGSTATS ideal-int -pkg syscall (netbsd-arm64), const BIOCGSTATSOLD = 1074283119 -pkg syscall (netbsd-arm64), const BIOCGSTATSOLD ideal-int -pkg syscall (netbsd-arm64), const BIOCIMMEDIATE = 2147762800 -pkg syscall (netbsd-arm64), const BIOCIMMEDIATE ideal-int -pkg syscall (netbsd-arm64), const BIOCPROMISC = 536887913 -pkg syscall (netbsd-arm64), const BIOCPROMISC ideal-int -pkg syscall (netbsd-arm64), const BIOCSBLEN = 3221504614 -pkg syscall (netbsd-arm64), const BIOCSBLEN ideal-int -pkg syscall (netbsd-arm64), const BIOCSDLT = 2147762806 -pkg syscall (netbsd-arm64), const BIOCSDLT ideal-int -pkg syscall (netbsd-arm64), const BIOCSETF = 2148549223 -pkg syscall (netbsd-arm64), const BIOCSETF ideal-int -pkg syscall (netbsd-arm64), const BIOCSETIF = 2156937836 -pkg syscall (netbsd-arm64), const BIOCSETIF ideal-int -pkg syscall (netbsd-arm64), const BIOCSFEEDBACK = 2147762813 -pkg syscall (netbsd-arm64), const BIOCSFEEDBACK ideal-int -pkg syscall (netbsd-arm64), const BIOCSHDRCMPLT = 2147762805 -pkg syscall (netbsd-arm64), const BIOCSHDRCMPLT ideal-int -pkg syscall (netbsd-arm64), const BIOCSRTIMEOUT = 2148549242 -pkg syscall (netbsd-arm64), const BIOCSRTIMEOUT ideal-int -pkg syscall (netbsd-arm64), const BIOCSSEESENT = 2147762809 -pkg syscall (netbsd-arm64), const BIOCSSEESENT ideal-int -pkg syscall (netbsd-arm64), const BIOCSTCPF = 2148549234 -pkg syscall (netbsd-arm64), const BIOCSTCPF ideal-int -pkg syscall (netbsd-arm64), const BIOCSUDPF = 2148549235 -pkg syscall (netbsd-arm64), const BIOCSUDPF ideal-int -pkg syscall (netbsd-arm64), const BIOCVERSION = 1074020977 -pkg syscall (netbsd-arm64), const BIOCVERSION ideal-int -pkg syscall (netbsd-arm64), const BPF_A = 16 -pkg syscall (netbsd-arm64), const BPF_A ideal-int -pkg syscall (netbsd-arm64), const BPF_ABS = 32 -pkg syscall (netbsd-arm64), const BPF_ABS ideal-int -pkg syscall (netbsd-arm64), const BPF_ADD = 0 -pkg syscall (netbsd-arm64), const BPF_ADD ideal-int -pkg syscall (netbsd-arm64), const BPF_ALIGNMENT = 8 -pkg syscall (netbsd-arm64), const BPF_ALIGNMENT ideal-int -pkg syscall (netbsd-arm64), const BPF_ALIGNMENT32 = 4 -pkg syscall (netbsd-arm64), const BPF_ALIGNMENT32 ideal-int -pkg syscall (netbsd-arm64), const BPF_ALU = 4 -pkg syscall (netbsd-arm64), const BPF_ALU ideal-int -pkg syscall (netbsd-arm64), const BPF_AND = 80 -pkg syscall (netbsd-arm64), const BPF_AND ideal-int -pkg syscall (netbsd-arm64), const BPF_B = 16 -pkg syscall (netbsd-arm64), const BPF_B ideal-int -pkg syscall (netbsd-arm64), const BPF_DFLTBUFSIZE = 1048576 -pkg syscall (netbsd-arm64), const BPF_DFLTBUFSIZE ideal-int -pkg syscall (netbsd-arm64), const BPF_DIV = 48 -pkg syscall (netbsd-arm64), const BPF_DIV ideal-int -pkg syscall (netbsd-arm64), const BPF_H = 8 -pkg syscall (netbsd-arm64), const BPF_H ideal-int -pkg syscall (netbsd-arm64), const BPF_IMM = 0 -pkg syscall (netbsd-arm64), const BPF_IMM ideal-int -pkg syscall (netbsd-arm64), const BPF_IND = 64 -pkg syscall (netbsd-arm64), const BPF_IND ideal-int -pkg syscall (netbsd-arm64), const BPF_JA = 0 -pkg syscall (netbsd-arm64), const BPF_JA ideal-int -pkg syscall (netbsd-arm64), const BPF_JEQ = 16 -pkg syscall (netbsd-arm64), const BPF_JEQ ideal-int -pkg syscall (netbsd-arm64), const BPF_JGE = 48 -pkg syscall (netbsd-arm64), const BPF_JGE ideal-int -pkg syscall (netbsd-arm64), const BPF_JGT = 32 -pkg syscall (netbsd-arm64), const BPF_JGT ideal-int -pkg syscall (netbsd-arm64), const BPF_JMP = 5 -pkg syscall (netbsd-arm64), const BPF_JMP ideal-int -pkg syscall (netbsd-arm64), const BPF_JSET = 64 -pkg syscall (netbsd-arm64), const BPF_JSET ideal-int -pkg syscall (netbsd-arm64), const BPF_K = 0 -pkg syscall (netbsd-arm64), const BPF_K ideal-int -pkg syscall (netbsd-arm64), const BPF_LD = 0 -pkg syscall (netbsd-arm64), const BPF_LD ideal-int -pkg syscall (netbsd-arm64), const BPF_LDX = 1 -pkg syscall (netbsd-arm64), const BPF_LDX ideal-int -pkg syscall (netbsd-arm64), const BPF_LEN = 128 -pkg syscall (netbsd-arm64), const BPF_LEN ideal-int -pkg syscall (netbsd-arm64), const BPF_LSH = 96 -pkg syscall (netbsd-arm64), const BPF_LSH ideal-int -pkg syscall (netbsd-arm64), const BPF_MAJOR_VERSION = 1 -pkg syscall (netbsd-arm64), const BPF_MAJOR_VERSION ideal-int -pkg syscall (netbsd-arm64), const BPF_MAXBUFSIZE = 16777216 -pkg syscall (netbsd-arm64), const BPF_MAXBUFSIZE ideal-int -pkg syscall (netbsd-arm64), const BPF_MAXINSNS = 512 -pkg syscall (netbsd-arm64), const BPF_MAXINSNS ideal-int -pkg syscall (netbsd-arm64), const BPF_MEM = 96 -pkg syscall (netbsd-arm64), const BPF_MEM ideal-int -pkg syscall (netbsd-arm64), const BPF_MEMWORDS = 16 -pkg syscall (netbsd-arm64), const BPF_MEMWORDS ideal-int -pkg syscall (netbsd-arm64), const BPF_MINBUFSIZE = 32 -pkg syscall (netbsd-arm64), const BPF_MINBUFSIZE ideal-int -pkg syscall (netbsd-arm64), const BPF_MINOR_VERSION = 1 -pkg syscall (netbsd-arm64), const BPF_MINOR_VERSION ideal-int -pkg syscall (netbsd-arm64), const BPF_MISC = 7 -pkg syscall (netbsd-arm64), const BPF_MISC ideal-int -pkg syscall (netbsd-arm64), const BPF_MSH = 160 -pkg syscall (netbsd-arm64), const BPF_MSH ideal-int -pkg syscall (netbsd-arm64), const BPF_MUL = 32 -pkg syscall (netbsd-arm64), const BPF_MUL ideal-int -pkg syscall (netbsd-arm64), const BPF_NEG = 128 -pkg syscall (netbsd-arm64), const BPF_NEG ideal-int -pkg syscall (netbsd-arm64), const BPF_OR = 64 -pkg syscall (netbsd-arm64), const BPF_OR ideal-int -pkg syscall (netbsd-arm64), const BPF_RELEASE = 199606 -pkg syscall (netbsd-arm64), const BPF_RELEASE ideal-int -pkg syscall (netbsd-arm64), const BPF_RET = 6 -pkg syscall (netbsd-arm64), const BPF_RET ideal-int -pkg syscall (netbsd-arm64), const BPF_RSH = 112 -pkg syscall (netbsd-arm64), const BPF_RSH ideal-int -pkg syscall (netbsd-arm64), const BPF_ST = 2 -pkg syscall (netbsd-arm64), const BPF_ST ideal-int -pkg syscall (netbsd-arm64), const BPF_STX = 3 -pkg syscall (netbsd-arm64), const BPF_STX ideal-int -pkg syscall (netbsd-arm64), const BPF_SUB = 16 -pkg syscall (netbsd-arm64), const BPF_SUB ideal-int -pkg syscall (netbsd-arm64), const BPF_TAX = 0 -pkg syscall (netbsd-arm64), const BPF_TAX ideal-int -pkg syscall (netbsd-arm64), const BPF_TXA = 128 -pkg syscall (netbsd-arm64), const BPF_TXA ideal-int -pkg syscall (netbsd-arm64), const BPF_W = 0 -pkg syscall (netbsd-arm64), const BPF_W ideal-int -pkg syscall (netbsd-arm64), const BPF_X = 8 -pkg syscall (netbsd-arm64), const BPF_X ideal-int -pkg syscall (netbsd-arm64), const BRKINT = 2 -pkg syscall (netbsd-arm64), const BRKINT ideal-int -pkg syscall (netbsd-arm64), const CFLUSH = 15 -pkg syscall (netbsd-arm64), const CFLUSH ideal-int -pkg syscall (netbsd-arm64), const CLOCAL = 32768 -pkg syscall (netbsd-arm64), const CLOCAL ideal-int -pkg syscall (netbsd-arm64), const CLONE_CSIGNAL = 255 -pkg syscall (netbsd-arm64), const CLONE_CSIGNAL ideal-int -pkg syscall (netbsd-arm64), const CLONE_FILES = 1024 -pkg syscall (netbsd-arm64), const CLONE_FILES ideal-int -pkg syscall (netbsd-arm64), const CLONE_FS = 512 -pkg syscall (netbsd-arm64), const CLONE_FS ideal-int -pkg syscall (netbsd-arm64), const CLONE_PID = 4096 -pkg syscall (netbsd-arm64), const CLONE_PID ideal-int -pkg syscall (netbsd-arm64), const CLONE_PTRACE = 8192 -pkg syscall (netbsd-arm64), const CLONE_PTRACE ideal-int -pkg syscall (netbsd-arm64), const CLONE_SIGHAND = 2048 -pkg syscall (netbsd-arm64), const CLONE_SIGHAND ideal-int -pkg syscall (netbsd-arm64), const CLONE_VFORK = 16384 -pkg syscall (netbsd-arm64), const CLONE_VFORK ideal-int -pkg syscall (netbsd-arm64), const CLONE_VM = 256 -pkg syscall (netbsd-arm64), const CLONE_VM ideal-int -pkg syscall (netbsd-arm64), const CREAD = 2048 -pkg syscall (netbsd-arm64), const CREAD ideal-int -pkg syscall (netbsd-arm64), const CS5 = 0 -pkg syscall (netbsd-arm64), const CS5 ideal-int -pkg syscall (netbsd-arm64), const CS6 = 256 -pkg syscall (netbsd-arm64), const CS6 ideal-int -pkg syscall (netbsd-arm64), const CS7 = 512 -pkg syscall (netbsd-arm64), const CS7 ideal-int -pkg syscall (netbsd-arm64), const CS8 = 768 -pkg syscall (netbsd-arm64), const CS8 ideal-int -pkg syscall (netbsd-arm64), const CSIZE = 768 -pkg syscall (netbsd-arm64), const CSIZE ideal-int -pkg syscall (netbsd-arm64), const CSTART = 17 -pkg syscall (netbsd-arm64), const CSTART ideal-int -pkg syscall (netbsd-arm64), const CSTATUS = 20 -pkg syscall (netbsd-arm64), const CSTATUS ideal-int -pkg syscall (netbsd-arm64), const CSTOP = 19 -pkg syscall (netbsd-arm64), const CSTOP ideal-int -pkg syscall (netbsd-arm64), const CSTOPB = 1024 -pkg syscall (netbsd-arm64), const CSTOPB ideal-int -pkg syscall (netbsd-arm64), const CSUSP = 26 -pkg syscall (netbsd-arm64), const CSUSP ideal-int -pkg syscall (netbsd-arm64), const CTL_MAXNAME = 12 -pkg syscall (netbsd-arm64), const CTL_MAXNAME ideal-int -pkg syscall (netbsd-arm64), const CTL_NET = 4 -pkg syscall (netbsd-arm64), const CTL_NET ideal-int -pkg syscall (netbsd-arm64), const CTL_QUERY = -2 -pkg syscall (netbsd-arm64), const CTL_QUERY ideal-int -pkg syscall (netbsd-arm64), const DIOCBSFLUSH = 536896632 -pkg syscall (netbsd-arm64), const DIOCBSFLUSH ideal-int -pkg syscall (netbsd-arm64), const DLT_A429 = 184 -pkg syscall (netbsd-arm64), const DLT_A429 ideal-int -pkg syscall (netbsd-arm64), const DLT_A653_ICM = 185 -pkg syscall (netbsd-arm64), const DLT_A653_ICM ideal-int -pkg syscall (netbsd-arm64), const DLT_AIRONET_HEADER = 120 -pkg syscall (netbsd-arm64), const DLT_AIRONET_HEADER ideal-int -pkg syscall (netbsd-arm64), const DLT_AOS = 222 -pkg syscall (netbsd-arm64), const DLT_AOS ideal-int -pkg syscall (netbsd-arm64), const DLT_APPLE_IP_OVER_IEEE1394 = 138 -pkg syscall (netbsd-arm64), const DLT_APPLE_IP_OVER_IEEE1394 ideal-int -pkg syscall (netbsd-arm64), const DLT_ARCNET = 7 -pkg syscall (netbsd-arm64), const DLT_ARCNET ideal-int -pkg syscall (netbsd-arm64), const DLT_ARCNET_LINUX = 129 -pkg syscall (netbsd-arm64), const DLT_ARCNET_LINUX ideal-int -pkg syscall (netbsd-arm64), const DLT_ATM_CLIP = 19 -pkg syscall (netbsd-arm64), const DLT_ATM_CLIP ideal-int -pkg syscall (netbsd-arm64), const DLT_ATM_RFC1483 = 11 -pkg syscall (netbsd-arm64), const DLT_ATM_RFC1483 ideal-int -pkg syscall (netbsd-arm64), const DLT_AURORA = 126 -pkg syscall (netbsd-arm64), const DLT_AURORA ideal-int -pkg syscall (netbsd-arm64), const DLT_AX25 = 3 -pkg syscall (netbsd-arm64), const DLT_AX25 ideal-int -pkg syscall (netbsd-arm64), const DLT_AX25_KISS = 202 -pkg syscall (netbsd-arm64), const DLT_AX25_KISS ideal-int -pkg syscall (netbsd-arm64), const DLT_BACNET_MS_TP = 165 -pkg syscall (netbsd-arm64), const DLT_BACNET_MS_TP ideal-int -pkg syscall (netbsd-arm64), const DLT_BLUETOOTH_HCI_H4 = 187 -pkg syscall (netbsd-arm64), const DLT_BLUETOOTH_HCI_H4 ideal-int -pkg syscall (netbsd-arm64), const DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 201 -pkg syscall (netbsd-arm64), const DLT_BLUETOOTH_HCI_H4_WITH_PHDR ideal-int -pkg syscall (netbsd-arm64), const DLT_CAN20B = 190 -pkg syscall (netbsd-arm64), const DLT_CAN20B ideal-int -pkg syscall (netbsd-arm64), const DLT_CAN_SOCKETCAN = 227 -pkg syscall (netbsd-arm64), const DLT_CAN_SOCKETCAN ideal-int -pkg syscall (netbsd-arm64), const DLT_CHAOS = 5 -pkg syscall (netbsd-arm64), const DLT_CHAOS ideal-int -pkg syscall (netbsd-arm64), const DLT_CISCO_IOS = 118 -pkg syscall (netbsd-arm64), const DLT_CISCO_IOS ideal-int -pkg syscall (netbsd-arm64), const DLT_C_HDLC = 104 -pkg syscall (netbsd-arm64), const DLT_C_HDLC ideal-int -pkg syscall (netbsd-arm64), const DLT_C_HDLC_WITH_DIR = 205 -pkg syscall (netbsd-arm64), const DLT_C_HDLC_WITH_DIR ideal-int -pkg syscall (netbsd-arm64), const DLT_DECT = 221 -pkg syscall (netbsd-arm64), const DLT_DECT ideal-int -pkg syscall (netbsd-arm64), const DLT_DOCSIS = 143 -pkg syscall (netbsd-arm64), const DLT_DOCSIS ideal-int -pkg syscall (netbsd-arm64), const DLT_ECONET = 115 -pkg syscall (netbsd-arm64), const DLT_ECONET ideal-int -pkg syscall (netbsd-arm64), const DLT_EN10MB = 1 -pkg syscall (netbsd-arm64), const DLT_EN10MB ideal-int -pkg syscall (netbsd-arm64), const DLT_EN3MB = 2 -pkg syscall (netbsd-arm64), const DLT_EN3MB ideal-int -pkg syscall (netbsd-arm64), const DLT_ENC = 109 -pkg syscall (netbsd-arm64), const DLT_ENC ideal-int -pkg syscall (netbsd-arm64), const DLT_ERF = 197 -pkg syscall (netbsd-arm64), const DLT_ERF ideal-int -pkg syscall (netbsd-arm64), const DLT_ERF_ETH = 175 -pkg syscall (netbsd-arm64), const DLT_ERF_ETH ideal-int -pkg syscall (netbsd-arm64), const DLT_ERF_POS = 176 -pkg syscall (netbsd-arm64), const DLT_ERF_POS ideal-int -pkg syscall (netbsd-arm64), const DLT_FC_2 = 224 -pkg syscall (netbsd-arm64), const DLT_FC_2 ideal-int -pkg syscall (netbsd-arm64), const DLT_FC_2_WITH_FRAME_DELIMS = 225 -pkg syscall (netbsd-arm64), const DLT_FC_2_WITH_FRAME_DELIMS ideal-int -pkg syscall (netbsd-arm64), const DLT_FDDI = 10 -pkg syscall (netbsd-arm64), const DLT_FDDI ideal-int -pkg syscall (netbsd-arm64), const DLT_FLEXRAY = 210 -pkg syscall (netbsd-arm64), const DLT_FLEXRAY ideal-int -pkg syscall (netbsd-arm64), const DLT_FRELAY = 107 -pkg syscall (netbsd-arm64), const DLT_FRELAY ideal-int -pkg syscall (netbsd-arm64), const DLT_FRELAY_WITH_DIR = 206 -pkg syscall (netbsd-arm64), const DLT_FRELAY_WITH_DIR ideal-int -pkg syscall (netbsd-arm64), const DLT_GCOM_SERIAL = 173 -pkg syscall (netbsd-arm64), const DLT_GCOM_SERIAL ideal-int -pkg syscall (netbsd-arm64), const DLT_GCOM_T1E1 = 172 -pkg syscall (netbsd-arm64), const DLT_GCOM_T1E1 ideal-int -pkg syscall (netbsd-arm64), const DLT_GPF_F = 171 -pkg syscall (netbsd-arm64), const DLT_GPF_F ideal-int -pkg syscall (netbsd-arm64), const DLT_GPF_T = 170 -pkg syscall (netbsd-arm64), const DLT_GPF_T ideal-int -pkg syscall (netbsd-arm64), const DLT_GPRS_LLC = 169 -pkg syscall (netbsd-arm64), const DLT_GPRS_LLC ideal-int -pkg syscall (netbsd-arm64), const DLT_GSMTAP_ABIS = 218 -pkg syscall (netbsd-arm64), const DLT_GSMTAP_ABIS ideal-int -pkg syscall (netbsd-arm64), const DLT_GSMTAP_UM = 217 -pkg syscall (netbsd-arm64), const DLT_GSMTAP_UM ideal-int -pkg syscall (netbsd-arm64), const DLT_HDLC = 16 -pkg syscall (netbsd-arm64), const DLT_HDLC ideal-int -pkg syscall (netbsd-arm64), const DLT_HHDLC = 121 -pkg syscall (netbsd-arm64), const DLT_HHDLC ideal-int -pkg syscall (netbsd-arm64), const DLT_HIPPI = 15 -pkg syscall (netbsd-arm64), const DLT_HIPPI ideal-int -pkg syscall (netbsd-arm64), const DLT_IBM_SN = 146 -pkg syscall (netbsd-arm64), const DLT_IBM_SN ideal-int -pkg syscall (netbsd-arm64), const DLT_IBM_SP = 145 -pkg syscall (netbsd-arm64), const DLT_IBM_SP ideal-int -pkg syscall (netbsd-arm64), const DLT_IEEE802 = 6 -pkg syscall (netbsd-arm64), const DLT_IEEE802 ideal-int -pkg syscall (netbsd-arm64), const DLT_IEEE802_11 = 105 -pkg syscall (netbsd-arm64), const DLT_IEEE802_11 ideal-int -pkg syscall (netbsd-arm64), const DLT_IEEE802_11_RADIO = 127 -pkg syscall (netbsd-arm64), const DLT_IEEE802_11_RADIO ideal-int -pkg syscall (netbsd-arm64), const DLT_IEEE802_11_RADIO_AVS = 163 -pkg syscall (netbsd-arm64), const DLT_IEEE802_11_RADIO_AVS ideal-int -pkg syscall (netbsd-arm64), const DLT_IEEE802_15_4 = 195 -pkg syscall (netbsd-arm64), const DLT_IEEE802_15_4 ideal-int -pkg syscall (netbsd-arm64), const DLT_IEEE802_15_4_LINUX = 191 -pkg syscall (netbsd-arm64), const DLT_IEEE802_15_4_LINUX ideal-int -pkg syscall (netbsd-arm64), const DLT_IEEE802_15_4_NONASK_PHY = 215 -pkg syscall (netbsd-arm64), const DLT_IEEE802_15_4_NONASK_PHY ideal-int -pkg syscall (netbsd-arm64), const DLT_IEEE802_16_MAC_CPS = 188 -pkg syscall (netbsd-arm64), const DLT_IEEE802_16_MAC_CPS ideal-int -pkg syscall (netbsd-arm64), const DLT_IEEE802_16_MAC_CPS_RADIO = 193 -pkg syscall (netbsd-arm64), const DLT_IEEE802_16_MAC_CPS_RADIO ideal-int -pkg syscall (netbsd-arm64), const DLT_IPMB = 199 -pkg syscall (netbsd-arm64), const DLT_IPMB ideal-int -pkg syscall (netbsd-arm64), const DLT_IPMB_LINUX = 209 -pkg syscall (netbsd-arm64), const DLT_IPMB_LINUX ideal-int -pkg syscall (netbsd-arm64), const DLT_IPNET = 226 -pkg syscall (netbsd-arm64), const DLT_IPNET ideal-int -pkg syscall (netbsd-arm64), const DLT_IPV4 = 228 -pkg syscall (netbsd-arm64), const DLT_IPV4 ideal-int -pkg syscall (netbsd-arm64), const DLT_IPV6 = 229 -pkg syscall (netbsd-arm64), const DLT_IPV6 ideal-int -pkg syscall (netbsd-arm64), const DLT_IP_OVER_FC = 122 -pkg syscall (netbsd-arm64), const DLT_IP_OVER_FC ideal-int -pkg syscall (netbsd-arm64), const DLT_JUNIPER_ATM1 = 137 -pkg syscall (netbsd-arm64), const DLT_JUNIPER_ATM1 ideal-int -pkg syscall (netbsd-arm64), const DLT_JUNIPER_ATM2 = 135 -pkg syscall (netbsd-arm64), const DLT_JUNIPER_ATM2 ideal-int -pkg syscall (netbsd-arm64), const DLT_JUNIPER_CHDLC = 181 -pkg syscall (netbsd-arm64), const DLT_JUNIPER_CHDLC ideal-int -pkg syscall (netbsd-arm64), const DLT_JUNIPER_ES = 132 -pkg syscall (netbsd-arm64), const DLT_JUNIPER_ES ideal-int -pkg syscall (netbsd-arm64), const DLT_JUNIPER_ETHER = 178 -pkg syscall (netbsd-arm64), const DLT_JUNIPER_ETHER ideal-int -pkg syscall (netbsd-arm64), const DLT_JUNIPER_FRELAY = 180 -pkg syscall (netbsd-arm64), const DLT_JUNIPER_FRELAY ideal-int -pkg syscall (netbsd-arm64), const DLT_JUNIPER_GGSN = 133 -pkg syscall (netbsd-arm64), const DLT_JUNIPER_GGSN ideal-int -pkg syscall (netbsd-arm64), const DLT_JUNIPER_ISM = 194 -pkg syscall (netbsd-arm64), const DLT_JUNIPER_ISM ideal-int -pkg syscall (netbsd-arm64), const DLT_JUNIPER_MFR = 134 -pkg syscall (netbsd-arm64), const DLT_JUNIPER_MFR ideal-int -pkg syscall (netbsd-arm64), const DLT_JUNIPER_MLFR = 131 -pkg syscall (netbsd-arm64), const DLT_JUNIPER_MLFR ideal-int -pkg syscall (netbsd-arm64), const DLT_JUNIPER_MLPPP = 130 -pkg syscall (netbsd-arm64), const DLT_JUNIPER_MLPPP ideal-int -pkg syscall (netbsd-arm64), const DLT_JUNIPER_MONITOR = 164 -pkg syscall (netbsd-arm64), const DLT_JUNIPER_MONITOR ideal-int -pkg syscall (netbsd-arm64), const DLT_JUNIPER_PIC_PEER = 174 -pkg syscall (netbsd-arm64), const DLT_JUNIPER_PIC_PEER ideal-int -pkg syscall (netbsd-arm64), const DLT_JUNIPER_PPP = 179 -pkg syscall (netbsd-arm64), const DLT_JUNIPER_PPP ideal-int -pkg syscall (netbsd-arm64), const DLT_JUNIPER_PPPOE = 167 -pkg syscall (netbsd-arm64), const DLT_JUNIPER_PPPOE ideal-int -pkg syscall (netbsd-arm64), const DLT_JUNIPER_PPPOE_ATM = 168 -pkg syscall (netbsd-arm64), const DLT_JUNIPER_PPPOE_ATM ideal-int -pkg syscall (netbsd-arm64), const DLT_JUNIPER_SERVICES = 136 -pkg syscall (netbsd-arm64), const DLT_JUNIPER_SERVICES ideal-int -pkg syscall (netbsd-arm64), const DLT_JUNIPER_ST = 200 -pkg syscall (netbsd-arm64), const DLT_JUNIPER_ST ideal-int -pkg syscall (netbsd-arm64), const DLT_JUNIPER_VP = 183 -pkg syscall (netbsd-arm64), const DLT_JUNIPER_VP ideal-int -pkg syscall (netbsd-arm64), const DLT_LAPB_WITH_DIR = 207 -pkg syscall (netbsd-arm64), const DLT_LAPB_WITH_DIR ideal-int -pkg syscall (netbsd-arm64), const DLT_LAPD = 203 -pkg syscall (netbsd-arm64), const DLT_LAPD ideal-int -pkg syscall (netbsd-arm64), const DLT_LIN = 212 -pkg syscall (netbsd-arm64), const DLT_LIN ideal-int -pkg syscall (netbsd-arm64), const DLT_LINUX_EVDEV = 216 -pkg syscall (netbsd-arm64), const DLT_LINUX_EVDEV ideal-int -pkg syscall (netbsd-arm64), const DLT_LINUX_IRDA = 144 -pkg syscall (netbsd-arm64), const DLT_LINUX_IRDA ideal-int -pkg syscall (netbsd-arm64), const DLT_LINUX_LAPD = 177 -pkg syscall (netbsd-arm64), const DLT_LINUX_LAPD ideal-int -pkg syscall (netbsd-arm64), const DLT_LINUX_SLL = 113 -pkg syscall (netbsd-arm64), const DLT_LINUX_SLL ideal-int -pkg syscall (netbsd-arm64), const DLT_LOOP = 108 -pkg syscall (netbsd-arm64), const DLT_LOOP ideal-int -pkg syscall (netbsd-arm64), const DLT_LTALK = 114 -pkg syscall (netbsd-arm64), const DLT_LTALK ideal-int -pkg syscall (netbsd-arm64), const DLT_MFR = 182 -pkg syscall (netbsd-arm64), const DLT_MFR ideal-int -pkg syscall (netbsd-arm64), const DLT_MOST = 211 -pkg syscall (netbsd-arm64), const DLT_MOST ideal-int -pkg syscall (netbsd-arm64), const DLT_MPLS = 219 -pkg syscall (netbsd-arm64), const DLT_MPLS ideal-int -pkg syscall (netbsd-arm64), const DLT_MTP2 = 140 -pkg syscall (netbsd-arm64), const DLT_MTP2 ideal-int -pkg syscall (netbsd-arm64), const DLT_MTP2_WITH_PHDR = 139 -pkg syscall (netbsd-arm64), const DLT_MTP2_WITH_PHDR ideal-int -pkg syscall (netbsd-arm64), const DLT_MTP3 = 141 -pkg syscall (netbsd-arm64), const DLT_MTP3 ideal-int -pkg syscall (netbsd-arm64), const DLT_NULL = 0 -pkg syscall (netbsd-arm64), const DLT_NULL ideal-int -pkg syscall (netbsd-arm64), const DLT_PCI_EXP = 125 -pkg syscall (netbsd-arm64), const DLT_PCI_EXP ideal-int -pkg syscall (netbsd-arm64), const DLT_PFLOG = 117 -pkg syscall (netbsd-arm64), const DLT_PFLOG ideal-int -pkg syscall (netbsd-arm64), const DLT_PFSYNC = 18 -pkg syscall (netbsd-arm64), const DLT_PFSYNC ideal-int -pkg syscall (netbsd-arm64), const DLT_PPI = 192 -pkg syscall (netbsd-arm64), const DLT_PPI ideal-int -pkg syscall (netbsd-arm64), const DLT_PPP = 9 -pkg syscall (netbsd-arm64), const DLT_PPP ideal-int -pkg syscall (netbsd-arm64), const DLT_PPP_BSDOS = 14 -pkg syscall (netbsd-arm64), const DLT_PPP_BSDOS ideal-int -pkg syscall (netbsd-arm64), const DLT_PPP_ETHER = 51 -pkg syscall (netbsd-arm64), const DLT_PPP_ETHER ideal-int -pkg syscall (netbsd-arm64), const DLT_PPP_PPPD = 166 -pkg syscall (netbsd-arm64), const DLT_PPP_PPPD ideal-int -pkg syscall (netbsd-arm64), const DLT_PPP_SERIAL = 50 -pkg syscall (netbsd-arm64), const DLT_PPP_SERIAL ideal-int -pkg syscall (netbsd-arm64), const DLT_PPP_WITH_DIR = 204 -pkg syscall (netbsd-arm64), const DLT_PPP_WITH_DIR ideal-int -pkg syscall (netbsd-arm64), const DLT_PRISM_HEADER = 119 -pkg syscall (netbsd-arm64), const DLT_PRISM_HEADER ideal-int -pkg syscall (netbsd-arm64), const DLT_PRONET = 4 -pkg syscall (netbsd-arm64), const DLT_PRONET ideal-int -pkg syscall (netbsd-arm64), const DLT_RAIF1 = 198 -pkg syscall (netbsd-arm64), const DLT_RAIF1 ideal-int -pkg syscall (netbsd-arm64), const DLT_RAW = 12 -pkg syscall (netbsd-arm64), const DLT_RAW ideal-int -pkg syscall (netbsd-arm64), const DLT_RAWAF_MASK = 35913728 -pkg syscall (netbsd-arm64), const DLT_RAWAF_MASK ideal-int -pkg syscall (netbsd-arm64), const DLT_RIO = 124 -pkg syscall (netbsd-arm64), const DLT_RIO ideal-int -pkg syscall (netbsd-arm64), const DLT_SCCP = 142 -pkg syscall (netbsd-arm64), const DLT_SCCP ideal-int -pkg syscall (netbsd-arm64), const DLT_SITA = 196 -pkg syscall (netbsd-arm64), const DLT_SITA ideal-int -pkg syscall (netbsd-arm64), const DLT_SLIP = 8 -pkg syscall (netbsd-arm64), const DLT_SLIP ideal-int -pkg syscall (netbsd-arm64), const DLT_SLIP_BSDOS = 13 -pkg syscall (netbsd-arm64), const DLT_SLIP_BSDOS ideal-int -pkg syscall (netbsd-arm64), const DLT_SUNATM = 123 -pkg syscall (netbsd-arm64), const DLT_SUNATM ideal-int -pkg syscall (netbsd-arm64), const DLT_SYMANTEC_FIREWALL = 99 -pkg syscall (netbsd-arm64), const DLT_SYMANTEC_FIREWALL ideal-int -pkg syscall (netbsd-arm64), const DLT_TZSP = 128 -pkg syscall (netbsd-arm64), const DLT_TZSP ideal-int -pkg syscall (netbsd-arm64), const DLT_USB = 186 -pkg syscall (netbsd-arm64), const DLT_USB ideal-int -pkg syscall (netbsd-arm64), const DLT_USB_LINUX = 189 -pkg syscall (netbsd-arm64), const DLT_USB_LINUX ideal-int -pkg syscall (netbsd-arm64), const DLT_USB_LINUX_MMAPPED = 220 -pkg syscall (netbsd-arm64), const DLT_USB_LINUX_MMAPPED ideal-int -pkg syscall (netbsd-arm64), const DLT_WIHART = 223 -pkg syscall (netbsd-arm64), const DLT_WIHART ideal-int -pkg syscall (netbsd-arm64), const DLT_X2E_SERIAL = 213 -pkg syscall (netbsd-arm64), const DLT_X2E_SERIAL ideal-int -pkg syscall (netbsd-arm64), const DLT_X2E_XORAYA = 214 -pkg syscall (netbsd-arm64), const DLT_X2E_XORAYA ideal-int -pkg syscall (netbsd-arm64), const DT_BLK = 6 -pkg syscall (netbsd-arm64), const DT_BLK ideal-int -pkg syscall (netbsd-arm64), const DT_CHR = 2 -pkg syscall (netbsd-arm64), const DT_CHR ideal-int -pkg syscall (netbsd-arm64), const DT_DIR = 4 -pkg syscall (netbsd-arm64), const DT_DIR ideal-int -pkg syscall (netbsd-arm64), const DT_FIFO = 1 -pkg syscall (netbsd-arm64), const DT_FIFO ideal-int -pkg syscall (netbsd-arm64), const DT_LNK = 10 -pkg syscall (netbsd-arm64), const DT_LNK ideal-int -pkg syscall (netbsd-arm64), const DT_REG = 8 -pkg syscall (netbsd-arm64), const DT_REG ideal-int -pkg syscall (netbsd-arm64), const DT_SOCK = 12 -pkg syscall (netbsd-arm64), const DT_SOCK ideal-int -pkg syscall (netbsd-arm64), const DT_UNKNOWN = 0 -pkg syscall (netbsd-arm64), const DT_UNKNOWN ideal-int -pkg syscall (netbsd-arm64), const DT_WHT = 14 -pkg syscall (netbsd-arm64), const DT_WHT ideal-int -pkg syscall (netbsd-arm64), const E2BIG = 7 -pkg syscall (netbsd-arm64), const EACCES = 13 -pkg syscall (netbsd-arm64), const EADDRINUSE = 48 -pkg syscall (netbsd-arm64), const EADDRNOTAVAIL = 49 -pkg syscall (netbsd-arm64), const EAFNOSUPPORT = 47 -pkg syscall (netbsd-arm64), const EAGAIN = 35 -pkg syscall (netbsd-arm64), const EALREADY = 37 -pkg syscall (netbsd-arm64), const EAUTH = 80 -pkg syscall (netbsd-arm64), const EAUTH Errno -pkg syscall (netbsd-arm64), const EBADF = 9 -pkg syscall (netbsd-arm64), const EBADMSG = 88 -pkg syscall (netbsd-arm64), const EBADMSG Errno -pkg syscall (netbsd-arm64), const EBADRPC = 72 -pkg syscall (netbsd-arm64), const EBADRPC Errno -pkg syscall (netbsd-arm64), const EBUSY = 16 -pkg syscall (netbsd-arm64), const ECANCELED = 87 -pkg syscall (netbsd-arm64), const ECHILD = 10 -pkg syscall (netbsd-arm64), const ECHO = 8 -pkg syscall (netbsd-arm64), const ECHO ideal-int -pkg syscall (netbsd-arm64), const ECHOCTL = 64 -pkg syscall (netbsd-arm64), const ECHOCTL ideal-int -pkg syscall (netbsd-arm64), const ECHOE = 2 -pkg syscall (netbsd-arm64), const ECHOE ideal-int -pkg syscall (netbsd-arm64), const ECHOK = 4 -pkg syscall (netbsd-arm64), const ECHOK ideal-int -pkg syscall (netbsd-arm64), const ECHOKE = 1 -pkg syscall (netbsd-arm64), const ECHOKE ideal-int -pkg syscall (netbsd-arm64), const ECHONL = 16 -pkg syscall (netbsd-arm64), const ECHONL ideal-int -pkg syscall (netbsd-arm64), const ECHOPRT = 32 -pkg syscall (netbsd-arm64), const ECHOPRT ideal-int -pkg syscall (netbsd-arm64), const ECONNABORTED = 53 -pkg syscall (netbsd-arm64), const ECONNREFUSED = 61 -pkg syscall (netbsd-arm64), const ECONNRESET = 54 -pkg syscall (netbsd-arm64), const EDEADLK = 11 -pkg syscall (netbsd-arm64), const EDESTADDRREQ = 39 -pkg syscall (netbsd-arm64), const EDOM = 33 -pkg syscall (netbsd-arm64), const EDQUOT = 69 -pkg syscall (netbsd-arm64), const EEXIST = 17 -pkg syscall (netbsd-arm64), const EFAULT = 14 -pkg syscall (netbsd-arm64), const EFBIG = 27 -pkg syscall (netbsd-arm64), const EFTYPE = 79 -pkg syscall (netbsd-arm64), const EFTYPE Errno -pkg syscall (netbsd-arm64), const EHOSTDOWN = 64 -pkg syscall (netbsd-arm64), const EHOSTUNREACH = 65 -pkg syscall (netbsd-arm64), const EIDRM = 82 -pkg syscall (netbsd-arm64), const EILSEQ = 85 -pkg syscall (netbsd-arm64), const EINPROGRESS = 36 -pkg syscall (netbsd-arm64), const EINTR = 4 -pkg syscall (netbsd-arm64), const EINVAL = 22 -pkg syscall (netbsd-arm64), const EIO = 5 -pkg syscall (netbsd-arm64), const EISCONN = 56 -pkg syscall (netbsd-arm64), const EISDIR = 21 -pkg syscall (netbsd-arm64), const ELAST = 96 -pkg syscall (netbsd-arm64), const ELAST Errno -pkg syscall (netbsd-arm64), const ELOOP = 62 -pkg syscall (netbsd-arm64), const EMFILE = 24 -pkg syscall (netbsd-arm64), const EMLINK = 31 -pkg syscall (netbsd-arm64), const EMSGSIZE = 40 -pkg syscall (netbsd-arm64), const EMULTIHOP = 94 -pkg syscall (netbsd-arm64), const EMULTIHOP Errno -pkg syscall (netbsd-arm64), const EMUL_LINUX = 1 -pkg syscall (netbsd-arm64), const EMUL_LINUX ideal-int -pkg syscall (netbsd-arm64), const EMUL_LINUX32 = 5 -pkg syscall (netbsd-arm64), const EMUL_LINUX32 ideal-int -pkg syscall (netbsd-arm64), const EMUL_MAXID = 6 -pkg syscall (netbsd-arm64), const EMUL_MAXID ideal-int -pkg syscall (netbsd-arm64), const ENAMETOOLONG = 63 -pkg syscall (netbsd-arm64), const ENEEDAUTH = 81 -pkg syscall (netbsd-arm64), const ENEEDAUTH Errno -pkg syscall (netbsd-arm64), const ENETDOWN = 50 -pkg syscall (netbsd-arm64), const ENETRESET = 52 -pkg syscall (netbsd-arm64), const ENETUNREACH = 51 -pkg syscall (netbsd-arm64), const ENFILE = 23 -pkg syscall (netbsd-arm64), const ENOATTR = 93 -pkg syscall (netbsd-arm64), const ENOATTR Errno -pkg syscall (netbsd-arm64), const ENOBUFS = 55 -pkg syscall (netbsd-arm64), const ENODATA = 89 -pkg syscall (netbsd-arm64), const ENODATA Errno -pkg syscall (netbsd-arm64), const ENODEV = 19 -pkg syscall (netbsd-arm64), const ENOEXEC = 8 -pkg syscall (netbsd-arm64), const ENOLCK = 77 -pkg syscall (netbsd-arm64), const ENOLINK = 95 -pkg syscall (netbsd-arm64), const ENOLINK Errno -pkg syscall (netbsd-arm64), const ENOMEM = 12 -pkg syscall (netbsd-arm64), const ENOMSG = 83 -pkg syscall (netbsd-arm64), const ENOPROTOOPT = 42 -pkg syscall (netbsd-arm64), const ENOSPC = 28 -pkg syscall (netbsd-arm64), const ENOSR = 90 -pkg syscall (netbsd-arm64), const ENOSR Errno -pkg syscall (netbsd-arm64), const ENOSTR = 91 -pkg syscall (netbsd-arm64), const ENOSTR Errno -pkg syscall (netbsd-arm64), const ENOSYS = 78 -pkg syscall (netbsd-arm64), const ENOTBLK = 15 -pkg syscall (netbsd-arm64), const ENOTCONN = 57 -pkg syscall (netbsd-arm64), const ENOTDIR = 20 -pkg syscall (netbsd-arm64), const ENOTEMPTY = 66 -pkg syscall (netbsd-arm64), const ENOTSOCK = 38 -pkg syscall (netbsd-arm64), const ENOTSUP = 86 -pkg syscall (netbsd-arm64), const ENOTTY = 25 -pkg syscall (netbsd-arm64), const ENXIO = 6 -pkg syscall (netbsd-arm64), const EOPNOTSUPP = 45 -pkg syscall (netbsd-arm64), const EOVERFLOW = 84 -pkg syscall (netbsd-arm64), const EPERM = 1 -pkg syscall (netbsd-arm64), const EPFNOSUPPORT = 46 -pkg syscall (netbsd-arm64), const EPIPE = 32 -pkg syscall (netbsd-arm64), const EPROCLIM = 67 -pkg syscall (netbsd-arm64), const EPROCLIM Errno -pkg syscall (netbsd-arm64), const EPROCUNAVAIL = 76 -pkg syscall (netbsd-arm64), const EPROCUNAVAIL Errno -pkg syscall (netbsd-arm64), const EPROGMISMATCH = 75 -pkg syscall (netbsd-arm64), const EPROGMISMATCH Errno -pkg syscall (netbsd-arm64), const EPROGUNAVAIL = 74 -pkg syscall (netbsd-arm64), const EPROGUNAVAIL Errno -pkg syscall (netbsd-arm64), const EPROTO = 96 -pkg syscall (netbsd-arm64), const EPROTO Errno -pkg syscall (netbsd-arm64), const EPROTONOSUPPORT = 43 -pkg syscall (netbsd-arm64), const EPROTOTYPE = 41 -pkg syscall (netbsd-arm64), const ERANGE = 34 -pkg syscall (netbsd-arm64), const EREMOTE = 71 -pkg syscall (netbsd-arm64), const EROFS = 30 -pkg syscall (netbsd-arm64), const ERPCMISMATCH = 73 -pkg syscall (netbsd-arm64), const ERPCMISMATCH Errno -pkg syscall (netbsd-arm64), const ESHUTDOWN = 58 -pkg syscall (netbsd-arm64), const ESOCKTNOSUPPORT = 44 -pkg syscall (netbsd-arm64), const ESPIPE = 29 -pkg syscall (netbsd-arm64), const ESRCH = 3 -pkg syscall (netbsd-arm64), const ESTALE = 70 -pkg syscall (netbsd-arm64), const ETHERCAP_JUMBO_MTU = 4 -pkg syscall (netbsd-arm64), const ETHERCAP_JUMBO_MTU ideal-int -pkg syscall (netbsd-arm64), const ETHERCAP_VLAN_HWTAGGING = 2 -pkg syscall (netbsd-arm64), const ETHERCAP_VLAN_HWTAGGING ideal-int -pkg syscall (netbsd-arm64), const ETHERCAP_VLAN_MTU = 1 -pkg syscall (netbsd-arm64), const ETHERCAP_VLAN_MTU ideal-int -pkg syscall (netbsd-arm64), const ETHERMIN = 46 -pkg syscall (netbsd-arm64), const ETHERMIN ideal-int -pkg syscall (netbsd-arm64), const ETHERMTU = 1500 -pkg syscall (netbsd-arm64), const ETHERMTU ideal-int -pkg syscall (netbsd-arm64), const ETHERMTU_JUMBO = 9000 -pkg syscall (netbsd-arm64), const ETHERMTU_JUMBO ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_8023 = 4 -pkg syscall (netbsd-arm64), const ETHERTYPE_8023 ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_AARP = 33011 -pkg syscall (netbsd-arm64), const ETHERTYPE_AARP ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_ACCTON = 33680 -pkg syscall (netbsd-arm64), const ETHERTYPE_ACCTON ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_AEONIC = 32822 -pkg syscall (netbsd-arm64), const ETHERTYPE_AEONIC ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_ALPHA = 33098 -pkg syscall (netbsd-arm64), const ETHERTYPE_ALPHA ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_AMBER = 24584 -pkg syscall (netbsd-arm64), const ETHERTYPE_AMBER ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_AMOEBA = 33093 -pkg syscall (netbsd-arm64), const ETHERTYPE_AMOEBA ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_APOLLO = 33015 -pkg syscall (netbsd-arm64), const ETHERTYPE_APOLLO ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_APOLLODOMAIN = 32793 -pkg syscall (netbsd-arm64), const ETHERTYPE_APOLLODOMAIN ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_APPLETALK = 32923 -pkg syscall (netbsd-arm64), const ETHERTYPE_APPLETALK ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_APPLITEK = 32967 -pkg syscall (netbsd-arm64), const ETHERTYPE_APPLITEK ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_ARGONAUT = 32826 -pkg syscall (netbsd-arm64), const ETHERTYPE_ARGONAUT ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_ARP = 2054 -pkg syscall (netbsd-arm64), const ETHERTYPE_ARP ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_AT = 32923 -pkg syscall (netbsd-arm64), const ETHERTYPE_AT ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_ATALK = 32923 -pkg syscall (netbsd-arm64), const ETHERTYPE_ATALK ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_ATOMIC = 34527 -pkg syscall (netbsd-arm64), const ETHERTYPE_ATOMIC ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_ATT = 32873 -pkg syscall (netbsd-arm64), const ETHERTYPE_ATT ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_ATTSTANFORD = 32776 -pkg syscall (netbsd-arm64), const ETHERTYPE_ATTSTANFORD ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_AUTOPHON = 32874 -pkg syscall (netbsd-arm64), const ETHERTYPE_AUTOPHON ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_AXIS = 34902 -pkg syscall (netbsd-arm64), const ETHERTYPE_AXIS ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_BCLOOP = 36867 -pkg syscall (netbsd-arm64), const ETHERTYPE_BCLOOP ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_BOFL = 33026 -pkg syscall (netbsd-arm64), const ETHERTYPE_BOFL ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_CABLETRON = 28724 -pkg syscall (netbsd-arm64), const ETHERTYPE_CABLETRON ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_CHAOS = 2052 -pkg syscall (netbsd-arm64), const ETHERTYPE_CHAOS ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_COMDESIGN = 32876 -pkg syscall (netbsd-arm64), const ETHERTYPE_COMDESIGN ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_COMPUGRAPHIC = 32877 -pkg syscall (netbsd-arm64), const ETHERTYPE_COMPUGRAPHIC ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_COUNTERPOINT = 32866 -pkg syscall (netbsd-arm64), const ETHERTYPE_COUNTERPOINT ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_CRONUS = 32772 -pkg syscall (netbsd-arm64), const ETHERTYPE_CRONUS ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_CRONUSVLN = 32771 -pkg syscall (netbsd-arm64), const ETHERTYPE_CRONUSVLN ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_DCA = 4660 -pkg syscall (netbsd-arm64), const ETHERTYPE_DCA ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_DDE = 32891 -pkg syscall (netbsd-arm64), const ETHERTYPE_DDE ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_DEBNI = 43690 -pkg syscall (netbsd-arm64), const ETHERTYPE_DEBNI ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_DECAM = 32840 -pkg syscall (netbsd-arm64), const ETHERTYPE_DECAM ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_DECCUST = 24582 -pkg syscall (netbsd-arm64), const ETHERTYPE_DECCUST ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_DECDIAG = 24581 -pkg syscall (netbsd-arm64), const ETHERTYPE_DECDIAG ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_DECDNS = 32828 -pkg syscall (netbsd-arm64), const ETHERTYPE_DECDNS ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_DECDTS = 32830 -pkg syscall (netbsd-arm64), const ETHERTYPE_DECDTS ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_DECEXPER = 24576 -pkg syscall (netbsd-arm64), const ETHERTYPE_DECEXPER ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_DECLAST = 32833 -pkg syscall (netbsd-arm64), const ETHERTYPE_DECLAST ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_DECLTM = 32831 -pkg syscall (netbsd-arm64), const ETHERTYPE_DECLTM ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_DECMUMPS = 24585 -pkg syscall (netbsd-arm64), const ETHERTYPE_DECMUMPS ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_DECNETBIOS = 32832 -pkg syscall (netbsd-arm64), const ETHERTYPE_DECNETBIOS ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_DELTACON = 34526 -pkg syscall (netbsd-arm64), const ETHERTYPE_DELTACON ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_DIDDLE = 17185 -pkg syscall (netbsd-arm64), const ETHERTYPE_DIDDLE ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_DLOG1 = 1632 -pkg syscall (netbsd-arm64), const ETHERTYPE_DLOG1 ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_DLOG2 = 1633 -pkg syscall (netbsd-arm64), const ETHERTYPE_DLOG2 ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_DN = 24579 -pkg syscall (netbsd-arm64), const ETHERTYPE_DN ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_DOGFIGHT = 6537 -pkg syscall (netbsd-arm64), const ETHERTYPE_DOGFIGHT ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_DSMD = 32825 -pkg syscall (netbsd-arm64), const ETHERTYPE_DSMD ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_ECMA = 2051 -pkg syscall (netbsd-arm64), const ETHERTYPE_ECMA ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_ENCRYPT = 32829 -pkg syscall (netbsd-arm64), const ETHERTYPE_ENCRYPT ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_ES = 32861 -pkg syscall (netbsd-arm64), const ETHERTYPE_ES ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_EXCELAN = 32784 -pkg syscall (netbsd-arm64), const ETHERTYPE_EXCELAN ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_EXPERDATA = 32841 -pkg syscall (netbsd-arm64), const ETHERTYPE_EXPERDATA ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_FLIP = 33094 -pkg syscall (netbsd-arm64), const ETHERTYPE_FLIP ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_FLOWCONTROL = 34824 -pkg syscall (netbsd-arm64), const ETHERTYPE_FLOWCONTROL ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_FRARP = 2056 -pkg syscall (netbsd-arm64), const ETHERTYPE_FRARP ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_GENDYN = 32872 -pkg syscall (netbsd-arm64), const ETHERTYPE_GENDYN ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_HAYES = 33072 -pkg syscall (netbsd-arm64), const ETHERTYPE_HAYES ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_HIPPI_FP = 33152 -pkg syscall (netbsd-arm64), const ETHERTYPE_HIPPI_FP ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_HITACHI = 34848 -pkg syscall (netbsd-arm64), const ETHERTYPE_HITACHI ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_HP = 32773 -pkg syscall (netbsd-arm64), const ETHERTYPE_HP ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_IEEEPUP = 2560 -pkg syscall (netbsd-arm64), const ETHERTYPE_IEEEPUP ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_IEEEPUPAT = 2561 -pkg syscall (netbsd-arm64), const ETHERTYPE_IEEEPUPAT ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_IMLBL = 19522 -pkg syscall (netbsd-arm64), const ETHERTYPE_IMLBL ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_IMLBLDIAG = 16972 -pkg syscall (netbsd-arm64), const ETHERTYPE_IMLBLDIAG ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_IP = 2048 -pkg syscall (netbsd-arm64), const ETHERTYPE_IP ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_IPAS = 34668 -pkg syscall (netbsd-arm64), const ETHERTYPE_IPAS ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_IPV6 = 34525 -pkg syscall (netbsd-arm64), const ETHERTYPE_IPV6 ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_IPX = 33079 -pkg syscall (netbsd-arm64), const ETHERTYPE_IPX ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_IPXNEW = 32823 -pkg syscall (netbsd-arm64), const ETHERTYPE_IPXNEW ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_KALPANA = 34178 -pkg syscall (netbsd-arm64), const ETHERTYPE_KALPANA ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_LANBRIDGE = 32824 -pkg syscall (netbsd-arm64), const ETHERTYPE_LANBRIDGE ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_LANPROBE = 34952 -pkg syscall (netbsd-arm64), const ETHERTYPE_LANPROBE ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_LAT = 24580 -pkg syscall (netbsd-arm64), const ETHERTYPE_LAT ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_LBACK = 36864 -pkg syscall (netbsd-arm64), const ETHERTYPE_LBACK ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_LITTLE = 32864 -pkg syscall (netbsd-arm64), const ETHERTYPE_LITTLE ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_LOGICRAFT = 33096 -pkg syscall (netbsd-arm64), const ETHERTYPE_LOGICRAFT ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_LOOPBACK = 36864 -pkg syscall (netbsd-arm64), const ETHERTYPE_LOOPBACK ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_MATRA = 32890 -pkg syscall (netbsd-arm64), const ETHERTYPE_MATRA ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_MAX = 65535 -pkg syscall (netbsd-arm64), const ETHERTYPE_MAX ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_MERIT = 32892 -pkg syscall (netbsd-arm64), const ETHERTYPE_MERIT ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_MICP = 34618 -pkg syscall (netbsd-arm64), const ETHERTYPE_MICP ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_MOPDL = 24577 -pkg syscall (netbsd-arm64), const ETHERTYPE_MOPDL ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_MOPRC = 24578 -pkg syscall (netbsd-arm64), const ETHERTYPE_MOPRC ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_MOTOROLA = 33165 -pkg syscall (netbsd-arm64), const ETHERTYPE_MOTOROLA ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_MPLS = 34887 -pkg syscall (netbsd-arm64), const ETHERTYPE_MPLS ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_MPLS_MCAST = 34888 -pkg syscall (netbsd-arm64), const ETHERTYPE_MPLS_MCAST ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_MUMPS = 33087 -pkg syscall (netbsd-arm64), const ETHERTYPE_MUMPS ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_NBPCC = 15364 -pkg syscall (netbsd-arm64), const ETHERTYPE_NBPCC ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_NBPCLAIM = 15369 -pkg syscall (netbsd-arm64), const ETHERTYPE_NBPCLAIM ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_NBPCLREQ = 15365 -pkg syscall (netbsd-arm64), const ETHERTYPE_NBPCLREQ ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_NBPCLRSP = 15366 -pkg syscall (netbsd-arm64), const ETHERTYPE_NBPCLRSP ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_NBPCREQ = 15362 -pkg syscall (netbsd-arm64), const ETHERTYPE_NBPCREQ ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_NBPCRSP = 15363 -pkg syscall (netbsd-arm64), const ETHERTYPE_NBPCRSP ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_NBPDG = 15367 -pkg syscall (netbsd-arm64), const ETHERTYPE_NBPDG ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_NBPDGB = 15368 -pkg syscall (netbsd-arm64), const ETHERTYPE_NBPDGB ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_NBPDLTE = 15370 -pkg syscall (netbsd-arm64), const ETHERTYPE_NBPDLTE ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_NBPRAR = 15372 -pkg syscall (netbsd-arm64), const ETHERTYPE_NBPRAR ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_NBPRAS = 15371 -pkg syscall (netbsd-arm64), const ETHERTYPE_NBPRAS ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_NBPRST = 15373 -pkg syscall (netbsd-arm64), const ETHERTYPE_NBPRST ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_NBPSCD = 15361 -pkg syscall (netbsd-arm64), const ETHERTYPE_NBPSCD ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_NBPVCD = 15360 -pkg syscall (netbsd-arm64), const ETHERTYPE_NBPVCD ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_NBS = 2050 -pkg syscall (netbsd-arm64), const ETHERTYPE_NBS ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_NCD = 33097 -pkg syscall (netbsd-arm64), const ETHERTYPE_NCD ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_NESTAR = 32774 -pkg syscall (netbsd-arm64), const ETHERTYPE_NESTAR ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_NETBEUI = 33169 -pkg syscall (netbsd-arm64), const ETHERTYPE_NETBEUI ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_NOVELL = 33080 -pkg syscall (netbsd-arm64), const ETHERTYPE_NOVELL ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_NS = 1536 -pkg syscall (netbsd-arm64), const ETHERTYPE_NS ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_NSAT = 1537 -pkg syscall (netbsd-arm64), const ETHERTYPE_NSAT ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_NSCOMPAT = 2055 -pkg syscall (netbsd-arm64), const ETHERTYPE_NSCOMPAT ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_NTRAILER = 16 -pkg syscall (netbsd-arm64), const ETHERTYPE_NTRAILER ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_OS9 = 28679 -pkg syscall (netbsd-arm64), const ETHERTYPE_OS9 ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_OS9NET = 28681 -pkg syscall (netbsd-arm64), const ETHERTYPE_OS9NET ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_PACER = 32966 -pkg syscall (netbsd-arm64), const ETHERTYPE_PACER ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_PAE = 34958 -pkg syscall (netbsd-arm64), const ETHERTYPE_PAE ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_PCS = 16962 -pkg syscall (netbsd-arm64), const ETHERTYPE_PCS ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_PLANNING = 32836 -pkg syscall (netbsd-arm64), const ETHERTYPE_PLANNING ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_PPP = 34827 -pkg syscall (netbsd-arm64), const ETHERTYPE_PPP ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_PPPOE = 34916 -pkg syscall (netbsd-arm64), const ETHERTYPE_PPPOE ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_PPPOEDISC = 34915 -pkg syscall (netbsd-arm64), const ETHERTYPE_PPPOEDISC ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_PRIMENTS = 28721 -pkg syscall (netbsd-arm64), const ETHERTYPE_PRIMENTS ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_PUP = 512 -pkg syscall (netbsd-arm64), const ETHERTYPE_PUP ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_PUPAT = 512 -pkg syscall (netbsd-arm64), const ETHERTYPE_PUPAT ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_RACAL = 28720 -pkg syscall (netbsd-arm64), const ETHERTYPE_RACAL ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_RATIONAL = 33104 -pkg syscall (netbsd-arm64), const ETHERTYPE_RATIONAL ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_RAWFR = 25945 -pkg syscall (netbsd-arm64), const ETHERTYPE_RAWFR ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_RCL = 6549 -pkg syscall (netbsd-arm64), const ETHERTYPE_RCL ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_RDP = 34617 -pkg syscall (netbsd-arm64), const ETHERTYPE_RDP ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_RETIX = 33010 -pkg syscall (netbsd-arm64), const ETHERTYPE_RETIX ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_REVARP = 32821 -pkg syscall (netbsd-arm64), const ETHERTYPE_REVARP ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_SCA = 24583 -pkg syscall (netbsd-arm64), const ETHERTYPE_SCA ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_SECTRA = 34523 -pkg syscall (netbsd-arm64), const ETHERTYPE_SECTRA ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_SECUREDATA = 34669 -pkg syscall (netbsd-arm64), const ETHERTYPE_SECUREDATA ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_SGITW = 33150 -pkg syscall (netbsd-arm64), const ETHERTYPE_SGITW ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_SG_BOUNCE = 32790 -pkg syscall (netbsd-arm64), const ETHERTYPE_SG_BOUNCE ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_SG_DIAG = 32787 -pkg syscall (netbsd-arm64), const ETHERTYPE_SG_DIAG ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_SG_NETGAMES = 32788 -pkg syscall (netbsd-arm64), const ETHERTYPE_SG_NETGAMES ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_SG_RESV = 32789 -pkg syscall (netbsd-arm64), const ETHERTYPE_SG_RESV ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_SIMNET = 21000 -pkg syscall (netbsd-arm64), const ETHERTYPE_SIMNET ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_SLOWPROTOCOLS = 34825 -pkg syscall (netbsd-arm64), const ETHERTYPE_SLOWPROTOCOLS ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_SNA = 32981 -pkg syscall (netbsd-arm64), const ETHERTYPE_SNA ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_SNMP = 33100 -pkg syscall (netbsd-arm64), const ETHERTYPE_SNMP ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_SONIX = 64245 -pkg syscall (netbsd-arm64), const ETHERTYPE_SONIX ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_SPIDER = 32927 -pkg syscall (netbsd-arm64), const ETHERTYPE_SPIDER ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_SPRITE = 1280 -pkg syscall (netbsd-arm64), const ETHERTYPE_SPRITE ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_STP = 33153 -pkg syscall (netbsd-arm64), const ETHERTYPE_STP ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_TALARIS = 33067 -pkg syscall (netbsd-arm64), const ETHERTYPE_TALARIS ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_TALARISMC = 34091 -pkg syscall (netbsd-arm64), const ETHERTYPE_TALARISMC ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_TCPCOMP = 34667 -pkg syscall (netbsd-arm64), const ETHERTYPE_TCPCOMP ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_TCPSM = 36866 -pkg syscall (netbsd-arm64), const ETHERTYPE_TCPSM ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_TEC = 33103 -pkg syscall (netbsd-arm64), const ETHERTYPE_TEC ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_TIGAN = 32815 -pkg syscall (netbsd-arm64), const ETHERTYPE_TIGAN ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_TRAIL = 4096 -pkg syscall (netbsd-arm64), const ETHERTYPE_TRAIL ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_TRANSETHER = 25944 -pkg syscall (netbsd-arm64), const ETHERTYPE_TRANSETHER ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_TYMSHARE = 32814 -pkg syscall (netbsd-arm64), const ETHERTYPE_TYMSHARE ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_UBBST = 28677 -pkg syscall (netbsd-arm64), const ETHERTYPE_UBBST ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_UBDEBUG = 2304 -pkg syscall (netbsd-arm64), const ETHERTYPE_UBDEBUG ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_UBDIAGLOOP = 28674 -pkg syscall (netbsd-arm64), const ETHERTYPE_UBDIAGLOOP ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_UBDL = 28672 -pkg syscall (netbsd-arm64), const ETHERTYPE_UBDL ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_UBNIU = 28673 -pkg syscall (netbsd-arm64), const ETHERTYPE_UBNIU ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_UBNMC = 28675 -pkg syscall (netbsd-arm64), const ETHERTYPE_UBNMC ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_VALID = 5632 -pkg syscall (netbsd-arm64), const ETHERTYPE_VALID ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_VARIAN = 32989 -pkg syscall (netbsd-arm64), const ETHERTYPE_VARIAN ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_VAXELN = 32827 -pkg syscall (netbsd-arm64), const ETHERTYPE_VAXELN ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_VEECO = 32871 -pkg syscall (netbsd-arm64), const ETHERTYPE_VEECO ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_VEXP = 32859 -pkg syscall (netbsd-arm64), const ETHERTYPE_VEXP ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_VGLAB = 33073 -pkg syscall (netbsd-arm64), const ETHERTYPE_VGLAB ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_VINES = 2989 -pkg syscall (netbsd-arm64), const ETHERTYPE_VINES ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_VINESECHO = 2991 -pkg syscall (netbsd-arm64), const ETHERTYPE_VINESECHO ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_VINESLOOP = 2990 -pkg syscall (netbsd-arm64), const ETHERTYPE_VINESLOOP ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_VITAL = 65280 -pkg syscall (netbsd-arm64), const ETHERTYPE_VITAL ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_VLAN = 33024 -pkg syscall (netbsd-arm64), const ETHERTYPE_VLAN ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_VLTLMAN = 32896 -pkg syscall (netbsd-arm64), const ETHERTYPE_VLTLMAN ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_VPROD = 32860 -pkg syscall (netbsd-arm64), const ETHERTYPE_VPROD ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_VURESERVED = 33095 -pkg syscall (netbsd-arm64), const ETHERTYPE_VURESERVED ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_WATERLOO = 33072 -pkg syscall (netbsd-arm64), const ETHERTYPE_WATERLOO ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_WELLFLEET = 33027 -pkg syscall (netbsd-arm64), const ETHERTYPE_WELLFLEET ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_X25 = 2053 -pkg syscall (netbsd-arm64), const ETHERTYPE_X25 ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_X75 = 2049 -pkg syscall (netbsd-arm64), const ETHERTYPE_X75 ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_XNSSM = 36865 -pkg syscall (netbsd-arm64), const ETHERTYPE_XNSSM ideal-int -pkg syscall (netbsd-arm64), const ETHERTYPE_XTP = 33149 -pkg syscall (netbsd-arm64), const ETHERTYPE_XTP ideal-int -pkg syscall (netbsd-arm64), const ETHER_ADDR_LEN = 6 -pkg syscall (netbsd-arm64), const ETHER_ADDR_LEN ideal-int -pkg syscall (netbsd-arm64), const ETHER_CRC_LEN = 4 -pkg syscall (netbsd-arm64), const ETHER_CRC_LEN ideal-int -pkg syscall (netbsd-arm64), const ETHER_CRC_POLY_BE = 79764918 -pkg syscall (netbsd-arm64), const ETHER_CRC_POLY_BE ideal-int -pkg syscall (netbsd-arm64), const ETHER_CRC_POLY_LE = 3988292384 -pkg syscall (netbsd-arm64), const ETHER_CRC_POLY_LE ideal-int -pkg syscall (netbsd-arm64), const ETHER_HDR_LEN = 14 -pkg syscall (netbsd-arm64), const ETHER_HDR_LEN ideal-int -pkg syscall (netbsd-arm64), const ETHER_MAX_LEN = 1518 -pkg syscall (netbsd-arm64), const ETHER_MAX_LEN ideal-int -pkg syscall (netbsd-arm64), const ETHER_MAX_LEN_JUMBO = 9018 -pkg syscall (netbsd-arm64), const ETHER_MAX_LEN_JUMBO ideal-int -pkg syscall (netbsd-arm64), const ETHER_MIN_LEN = 64 -pkg syscall (netbsd-arm64), const ETHER_MIN_LEN ideal-int -pkg syscall (netbsd-arm64), const ETHER_PPPOE_ENCAP_LEN = 8 -pkg syscall (netbsd-arm64), const ETHER_PPPOE_ENCAP_LEN ideal-int -pkg syscall (netbsd-arm64), const ETHER_TYPE_LEN = 2 -pkg syscall (netbsd-arm64), const ETHER_TYPE_LEN ideal-int -pkg syscall (netbsd-arm64), const ETHER_VLAN_ENCAP_LEN = 4 -pkg syscall (netbsd-arm64), const ETHER_VLAN_ENCAP_LEN ideal-int -pkg syscall (netbsd-arm64), const ETIME = 92 -pkg syscall (netbsd-arm64), const ETIME Errno -pkg syscall (netbsd-arm64), const ETIMEDOUT = 60 -pkg syscall (netbsd-arm64), const ETOOMANYREFS = 59 -pkg syscall (netbsd-arm64), const ETXTBSY = 26 -pkg syscall (netbsd-arm64), const EUSERS = 68 -pkg syscall (netbsd-arm64), const EVFILT_AIO = 2 -pkg syscall (netbsd-arm64), const EVFILT_AIO ideal-int -pkg syscall (netbsd-arm64), const EVFILT_PROC = 4 -pkg syscall (netbsd-arm64), const EVFILT_PROC ideal-int -pkg syscall (netbsd-arm64), const EVFILT_READ = 0 -pkg syscall (netbsd-arm64), const EVFILT_READ ideal-int -pkg syscall (netbsd-arm64), const EVFILT_SIGNAL = 5 -pkg syscall (netbsd-arm64), const EVFILT_SIGNAL ideal-int -pkg syscall (netbsd-arm64), const EVFILT_SYSCOUNT = 7 -pkg syscall (netbsd-arm64), const EVFILT_SYSCOUNT ideal-int -pkg syscall (netbsd-arm64), const EVFILT_TIMER = 6 -pkg syscall (netbsd-arm64), const EVFILT_TIMER ideal-int -pkg syscall (netbsd-arm64), const EVFILT_VNODE = 3 -pkg syscall (netbsd-arm64), const EVFILT_VNODE ideal-int -pkg syscall (netbsd-arm64), const EVFILT_WRITE = 1 -pkg syscall (netbsd-arm64), const EVFILT_WRITE ideal-int -pkg syscall (netbsd-arm64), const EV_ADD = 1 -pkg syscall (netbsd-arm64), const EV_ADD ideal-int -pkg syscall (netbsd-arm64), const EV_CLEAR = 32 -pkg syscall (netbsd-arm64), const EV_CLEAR ideal-int -pkg syscall (netbsd-arm64), const EV_DELETE = 2 -pkg syscall (netbsd-arm64), const EV_DELETE ideal-int -pkg syscall (netbsd-arm64), const EV_DISABLE = 8 -pkg syscall (netbsd-arm64), const EV_DISABLE ideal-int -pkg syscall (netbsd-arm64), const EV_ENABLE = 4 -pkg syscall (netbsd-arm64), const EV_ENABLE ideal-int -pkg syscall (netbsd-arm64), const EV_EOF = 32768 -pkg syscall (netbsd-arm64), const EV_EOF ideal-int -pkg syscall (netbsd-arm64), const EV_ERROR = 16384 -pkg syscall (netbsd-arm64), const EV_ERROR ideal-int -pkg syscall (netbsd-arm64), const EV_FLAG1 = 8192 -pkg syscall (netbsd-arm64), const EV_FLAG1 ideal-int -pkg syscall (netbsd-arm64), const EV_ONESHOT = 16 -pkg syscall (netbsd-arm64), const EV_ONESHOT ideal-int -pkg syscall (netbsd-arm64), const EV_SYSFLAGS = 61440 -pkg syscall (netbsd-arm64), const EV_SYSFLAGS ideal-int -pkg syscall (netbsd-arm64), const EWOULDBLOCK = 35 -pkg syscall (netbsd-arm64), const EXDEV = 18 -pkg syscall (netbsd-arm64), const EXTA = 19200 -pkg syscall (netbsd-arm64), const EXTA ideal-int -pkg syscall (netbsd-arm64), const EXTB = 38400 -pkg syscall (netbsd-arm64), const EXTB ideal-int -pkg syscall (netbsd-arm64), const EXTPROC = 2048 -pkg syscall (netbsd-arm64), const EXTPROC ideal-int -pkg syscall (netbsd-arm64), const FD_CLOEXEC = 1 -pkg syscall (netbsd-arm64), const FD_CLOEXEC ideal-int -pkg syscall (netbsd-arm64), const FD_SETSIZE = 256 -pkg syscall (netbsd-arm64), const FD_SETSIZE ideal-int -pkg syscall (netbsd-arm64), const FLUSHO = 8388608 -pkg syscall (netbsd-arm64), const FLUSHO ideal-int -pkg syscall (netbsd-arm64), const F_CLOSEM = 10 -pkg syscall (netbsd-arm64), const F_CLOSEM ideal-int -pkg syscall (netbsd-arm64), const F_DUPFD = 0 -pkg syscall (netbsd-arm64), const F_DUPFD ideal-int -pkg syscall (netbsd-arm64), const F_DUPFD_CLOEXEC = 12 -pkg syscall (netbsd-arm64), const F_DUPFD_CLOEXEC ideal-int -pkg syscall (netbsd-arm64), const F_FSCTL = -2147483648 -pkg syscall (netbsd-arm64), const F_FSCTL ideal-int -pkg syscall (netbsd-arm64), const F_FSDIRMASK = 1879048192 -pkg syscall (netbsd-arm64), const F_FSDIRMASK ideal-int -pkg syscall (netbsd-arm64), const F_FSIN = 268435456 -pkg syscall (netbsd-arm64), const F_FSIN ideal-int -pkg syscall (netbsd-arm64), const F_FSINOUT = 805306368 -pkg syscall (netbsd-arm64), const F_FSINOUT ideal-int -pkg syscall (netbsd-arm64), const F_FSOUT = 536870912 -pkg syscall (netbsd-arm64), const F_FSOUT ideal-int -pkg syscall (netbsd-arm64), const F_FSPRIV = 32768 -pkg syscall (netbsd-arm64), const F_FSPRIV ideal-int -pkg syscall (netbsd-arm64), const F_FSVOID = 1073741824 -pkg syscall (netbsd-arm64), const F_FSVOID ideal-int -pkg syscall (netbsd-arm64), const F_GETFD = 1 -pkg syscall (netbsd-arm64), const F_GETFD ideal-int -pkg syscall (netbsd-arm64), const F_GETFL = 3 -pkg syscall (netbsd-arm64), const F_GETFL ideal-int -pkg syscall (netbsd-arm64), const F_GETLK = 7 -pkg syscall (netbsd-arm64), const F_GETLK ideal-int -pkg syscall (netbsd-arm64), const F_GETNOSIGPIPE = 13 -pkg syscall (netbsd-arm64), const F_GETNOSIGPIPE ideal-int -pkg syscall (netbsd-arm64), const F_GETOWN = 5 -pkg syscall (netbsd-arm64), const F_GETOWN ideal-int -pkg syscall (netbsd-arm64), const F_MAXFD = 11 -pkg syscall (netbsd-arm64), const F_MAXFD ideal-int -pkg syscall (netbsd-arm64), const F_OK = 0 -pkg syscall (netbsd-arm64), const F_OK ideal-int -pkg syscall (netbsd-arm64), const F_PARAM_MASK = 4095 -pkg syscall (netbsd-arm64), const F_PARAM_MASK ideal-int -pkg syscall (netbsd-arm64), const F_PARAM_MAX = 4095 -pkg syscall (netbsd-arm64), const F_PARAM_MAX ideal-int -pkg syscall (netbsd-arm64), const F_RDLCK = 1 -pkg syscall (netbsd-arm64), const F_RDLCK ideal-int -pkg syscall (netbsd-arm64), const F_SETFD = 2 -pkg syscall (netbsd-arm64), const F_SETFD ideal-int -pkg syscall (netbsd-arm64), const F_SETFL = 4 -pkg syscall (netbsd-arm64), const F_SETFL ideal-int -pkg syscall (netbsd-arm64), const F_SETLK = 8 -pkg syscall (netbsd-arm64), const F_SETLK ideal-int -pkg syscall (netbsd-arm64), const F_SETLKW = 9 -pkg syscall (netbsd-arm64), const F_SETLKW ideal-int -pkg syscall (netbsd-arm64), const F_SETNOSIGPIPE = 14 -pkg syscall (netbsd-arm64), const F_SETNOSIGPIPE ideal-int -pkg syscall (netbsd-arm64), const F_SETOWN = 6 -pkg syscall (netbsd-arm64), const F_SETOWN ideal-int -pkg syscall (netbsd-arm64), const F_UNLCK = 2 -pkg syscall (netbsd-arm64), const F_UNLCK ideal-int -pkg syscall (netbsd-arm64), const F_WRLCK = 3 -pkg syscall (netbsd-arm64), const F_WRLCK ideal-int -pkg syscall (netbsd-arm64), const HUPCL = 16384 -pkg syscall (netbsd-arm64), const HUPCL ideal-int -pkg syscall (netbsd-arm64), const ICANON = 256 -pkg syscall (netbsd-arm64), const ICANON ideal-int -pkg syscall (netbsd-arm64), const ICMP6_FILTER = 18 -pkg syscall (netbsd-arm64), const ICMP6_FILTER ideal-int -pkg syscall (netbsd-arm64), const ICRNL = 256 -pkg syscall (netbsd-arm64), const ICRNL ideal-int -pkg syscall (netbsd-arm64), const IEXTEN = 1024 -pkg syscall (netbsd-arm64), const IEXTEN ideal-int -pkg syscall (netbsd-arm64), const IFAN_ARRIVAL = 0 -pkg syscall (netbsd-arm64), const IFAN_ARRIVAL ideal-int -pkg syscall (netbsd-arm64), const IFAN_DEPARTURE = 1 -pkg syscall (netbsd-arm64), const IFAN_DEPARTURE ideal-int -pkg syscall (netbsd-arm64), const IFA_ROUTE = 1 -pkg syscall (netbsd-arm64), const IFA_ROUTE ideal-int -pkg syscall (netbsd-arm64), const IFF_ALLMULTI = 512 -pkg syscall (netbsd-arm64), const IFF_ALLMULTI ideal-int -pkg syscall (netbsd-arm64), const IFF_CANTCHANGE = 36690 -pkg syscall (netbsd-arm64), const IFF_CANTCHANGE ideal-int -pkg syscall (netbsd-arm64), const IFF_DEBUG = 4 -pkg syscall (netbsd-arm64), const IFF_DEBUG ideal-int -pkg syscall (netbsd-arm64), const IFF_LINK0 = 4096 -pkg syscall (netbsd-arm64), const IFF_LINK0 ideal-int -pkg syscall (netbsd-arm64), const IFF_LINK1 = 8192 -pkg syscall (netbsd-arm64), const IFF_LINK1 ideal-int -pkg syscall (netbsd-arm64), const IFF_LINK2 = 16384 -pkg syscall (netbsd-arm64), const IFF_LINK2 ideal-int -pkg syscall (netbsd-arm64), const IFF_LOOPBACK = 8 -pkg syscall (netbsd-arm64), const IFF_MULTICAST = 32768 -pkg syscall (netbsd-arm64), const IFF_NOARP = 128 -pkg syscall (netbsd-arm64), const IFF_NOARP ideal-int -pkg syscall (netbsd-arm64), const IFF_NOTRAILERS = 32 -pkg syscall (netbsd-arm64), const IFF_NOTRAILERS ideal-int -pkg syscall (netbsd-arm64), const IFF_OACTIVE = 1024 -pkg syscall (netbsd-arm64), const IFF_OACTIVE ideal-int -pkg syscall (netbsd-arm64), const IFF_POINTOPOINT = 16 -pkg syscall (netbsd-arm64), const IFF_POINTOPOINT ideal-int -pkg syscall (netbsd-arm64), const IFF_PROMISC = 256 -pkg syscall (netbsd-arm64), const IFF_PROMISC ideal-int -pkg syscall (netbsd-arm64), const IFF_RUNNING = 64 -pkg syscall (netbsd-arm64), const IFF_RUNNING ideal-int -pkg syscall (netbsd-arm64), const IFF_SIMPLEX = 2048 -pkg syscall (netbsd-arm64), const IFF_SIMPLEX ideal-int -pkg syscall (netbsd-arm64), const IFNAMSIZ = 16 -pkg syscall (netbsd-arm64), const IFNAMSIZ ideal-int -pkg syscall (netbsd-arm64), const IFT_1822 = 2 -pkg syscall (netbsd-arm64), const IFT_1822 ideal-int -pkg syscall (netbsd-arm64), const IFT_A12MPPSWITCH = 130 -pkg syscall (netbsd-arm64), const IFT_A12MPPSWITCH ideal-int -pkg syscall (netbsd-arm64), const IFT_AAL2 = 187 -pkg syscall (netbsd-arm64), const IFT_AAL2 ideal-int -pkg syscall (netbsd-arm64), const IFT_AAL5 = 49 -pkg syscall (netbsd-arm64), const IFT_AAL5 ideal-int -pkg syscall (netbsd-arm64), const IFT_ADSL = 94 -pkg syscall (netbsd-arm64), const IFT_ADSL ideal-int -pkg syscall (netbsd-arm64), const IFT_AFLANE8023 = 59 -pkg syscall (netbsd-arm64), const IFT_AFLANE8023 ideal-int -pkg syscall (netbsd-arm64), const IFT_AFLANE8025 = 60 -pkg syscall (netbsd-arm64), const IFT_AFLANE8025 ideal-int -pkg syscall (netbsd-arm64), const IFT_ARAP = 88 -pkg syscall (netbsd-arm64), const IFT_ARAP ideal-int -pkg syscall (netbsd-arm64), const IFT_ARCNET = 35 -pkg syscall (netbsd-arm64), const IFT_ARCNET ideal-int -pkg syscall (netbsd-arm64), const IFT_ARCNETPLUS = 36 -pkg syscall (netbsd-arm64), const IFT_ARCNETPLUS ideal-int -pkg syscall (netbsd-arm64), const IFT_ASYNC = 84 -pkg syscall (netbsd-arm64), const IFT_ASYNC ideal-int -pkg syscall (netbsd-arm64), const IFT_ATM = 37 -pkg syscall (netbsd-arm64), const IFT_ATM ideal-int -pkg syscall (netbsd-arm64), const IFT_ATMDXI = 105 -pkg syscall (netbsd-arm64), const IFT_ATMDXI ideal-int -pkg syscall (netbsd-arm64), const IFT_ATMFUNI = 106 -pkg syscall (netbsd-arm64), const IFT_ATMFUNI ideal-int -pkg syscall (netbsd-arm64), const IFT_ATMIMA = 107 -pkg syscall (netbsd-arm64), const IFT_ATMIMA ideal-int -pkg syscall (netbsd-arm64), const IFT_ATMLOGICAL = 80 -pkg syscall (netbsd-arm64), const IFT_ATMLOGICAL ideal-int -pkg syscall (netbsd-arm64), const IFT_ATMRADIO = 189 -pkg syscall (netbsd-arm64), const IFT_ATMRADIO ideal-int -pkg syscall (netbsd-arm64), const IFT_ATMSUBINTERFACE = 134 -pkg syscall (netbsd-arm64), const IFT_ATMSUBINTERFACE ideal-int -pkg syscall (netbsd-arm64), const IFT_ATMVCIENDPT = 194 -pkg syscall (netbsd-arm64), const IFT_ATMVCIENDPT ideal-int -pkg syscall (netbsd-arm64), const IFT_ATMVIRTUAL = 149 -pkg syscall (netbsd-arm64), const IFT_ATMVIRTUAL ideal-int -pkg syscall (netbsd-arm64), const IFT_BGPPOLICYACCOUNTING = 162 -pkg syscall (netbsd-arm64), const IFT_BGPPOLICYACCOUNTING ideal-int -pkg syscall (netbsd-arm64), const IFT_BRIDGE = 209 -pkg syscall (netbsd-arm64), const IFT_BRIDGE ideal-int -pkg syscall (netbsd-arm64), const IFT_BSC = 83 -pkg syscall (netbsd-arm64), const IFT_BSC ideal-int -pkg syscall (netbsd-arm64), const IFT_CARP = 248 -pkg syscall (netbsd-arm64), const IFT_CARP ideal-int -pkg syscall (netbsd-arm64), const IFT_CCTEMUL = 61 -pkg syscall (netbsd-arm64), const IFT_CCTEMUL ideal-int -pkg syscall (netbsd-arm64), const IFT_CEPT = 19 -pkg syscall (netbsd-arm64), const IFT_CEPT ideal-int -pkg syscall (netbsd-arm64), const IFT_CES = 133 -pkg syscall (netbsd-arm64), const IFT_CES ideal-int -pkg syscall (netbsd-arm64), const IFT_CHANNEL = 70 -pkg syscall (netbsd-arm64), const IFT_CHANNEL ideal-int -pkg syscall (netbsd-arm64), const IFT_CNR = 85 -pkg syscall (netbsd-arm64), const IFT_CNR ideal-int -pkg syscall (netbsd-arm64), const IFT_COFFEE = 132 -pkg syscall (netbsd-arm64), const IFT_COFFEE ideal-int -pkg syscall (netbsd-arm64), const IFT_COMPOSITELINK = 155 -pkg syscall (netbsd-arm64), const IFT_COMPOSITELINK ideal-int -pkg syscall (netbsd-arm64), const IFT_DCN = 141 -pkg syscall (netbsd-arm64), const IFT_DCN ideal-int -pkg syscall (netbsd-arm64), const IFT_DIGITALPOWERLINE = 138 -pkg syscall (netbsd-arm64), const IFT_DIGITALPOWERLINE ideal-int -pkg syscall (netbsd-arm64), const IFT_DIGITALWRAPPEROVERHEADCHANNEL = 186 -pkg syscall (netbsd-arm64), const IFT_DIGITALWRAPPEROVERHEADCHANNEL ideal-int -pkg syscall (netbsd-arm64), const IFT_DLSW = 74 -pkg syscall (netbsd-arm64), const IFT_DLSW ideal-int -pkg syscall (netbsd-arm64), const IFT_DOCSCABLEDOWNSTREAM = 128 -pkg syscall (netbsd-arm64), const IFT_DOCSCABLEDOWNSTREAM ideal-int -pkg syscall (netbsd-arm64), const IFT_DOCSCABLEMACLAYER = 127 -pkg syscall (netbsd-arm64), const IFT_DOCSCABLEMACLAYER ideal-int -pkg syscall (netbsd-arm64), const IFT_DOCSCABLEUPSTREAM = 129 -pkg syscall (netbsd-arm64), const IFT_DOCSCABLEUPSTREAM ideal-int -pkg syscall (netbsd-arm64), const IFT_DOCSCABLEUPSTREAMCHANNEL = 205 -pkg syscall (netbsd-arm64), const IFT_DOCSCABLEUPSTREAMCHANNEL ideal-int -pkg syscall (netbsd-arm64), const IFT_DS0 = 81 -pkg syscall (netbsd-arm64), const IFT_DS0 ideal-int -pkg syscall (netbsd-arm64), const IFT_DS0BUNDLE = 82 -pkg syscall (netbsd-arm64), const IFT_DS0BUNDLE ideal-int -pkg syscall (netbsd-arm64), const IFT_DS1FDL = 170 -pkg syscall (netbsd-arm64), const IFT_DS1FDL ideal-int -pkg syscall (netbsd-arm64), const IFT_DS3 = 30 -pkg syscall (netbsd-arm64), const IFT_DS3 ideal-int -pkg syscall (netbsd-arm64), const IFT_DTM = 140 -pkg syscall (netbsd-arm64), const IFT_DTM ideal-int -pkg syscall (netbsd-arm64), const IFT_DVBASILN = 172 -pkg syscall (netbsd-arm64), const IFT_DVBASILN ideal-int -pkg syscall (netbsd-arm64), const IFT_DVBASIOUT = 173 -pkg syscall (netbsd-arm64), const IFT_DVBASIOUT ideal-int -pkg syscall (netbsd-arm64), const IFT_DVBRCCDOWNSTREAM = 147 -pkg syscall (netbsd-arm64), const IFT_DVBRCCDOWNSTREAM ideal-int -pkg syscall (netbsd-arm64), const IFT_DVBRCCMACLAYER = 146 -pkg syscall (netbsd-arm64), const IFT_DVBRCCMACLAYER ideal-int -pkg syscall (netbsd-arm64), const IFT_DVBRCCUPSTREAM = 148 -pkg syscall (netbsd-arm64), const IFT_DVBRCCUPSTREAM ideal-int -pkg syscall (netbsd-arm64), const IFT_ECONET = 206 -pkg syscall (netbsd-arm64), const IFT_ECONET ideal-int -pkg syscall (netbsd-arm64), const IFT_EON = 25 -pkg syscall (netbsd-arm64), const IFT_EON ideal-int -pkg syscall (netbsd-arm64), const IFT_EPLRS = 87 -pkg syscall (netbsd-arm64), const IFT_EPLRS ideal-int -pkg syscall (netbsd-arm64), const IFT_ESCON = 73 -pkg syscall (netbsd-arm64), const IFT_ESCON ideal-int -pkg syscall (netbsd-arm64), const IFT_ETHER = 6 -pkg syscall (netbsd-arm64), const IFT_ETHER ideal-int -pkg syscall (netbsd-arm64), const IFT_FAITH = 242 -pkg syscall (netbsd-arm64), const IFT_FAITH ideal-int -pkg syscall (netbsd-arm64), const IFT_FAST = 125 -pkg syscall (netbsd-arm64), const IFT_FAST ideal-int -pkg syscall (netbsd-arm64), const IFT_FASTETHER = 62 -pkg syscall (netbsd-arm64), const IFT_FASTETHER ideal-int -pkg syscall (netbsd-arm64), const IFT_FASTETHERFX = 69 -pkg syscall (netbsd-arm64), const IFT_FASTETHERFX ideal-int -pkg syscall (netbsd-arm64), const IFT_FDDI = 15 -pkg syscall (netbsd-arm64), const IFT_FDDI ideal-int -pkg syscall (netbsd-arm64), const IFT_FIBRECHANNEL = 56 -pkg syscall (netbsd-arm64), const IFT_FIBRECHANNEL ideal-int -pkg syscall (netbsd-arm64), const IFT_FRAMERELAYINTERCONNECT = 58 -pkg syscall (netbsd-arm64), const IFT_FRAMERELAYINTERCONNECT ideal-int -pkg syscall (netbsd-arm64), const IFT_FRAMERELAYMPI = 92 -pkg syscall (netbsd-arm64), const IFT_FRAMERELAYMPI ideal-int -pkg syscall (netbsd-arm64), const IFT_FRDLCIENDPT = 193 -pkg syscall (netbsd-arm64), const IFT_FRDLCIENDPT ideal-int -pkg syscall (netbsd-arm64), const IFT_FRELAY = 32 -pkg syscall (netbsd-arm64), const IFT_FRELAY ideal-int -pkg syscall (netbsd-arm64), const IFT_FRELAYDCE = 44 -pkg syscall (netbsd-arm64), const IFT_FRELAYDCE ideal-int -pkg syscall (netbsd-arm64), const IFT_FRF16MFRBUNDLE = 163 -pkg syscall (netbsd-arm64), const IFT_FRF16MFRBUNDLE ideal-int -pkg syscall (netbsd-arm64), const IFT_FRFORWARD = 158 -pkg syscall (netbsd-arm64), const IFT_FRFORWARD ideal-int -pkg syscall (netbsd-arm64), const IFT_G703AT2MB = 67 -pkg syscall (netbsd-arm64), const IFT_G703AT2MB ideal-int -pkg syscall (netbsd-arm64), const IFT_G703AT64K = 66 -pkg syscall (netbsd-arm64), const IFT_G703AT64K ideal-int -pkg syscall (netbsd-arm64), const IFT_GIF = 240 -pkg syscall (netbsd-arm64), const IFT_GIF ideal-int -pkg syscall (netbsd-arm64), const IFT_GIGABITETHERNET = 117 -pkg syscall (netbsd-arm64), const IFT_GIGABITETHERNET ideal-int -pkg syscall (netbsd-arm64), const IFT_GR303IDT = 178 -pkg syscall (netbsd-arm64), const IFT_GR303IDT ideal-int -pkg syscall (netbsd-arm64), const IFT_GR303RDT = 177 -pkg syscall (netbsd-arm64), const IFT_GR303RDT ideal-int -pkg syscall (netbsd-arm64), const IFT_H323GATEKEEPER = 164 -pkg syscall (netbsd-arm64), const IFT_H323GATEKEEPER ideal-int -pkg syscall (netbsd-arm64), const IFT_H323PROXY = 165 -pkg syscall (netbsd-arm64), const IFT_H323PROXY ideal-int -pkg syscall (netbsd-arm64), const IFT_HDH1822 = 3 -pkg syscall (netbsd-arm64), const IFT_HDH1822 ideal-int -pkg syscall (netbsd-arm64), const IFT_HDLC = 118 -pkg syscall (netbsd-arm64), const IFT_HDLC ideal-int -pkg syscall (netbsd-arm64), const IFT_HDSL2 = 168 -pkg syscall (netbsd-arm64), const IFT_HDSL2 ideal-int -pkg syscall (netbsd-arm64), const IFT_HIPERLAN2 = 183 -pkg syscall (netbsd-arm64), const IFT_HIPERLAN2 ideal-int -pkg syscall (netbsd-arm64), const IFT_HIPPI = 47 -pkg syscall (netbsd-arm64), const IFT_HIPPI ideal-int -pkg syscall (netbsd-arm64), const IFT_HIPPIINTERFACE = 57 -pkg syscall (netbsd-arm64), const IFT_HIPPIINTERFACE ideal-int -pkg syscall (netbsd-arm64), const IFT_HOSTPAD = 90 -pkg syscall (netbsd-arm64), const IFT_HOSTPAD ideal-int -pkg syscall (netbsd-arm64), const IFT_HSSI = 46 -pkg syscall (netbsd-arm64), const IFT_HSSI ideal-int -pkg syscall (netbsd-arm64), const IFT_HY = 14 -pkg syscall (netbsd-arm64), const IFT_HY ideal-int -pkg syscall (netbsd-arm64), const IFT_IBM370PARCHAN = 72 -pkg syscall (netbsd-arm64), const IFT_IBM370PARCHAN ideal-int -pkg syscall (netbsd-arm64), const IFT_IDSL = 154 -pkg syscall (netbsd-arm64), const IFT_IDSL ideal-int -pkg syscall (netbsd-arm64), const IFT_IEEE1394 = 144 -pkg syscall (netbsd-arm64), const IFT_IEEE1394 ideal-int -pkg syscall (netbsd-arm64), const IFT_IEEE80211 = 71 -pkg syscall (netbsd-arm64), const IFT_IEEE80211 ideal-int -pkg syscall (netbsd-arm64), const IFT_IEEE80212 = 55 -pkg syscall (netbsd-arm64), const IFT_IEEE80212 ideal-int -pkg syscall (netbsd-arm64), const IFT_IEEE8023ADLAG = 161 -pkg syscall (netbsd-arm64), const IFT_IEEE8023ADLAG ideal-int -pkg syscall (netbsd-arm64), const IFT_IFGSN = 145 -pkg syscall (netbsd-arm64), const IFT_IFGSN ideal-int -pkg syscall (netbsd-arm64), const IFT_IMT = 190 -pkg syscall (netbsd-arm64), const IFT_IMT ideal-int -pkg syscall (netbsd-arm64), const IFT_INFINIBAND = 199 -pkg syscall (netbsd-arm64), const IFT_INFINIBAND ideal-int -pkg syscall (netbsd-arm64), const IFT_INTERLEAVE = 124 -pkg syscall (netbsd-arm64), const IFT_INTERLEAVE ideal-int -pkg syscall (netbsd-arm64), const IFT_IP = 126 -pkg syscall (netbsd-arm64), const IFT_IP ideal-int -pkg syscall (netbsd-arm64), const IFT_IPFORWARD = 142 -pkg syscall (netbsd-arm64), const IFT_IPFORWARD ideal-int -pkg syscall (netbsd-arm64), const IFT_IPOVERATM = 114 -pkg syscall (netbsd-arm64), const IFT_IPOVERATM ideal-int -pkg syscall (netbsd-arm64), const IFT_IPOVERCDLC = 109 -pkg syscall (netbsd-arm64), const IFT_IPOVERCDLC ideal-int -pkg syscall (netbsd-arm64), const IFT_IPOVERCLAW = 110 -pkg syscall (netbsd-arm64), const IFT_IPOVERCLAW ideal-int -pkg syscall (netbsd-arm64), const IFT_IPSWITCH = 78 -pkg syscall (netbsd-arm64), const IFT_IPSWITCH ideal-int -pkg syscall (netbsd-arm64), const IFT_ISDN = 63 -pkg syscall (netbsd-arm64), const IFT_ISDN ideal-int -pkg syscall (netbsd-arm64), const IFT_ISDNBASIC = 20 -pkg syscall (netbsd-arm64), const IFT_ISDNBASIC ideal-int -pkg syscall (netbsd-arm64), const IFT_ISDNPRIMARY = 21 -pkg syscall (netbsd-arm64), const IFT_ISDNPRIMARY ideal-int -pkg syscall (netbsd-arm64), const IFT_ISDNS = 75 -pkg syscall (netbsd-arm64), const IFT_ISDNS ideal-int -pkg syscall (netbsd-arm64), const IFT_ISDNU = 76 -pkg syscall (netbsd-arm64), const IFT_ISDNU ideal-int -pkg syscall (netbsd-arm64), const IFT_ISO88022LLC = 41 -pkg syscall (netbsd-arm64), const IFT_ISO88022LLC ideal-int -pkg syscall (netbsd-arm64), const IFT_ISO88023 = 7 -pkg syscall (netbsd-arm64), const IFT_ISO88023 ideal-int -pkg syscall (netbsd-arm64), const IFT_ISO88024 = 8 -pkg syscall (netbsd-arm64), const IFT_ISO88024 ideal-int -pkg syscall (netbsd-arm64), const IFT_ISO88025 = 9 -pkg syscall (netbsd-arm64), const IFT_ISO88025 ideal-int -pkg syscall (netbsd-arm64), const IFT_ISO88025CRFPINT = 98 -pkg syscall (netbsd-arm64), const IFT_ISO88025CRFPINT ideal-int -pkg syscall (netbsd-arm64), const IFT_ISO88025DTR = 86 -pkg syscall (netbsd-arm64), const IFT_ISO88025DTR ideal-int -pkg syscall (netbsd-arm64), const IFT_ISO88025FIBER = 115 -pkg syscall (netbsd-arm64), const IFT_ISO88025FIBER ideal-int -pkg syscall (netbsd-arm64), const IFT_ISO88026 = 10 -pkg syscall (netbsd-arm64), const IFT_ISO88026 ideal-int -pkg syscall (netbsd-arm64), const IFT_ISUP = 179 -pkg syscall (netbsd-arm64), const IFT_ISUP ideal-int -pkg syscall (netbsd-arm64), const IFT_L2VLAN = 135 -pkg syscall (netbsd-arm64), const IFT_L2VLAN ideal-int -pkg syscall (netbsd-arm64), const IFT_L3IPVLAN = 136 -pkg syscall (netbsd-arm64), const IFT_L3IPVLAN ideal-int -pkg syscall (netbsd-arm64), const IFT_L3IPXVLAN = 137 -pkg syscall (netbsd-arm64), const IFT_L3IPXVLAN ideal-int -pkg syscall (netbsd-arm64), const IFT_LAPB = 16 -pkg syscall (netbsd-arm64), const IFT_LAPB ideal-int -pkg syscall (netbsd-arm64), const IFT_LAPD = 77 -pkg syscall (netbsd-arm64), const IFT_LAPD ideal-int -pkg syscall (netbsd-arm64), const IFT_LAPF = 119 -pkg syscall (netbsd-arm64), const IFT_LAPF ideal-int -pkg syscall (netbsd-arm64), const IFT_LINEGROUP = 210 -pkg syscall (netbsd-arm64), const IFT_LINEGROUP ideal-int -pkg syscall (netbsd-arm64), const IFT_LOCALTALK = 42 -pkg syscall (netbsd-arm64), const IFT_LOCALTALK ideal-int -pkg syscall (netbsd-arm64), const IFT_LOOP = 24 -pkg syscall (netbsd-arm64), const IFT_LOOP ideal-int -pkg syscall (netbsd-arm64), const IFT_MEDIAMAILOVERIP = 139 -pkg syscall (netbsd-arm64), const IFT_MEDIAMAILOVERIP ideal-int -pkg syscall (netbsd-arm64), const IFT_MFSIGLINK = 167 -pkg syscall (netbsd-arm64), const IFT_MFSIGLINK ideal-int -pkg syscall (netbsd-arm64), const IFT_MIOX25 = 38 -pkg syscall (netbsd-arm64), const IFT_MIOX25 ideal-int -pkg syscall (netbsd-arm64), const IFT_MODEM = 48 -pkg syscall (netbsd-arm64), const IFT_MODEM ideal-int -pkg syscall (netbsd-arm64), const IFT_MPC = 113 -pkg syscall (netbsd-arm64), const IFT_MPC ideal-int -pkg syscall (netbsd-arm64), const IFT_MPLS = 166 -pkg syscall (netbsd-arm64), const IFT_MPLS ideal-int -pkg syscall (netbsd-arm64), const IFT_MPLSTUNNEL = 150 -pkg syscall (netbsd-arm64), const IFT_MPLSTUNNEL ideal-int -pkg syscall (netbsd-arm64), const IFT_MSDSL = 143 -pkg syscall (netbsd-arm64), const IFT_MSDSL ideal-int -pkg syscall (netbsd-arm64), const IFT_MVL = 191 -pkg syscall (netbsd-arm64), const IFT_MVL ideal-int -pkg syscall (netbsd-arm64), const IFT_MYRINET = 99 -pkg syscall (netbsd-arm64), const IFT_MYRINET ideal-int -pkg syscall (netbsd-arm64), const IFT_NFAS = 175 -pkg syscall (netbsd-arm64), const IFT_NFAS ideal-int -pkg syscall (netbsd-arm64), const IFT_NSIP = 27 -pkg syscall (netbsd-arm64), const IFT_NSIP ideal-int -pkg syscall (netbsd-arm64), const IFT_OPTICALCHANNEL = 195 -pkg syscall (netbsd-arm64), const IFT_OPTICALCHANNEL ideal-int -pkg syscall (netbsd-arm64), const IFT_OPTICALTRANSPORT = 196 -pkg syscall (netbsd-arm64), const IFT_OPTICALTRANSPORT ideal-int -pkg syscall (netbsd-arm64), const IFT_OTHER = 1 -pkg syscall (netbsd-arm64), const IFT_OTHER ideal-int -pkg syscall (netbsd-arm64), const IFT_P10 = 12 -pkg syscall (netbsd-arm64), const IFT_P10 ideal-int -pkg syscall (netbsd-arm64), const IFT_P80 = 13 -pkg syscall (netbsd-arm64), const IFT_P80 ideal-int -pkg syscall (netbsd-arm64), const IFT_PARA = 34 -pkg syscall (netbsd-arm64), const IFT_PARA ideal-int -pkg syscall (netbsd-arm64), const IFT_PFLOG = 245 -pkg syscall (netbsd-arm64), const IFT_PFLOG ideal-int -pkg syscall (netbsd-arm64), const IFT_PFSYNC = 246 -pkg syscall (netbsd-arm64), const IFT_PFSYNC ideal-int -pkg syscall (netbsd-arm64), const IFT_PLC = 174 -pkg syscall (netbsd-arm64), const IFT_PLC ideal-int -pkg syscall (netbsd-arm64), const IFT_PON155 = 207 -pkg syscall (netbsd-arm64), const IFT_PON155 ideal-int -pkg syscall (netbsd-arm64), const IFT_PON622 = 208 -pkg syscall (netbsd-arm64), const IFT_PON622 ideal-int -pkg syscall (netbsd-arm64), const IFT_POS = 171 -pkg syscall (netbsd-arm64), const IFT_POS ideal-int -pkg syscall (netbsd-arm64), const IFT_PPP = 23 -pkg syscall (netbsd-arm64), const IFT_PPP ideal-int -pkg syscall (netbsd-arm64), const IFT_PPPMULTILINKBUNDLE = 108 -pkg syscall (netbsd-arm64), const IFT_PPPMULTILINKBUNDLE ideal-int -pkg syscall (netbsd-arm64), const IFT_PROPATM = 197 -pkg syscall (netbsd-arm64), const IFT_PROPATM ideal-int -pkg syscall (netbsd-arm64), const IFT_PROPBWAP2MP = 184 -pkg syscall (netbsd-arm64), const IFT_PROPBWAP2MP ideal-int -pkg syscall (netbsd-arm64), const IFT_PROPCNLS = 89 -pkg syscall (netbsd-arm64), const IFT_PROPCNLS ideal-int -pkg syscall (netbsd-arm64), const IFT_PROPDOCSWIRELESSDOWNSTREAM = 181 -pkg syscall (netbsd-arm64), const IFT_PROPDOCSWIRELESSDOWNSTREAM ideal-int -pkg syscall (netbsd-arm64), const IFT_PROPDOCSWIRELESSMACLAYER = 180 -pkg syscall (netbsd-arm64), const IFT_PROPDOCSWIRELESSMACLAYER ideal-int -pkg syscall (netbsd-arm64), const IFT_PROPDOCSWIRELESSUPSTREAM = 182 -pkg syscall (netbsd-arm64), const IFT_PROPDOCSWIRELESSUPSTREAM ideal-int -pkg syscall (netbsd-arm64), const IFT_PROPMUX = 54 -pkg syscall (netbsd-arm64), const IFT_PROPMUX ideal-int -pkg syscall (netbsd-arm64), const IFT_PROPVIRTUAL = 53 -pkg syscall (netbsd-arm64), const IFT_PROPVIRTUAL ideal-int -pkg syscall (netbsd-arm64), const IFT_PROPWIRELESSP2P = 157 -pkg syscall (netbsd-arm64), const IFT_PROPWIRELESSP2P ideal-int -pkg syscall (netbsd-arm64), const IFT_PTPSERIAL = 22 -pkg syscall (netbsd-arm64), const IFT_PTPSERIAL ideal-int -pkg syscall (netbsd-arm64), const IFT_PVC = 241 -pkg syscall (netbsd-arm64), const IFT_PVC ideal-int -pkg syscall (netbsd-arm64), const IFT_Q2931 = 201 -pkg syscall (netbsd-arm64), const IFT_Q2931 ideal-int -pkg syscall (netbsd-arm64), const IFT_QLLC = 68 -pkg syscall (netbsd-arm64), const IFT_QLLC ideal-int -pkg syscall (netbsd-arm64), const IFT_RADIOMAC = 188 -pkg syscall (netbsd-arm64), const IFT_RADIOMAC ideal-int -pkg syscall (netbsd-arm64), const IFT_RADSL = 95 -pkg syscall (netbsd-arm64), const IFT_RADSL ideal-int -pkg syscall (netbsd-arm64), const IFT_REACHDSL = 192 -pkg syscall (netbsd-arm64), const IFT_REACHDSL ideal-int -pkg syscall (netbsd-arm64), const IFT_RFC1483 = 159 -pkg syscall (netbsd-arm64), const IFT_RFC1483 ideal-int -pkg syscall (netbsd-arm64), const IFT_RS232 = 33 -pkg syscall (netbsd-arm64), const IFT_RS232 ideal-int -pkg syscall (netbsd-arm64), const IFT_RSRB = 79 -pkg syscall (netbsd-arm64), const IFT_RSRB ideal-int -pkg syscall (netbsd-arm64), const IFT_SDLC = 17 -pkg syscall (netbsd-arm64), const IFT_SDLC ideal-int -pkg syscall (netbsd-arm64), const IFT_SDSL = 96 -pkg syscall (netbsd-arm64), const IFT_SDSL ideal-int -pkg syscall (netbsd-arm64), const IFT_SHDSL = 169 -pkg syscall (netbsd-arm64), const IFT_SHDSL ideal-int -pkg syscall (netbsd-arm64), const IFT_SIP = 31 -pkg syscall (netbsd-arm64), const IFT_SIP ideal-int -pkg syscall (netbsd-arm64), const IFT_SIPSIG = 204 -pkg syscall (netbsd-arm64), const IFT_SIPSIG ideal-int -pkg syscall (netbsd-arm64), const IFT_SIPTG = 203 -pkg syscall (netbsd-arm64), const IFT_SIPTG ideal-int -pkg syscall (netbsd-arm64), const IFT_SLIP = 28 -pkg syscall (netbsd-arm64), const IFT_SLIP ideal-int -pkg syscall (netbsd-arm64), const IFT_SMDSDXI = 43 -pkg syscall (netbsd-arm64), const IFT_SMDSDXI ideal-int -pkg syscall (netbsd-arm64), const IFT_SMDSICIP = 52 -pkg syscall (netbsd-arm64), const IFT_SMDSICIP ideal-int -pkg syscall (netbsd-arm64), const IFT_SONET = 39 -pkg syscall (netbsd-arm64), const IFT_SONET ideal-int -pkg syscall (netbsd-arm64), const IFT_SONETOVERHEADCHANNEL = 185 -pkg syscall (netbsd-arm64), const IFT_SONETOVERHEADCHANNEL ideal-int -pkg syscall (netbsd-arm64), const IFT_SONETPATH = 50 -pkg syscall (netbsd-arm64), const IFT_SONETPATH ideal-int -pkg syscall (netbsd-arm64), const IFT_SONETVT = 51 -pkg syscall (netbsd-arm64), const IFT_SONETVT ideal-int -pkg syscall (netbsd-arm64), const IFT_SRP = 151 -pkg syscall (netbsd-arm64), const IFT_SRP ideal-int -pkg syscall (netbsd-arm64), const IFT_SS7SIGLINK = 156 -pkg syscall (netbsd-arm64), const IFT_SS7SIGLINK ideal-int -pkg syscall (netbsd-arm64), const IFT_STACKTOSTACK = 111 -pkg syscall (netbsd-arm64), const IFT_STACKTOSTACK ideal-int -pkg syscall (netbsd-arm64), const IFT_STARLAN = 11 -pkg syscall (netbsd-arm64), const IFT_STARLAN ideal-int -pkg syscall (netbsd-arm64), const IFT_STF = 215 -pkg syscall (netbsd-arm64), const IFT_STF ideal-int -pkg syscall (netbsd-arm64), const IFT_T1 = 18 -pkg syscall (netbsd-arm64), const IFT_T1 ideal-int -pkg syscall (netbsd-arm64), const IFT_TDLC = 116 -pkg syscall (netbsd-arm64), const IFT_TDLC ideal-int -pkg syscall (netbsd-arm64), const IFT_TELINK = 200 -pkg syscall (netbsd-arm64), const IFT_TELINK ideal-int -pkg syscall (netbsd-arm64), const IFT_TERMPAD = 91 -pkg syscall (netbsd-arm64), const IFT_TERMPAD ideal-int -pkg syscall (netbsd-arm64), const IFT_TR008 = 176 -pkg syscall (netbsd-arm64), const IFT_TR008 ideal-int -pkg syscall (netbsd-arm64), const IFT_TRANSPHDLC = 123 -pkg syscall (netbsd-arm64), const IFT_TRANSPHDLC ideal-int -pkg syscall (netbsd-arm64), const IFT_TUNNEL = 131 -pkg syscall (netbsd-arm64), const IFT_TUNNEL ideal-int -pkg syscall (netbsd-arm64), const IFT_ULTRA = 29 -pkg syscall (netbsd-arm64), const IFT_ULTRA ideal-int -pkg syscall (netbsd-arm64), const IFT_USB = 160 -pkg syscall (netbsd-arm64), const IFT_USB ideal-int -pkg syscall (netbsd-arm64), const IFT_V11 = 64 -pkg syscall (netbsd-arm64), const IFT_V11 ideal-int -pkg syscall (netbsd-arm64), const IFT_V35 = 45 -pkg syscall (netbsd-arm64), const IFT_V35 ideal-int -pkg syscall (netbsd-arm64), const IFT_V36 = 65 -pkg syscall (netbsd-arm64), const IFT_V36 ideal-int -pkg syscall (netbsd-arm64), const IFT_V37 = 120 -pkg syscall (netbsd-arm64), const IFT_V37 ideal-int -pkg syscall (netbsd-arm64), const IFT_VDSL = 97 -pkg syscall (netbsd-arm64), const IFT_VDSL ideal-int -pkg syscall (netbsd-arm64), const IFT_VIRTUALIPADDRESS = 112 -pkg syscall (netbsd-arm64), const IFT_VIRTUALIPADDRESS ideal-int -pkg syscall (netbsd-arm64), const IFT_VIRTUALTG = 202 -pkg syscall (netbsd-arm64), const IFT_VIRTUALTG ideal-int -pkg syscall (netbsd-arm64), const IFT_VOICEDID = 213 -pkg syscall (netbsd-arm64), const IFT_VOICEDID ideal-int -pkg syscall (netbsd-arm64), const IFT_VOICEEM = 100 -pkg syscall (netbsd-arm64), const IFT_VOICEEM ideal-int -pkg syscall (netbsd-arm64), const IFT_VOICEEMFGD = 211 -pkg syscall (netbsd-arm64), const IFT_VOICEEMFGD ideal-int -pkg syscall (netbsd-arm64), const IFT_VOICEENCAP = 103 -pkg syscall (netbsd-arm64), const IFT_VOICEENCAP ideal-int -pkg syscall (netbsd-arm64), const IFT_VOICEFGDEANA = 212 -pkg syscall (netbsd-arm64), const IFT_VOICEFGDEANA ideal-int -pkg syscall (netbsd-arm64), const IFT_VOICEFXO = 101 -pkg syscall (netbsd-arm64), const IFT_VOICEFXO ideal-int -pkg syscall (netbsd-arm64), const IFT_VOICEFXS = 102 -pkg syscall (netbsd-arm64), const IFT_VOICEFXS ideal-int -pkg syscall (netbsd-arm64), const IFT_VOICEOVERATM = 152 -pkg syscall (netbsd-arm64), const IFT_VOICEOVERATM ideal-int -pkg syscall (netbsd-arm64), const IFT_VOICEOVERCABLE = 198 -pkg syscall (netbsd-arm64), const IFT_VOICEOVERCABLE ideal-int -pkg syscall (netbsd-arm64), const IFT_VOICEOVERFRAMERELAY = 153 -pkg syscall (netbsd-arm64), const IFT_VOICEOVERFRAMERELAY ideal-int -pkg syscall (netbsd-arm64), const IFT_VOICEOVERIP = 104 -pkg syscall (netbsd-arm64), const IFT_VOICEOVERIP ideal-int -pkg syscall (netbsd-arm64), const IFT_X213 = 93 -pkg syscall (netbsd-arm64), const IFT_X213 ideal-int -pkg syscall (netbsd-arm64), const IFT_X25 = 5 -pkg syscall (netbsd-arm64), const IFT_X25 ideal-int -pkg syscall (netbsd-arm64), const IFT_X25DDN = 4 -pkg syscall (netbsd-arm64), const IFT_X25DDN ideal-int -pkg syscall (netbsd-arm64), const IFT_X25HUNTGROUP = 122 -pkg syscall (netbsd-arm64), const IFT_X25HUNTGROUP ideal-int -pkg syscall (netbsd-arm64), const IFT_X25MLP = 121 -pkg syscall (netbsd-arm64), const IFT_X25MLP ideal-int -pkg syscall (netbsd-arm64), const IFT_X25PLE = 40 -pkg syscall (netbsd-arm64), const IFT_X25PLE ideal-int -pkg syscall (netbsd-arm64), const IFT_XETHER = 26 -pkg syscall (netbsd-arm64), const IFT_XETHER ideal-int -pkg syscall (netbsd-arm64), const IGNBRK = 1 -pkg syscall (netbsd-arm64), const IGNBRK ideal-int -pkg syscall (netbsd-arm64), const IGNCR = 128 -pkg syscall (netbsd-arm64), const IGNCR ideal-int -pkg syscall (netbsd-arm64), const IGNPAR = 4 -pkg syscall (netbsd-arm64), const IGNPAR ideal-int -pkg syscall (netbsd-arm64), const IMAXBEL = 8192 -pkg syscall (netbsd-arm64), const IMAXBEL ideal-int -pkg syscall (netbsd-arm64), const INLCR = 64 -pkg syscall (netbsd-arm64), const INLCR ideal-int -pkg syscall (netbsd-arm64), const INPCK = 16 -pkg syscall (netbsd-arm64), const INPCK ideal-int -pkg syscall (netbsd-arm64), const IN_CLASSA_HOST = 16777215 -pkg syscall (netbsd-arm64), const IN_CLASSA_HOST ideal-int -pkg syscall (netbsd-arm64), const IN_CLASSA_MAX = 128 -pkg syscall (netbsd-arm64), const IN_CLASSA_MAX ideal-int -pkg syscall (netbsd-arm64), const IN_CLASSA_NET = 4278190080 -pkg syscall (netbsd-arm64), const IN_CLASSA_NET ideal-int -pkg syscall (netbsd-arm64), const IN_CLASSA_NSHIFT = 24 -pkg syscall (netbsd-arm64), const IN_CLASSA_NSHIFT ideal-int -pkg syscall (netbsd-arm64), const IN_CLASSB_HOST = 65535 -pkg syscall (netbsd-arm64), const IN_CLASSB_HOST ideal-int -pkg syscall (netbsd-arm64), const IN_CLASSB_MAX = 65536 -pkg syscall (netbsd-arm64), const IN_CLASSB_MAX ideal-int -pkg syscall (netbsd-arm64), const IN_CLASSB_NET = 4294901760 -pkg syscall (netbsd-arm64), const IN_CLASSB_NET ideal-int -pkg syscall (netbsd-arm64), const IN_CLASSB_NSHIFT = 16 -pkg syscall (netbsd-arm64), const IN_CLASSB_NSHIFT ideal-int -pkg syscall (netbsd-arm64), const IN_CLASSC_HOST = 255 -pkg syscall (netbsd-arm64), const IN_CLASSC_HOST ideal-int -pkg syscall (netbsd-arm64), const IN_CLASSC_NET = 4294967040 -pkg syscall (netbsd-arm64), const IN_CLASSC_NET ideal-int -pkg syscall (netbsd-arm64), const IN_CLASSC_NSHIFT = 8 -pkg syscall (netbsd-arm64), const IN_CLASSC_NSHIFT ideal-int -pkg syscall (netbsd-arm64), const IN_CLASSD_HOST = 268435455 -pkg syscall (netbsd-arm64), const IN_CLASSD_HOST ideal-int -pkg syscall (netbsd-arm64), const IN_CLASSD_NET = 4026531840 -pkg syscall (netbsd-arm64), const IN_CLASSD_NET ideal-int -pkg syscall (netbsd-arm64), const IN_CLASSD_NSHIFT = 28 -pkg syscall (netbsd-arm64), const IN_CLASSD_NSHIFT ideal-int -pkg syscall (netbsd-arm64), const IN_LOOPBACKNET = 127 -pkg syscall (netbsd-arm64), const IN_LOOPBACKNET ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_AH = 51 -pkg syscall (netbsd-arm64), const IPPROTO_AH ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_CARP = 112 -pkg syscall (netbsd-arm64), const IPPROTO_CARP ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_DONE = 257 -pkg syscall (netbsd-arm64), const IPPROTO_DONE ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_DSTOPTS = 60 -pkg syscall (netbsd-arm64), const IPPROTO_DSTOPTS ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_EGP = 8 -pkg syscall (netbsd-arm64), const IPPROTO_EGP ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_ENCAP = 98 -pkg syscall (netbsd-arm64), const IPPROTO_ENCAP ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_EON = 80 -pkg syscall (netbsd-arm64), const IPPROTO_EON ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_ESP = 50 -pkg syscall (netbsd-arm64), const IPPROTO_ESP ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_ETHERIP = 97 -pkg syscall (netbsd-arm64), const IPPROTO_ETHERIP ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_FRAGMENT = 44 -pkg syscall (netbsd-arm64), const IPPROTO_FRAGMENT ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_GGP = 3 -pkg syscall (netbsd-arm64), const IPPROTO_GGP ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_GRE = 47 -pkg syscall (netbsd-arm64), const IPPROTO_GRE ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_HOPOPTS = 0 -pkg syscall (netbsd-arm64), const IPPROTO_HOPOPTS ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_ICMP = 1 -pkg syscall (netbsd-arm64), const IPPROTO_ICMP ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_ICMPV6 = 58 -pkg syscall (netbsd-arm64), const IPPROTO_ICMPV6 ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_IDP = 22 -pkg syscall (netbsd-arm64), const IPPROTO_IDP ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_IGMP = 2 -pkg syscall (netbsd-arm64), const IPPROTO_IGMP ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_IPCOMP = 108 -pkg syscall (netbsd-arm64), const IPPROTO_IPCOMP ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_IPIP = 4 -pkg syscall (netbsd-arm64), const IPPROTO_IPIP ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_IPV4 = 4 -pkg syscall (netbsd-arm64), const IPPROTO_IPV4 ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_IPV6_ICMP = 58 -pkg syscall (netbsd-arm64), const IPPROTO_IPV6_ICMP ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_MAX = 256 -pkg syscall (netbsd-arm64), const IPPROTO_MAX ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_MAXID = 52 -pkg syscall (netbsd-arm64), const IPPROTO_MAXID ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_MOBILE = 55 -pkg syscall (netbsd-arm64), const IPPROTO_MOBILE ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_NONE = 59 -pkg syscall (netbsd-arm64), const IPPROTO_NONE ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_PFSYNC = 240 -pkg syscall (netbsd-arm64), const IPPROTO_PFSYNC ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_PIM = 103 -pkg syscall (netbsd-arm64), const IPPROTO_PIM ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_PUP = 12 -pkg syscall (netbsd-arm64), const IPPROTO_PUP ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_RAW = 255 -pkg syscall (netbsd-arm64), const IPPROTO_RAW ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_ROUTING = 43 -pkg syscall (netbsd-arm64), const IPPROTO_ROUTING ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_RSVP = 46 -pkg syscall (netbsd-arm64), const IPPROTO_RSVP ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_TP = 29 -pkg syscall (netbsd-arm64), const IPPROTO_TP ideal-int -pkg syscall (netbsd-arm64), const IPPROTO_VRRP = 112 -pkg syscall (netbsd-arm64), const IPPROTO_VRRP ideal-int -pkg syscall (netbsd-arm64), const IPV6_CHECKSUM = 26 -pkg syscall (netbsd-arm64), const IPV6_CHECKSUM ideal-int -pkg syscall (netbsd-arm64), const IPV6_DEFAULT_MULTICAST_HOPS = 1 -pkg syscall (netbsd-arm64), const IPV6_DEFAULT_MULTICAST_HOPS ideal-int -pkg syscall (netbsd-arm64), const IPV6_DEFAULT_MULTICAST_LOOP = 1 -pkg syscall (netbsd-arm64), const IPV6_DEFAULT_MULTICAST_LOOP ideal-int -pkg syscall (netbsd-arm64), const IPV6_DEFHLIM = 64 -pkg syscall (netbsd-arm64), const IPV6_DEFHLIM ideal-int -pkg syscall (netbsd-arm64), const IPV6_DONTFRAG = 62 -pkg syscall (netbsd-arm64), const IPV6_DONTFRAG ideal-int -pkg syscall (netbsd-arm64), const IPV6_DSTOPTS = 50 -pkg syscall (netbsd-arm64), const IPV6_DSTOPTS ideal-int -pkg syscall (netbsd-arm64), const IPV6_FAITH = 29 -pkg syscall (netbsd-arm64), const IPV6_FAITH ideal-int -pkg syscall (netbsd-arm64), const IPV6_FLOWINFO_MASK = 4294967055 -pkg syscall (netbsd-arm64), const IPV6_FLOWINFO_MASK ideal-int -pkg syscall (netbsd-arm64), const IPV6_FLOWLABEL_MASK = 4294905600 -pkg syscall (netbsd-arm64), const IPV6_FLOWLABEL_MASK ideal-int -pkg syscall (netbsd-arm64), const IPV6_FRAGTTL = 120 -pkg syscall (netbsd-arm64), const IPV6_FRAGTTL ideal-int -pkg syscall (netbsd-arm64), const IPV6_HLIMDEC = 1 -pkg syscall (netbsd-arm64), const IPV6_HLIMDEC ideal-int -pkg syscall (netbsd-arm64), const IPV6_HOPLIMIT = 47 -pkg syscall (netbsd-arm64), const IPV6_HOPLIMIT ideal-int -pkg syscall (netbsd-arm64), const IPV6_HOPOPTS = 49 -pkg syscall (netbsd-arm64), const IPV6_HOPOPTS ideal-int -pkg syscall (netbsd-arm64), const IPV6_IPSEC_POLICY = 28 -pkg syscall (netbsd-arm64), const IPV6_IPSEC_POLICY ideal-int -pkg syscall (netbsd-arm64), const IPV6_JOIN_GROUP = 12 -pkg syscall (netbsd-arm64), const IPV6_LEAVE_GROUP = 13 -pkg syscall (netbsd-arm64), const IPV6_MAXHLIM = 255 -pkg syscall (netbsd-arm64), const IPV6_MAXHLIM ideal-int -pkg syscall (netbsd-arm64), const IPV6_MAXPACKET = 65535 -pkg syscall (netbsd-arm64), const IPV6_MAXPACKET ideal-int -pkg syscall (netbsd-arm64), const IPV6_MMTU = 1280 -pkg syscall (netbsd-arm64), const IPV6_MMTU ideal-int -pkg syscall (netbsd-arm64), const IPV6_MULTICAST_HOPS = 10 -pkg syscall (netbsd-arm64), const IPV6_MULTICAST_IF = 9 -pkg syscall (netbsd-arm64), const IPV6_MULTICAST_LOOP = 11 -pkg syscall (netbsd-arm64), const IPV6_NEXTHOP = 48 -pkg syscall (netbsd-arm64), const IPV6_NEXTHOP ideal-int -pkg syscall (netbsd-arm64), const IPV6_PATHMTU = 44 -pkg syscall (netbsd-arm64), const IPV6_PATHMTU ideal-int -pkg syscall (netbsd-arm64), const IPV6_PKTINFO = 46 -pkg syscall (netbsd-arm64), const IPV6_PKTINFO ideal-int -pkg syscall (netbsd-arm64), const IPV6_PORTRANGE = 14 -pkg syscall (netbsd-arm64), const IPV6_PORTRANGE ideal-int -pkg syscall (netbsd-arm64), const IPV6_PORTRANGE_DEFAULT = 0 -pkg syscall (netbsd-arm64), const IPV6_PORTRANGE_DEFAULT ideal-int -pkg syscall (netbsd-arm64), const IPV6_PORTRANGE_HIGH = 1 -pkg syscall (netbsd-arm64), const IPV6_PORTRANGE_HIGH ideal-int -pkg syscall (netbsd-arm64), const IPV6_PORTRANGE_LOW = 2 -pkg syscall (netbsd-arm64), const IPV6_PORTRANGE_LOW ideal-int -pkg syscall (netbsd-arm64), const IPV6_RECVDSTOPTS = 40 -pkg syscall (netbsd-arm64), const IPV6_RECVDSTOPTS ideal-int -pkg syscall (netbsd-arm64), const IPV6_RECVHOPLIMIT = 37 -pkg syscall (netbsd-arm64), const IPV6_RECVHOPLIMIT ideal-int -pkg syscall (netbsd-arm64), const IPV6_RECVHOPOPTS = 39 -pkg syscall (netbsd-arm64), const IPV6_RECVHOPOPTS ideal-int -pkg syscall (netbsd-arm64), const IPV6_RECVPATHMTU = 43 -pkg syscall (netbsd-arm64), const IPV6_RECVPATHMTU ideal-int -pkg syscall (netbsd-arm64), const IPV6_RECVPKTINFO = 36 -pkg syscall (netbsd-arm64), const IPV6_RECVPKTINFO ideal-int -pkg syscall (netbsd-arm64), const IPV6_RECVRTHDR = 38 -pkg syscall (netbsd-arm64), const IPV6_RECVRTHDR ideal-int -pkg syscall (netbsd-arm64), const IPV6_RECVTCLASS = 57 -pkg syscall (netbsd-arm64), const IPV6_RECVTCLASS ideal-int -pkg syscall (netbsd-arm64), const IPV6_RTHDR = 51 -pkg syscall (netbsd-arm64), const IPV6_RTHDR ideal-int -pkg syscall (netbsd-arm64), const IPV6_RTHDRDSTOPTS = 35 -pkg syscall (netbsd-arm64), const IPV6_RTHDRDSTOPTS ideal-int -pkg syscall (netbsd-arm64), const IPV6_RTHDR_LOOSE = 0 -pkg syscall (netbsd-arm64), const IPV6_RTHDR_LOOSE ideal-int -pkg syscall (netbsd-arm64), const IPV6_RTHDR_STRICT = 1 -pkg syscall (netbsd-arm64), const IPV6_RTHDR_STRICT ideal-int -pkg syscall (netbsd-arm64), const IPV6_RTHDR_TYPE_0 = 0 -pkg syscall (netbsd-arm64), const IPV6_RTHDR_TYPE_0 ideal-int -pkg syscall (netbsd-arm64), const IPV6_SOCKOPT_RESERVED1 = 3 -pkg syscall (netbsd-arm64), const IPV6_SOCKOPT_RESERVED1 ideal-int -pkg syscall (netbsd-arm64), const IPV6_TCLASS = 61 -pkg syscall (netbsd-arm64), const IPV6_TCLASS ideal-int -pkg syscall (netbsd-arm64), const IPV6_UNICAST_HOPS = 4 -pkg syscall (netbsd-arm64), const IPV6_USE_MIN_MTU = 42 -pkg syscall (netbsd-arm64), const IPV6_USE_MIN_MTU ideal-int -pkg syscall (netbsd-arm64), const IPV6_V6ONLY = 27 -pkg syscall (netbsd-arm64), const IPV6_VERSION = 96 -pkg syscall (netbsd-arm64), const IPV6_VERSION ideal-int -pkg syscall (netbsd-arm64), const IPV6_VERSION_MASK = 240 -pkg syscall (netbsd-arm64), const IPV6_VERSION_MASK ideal-int -pkg syscall (netbsd-arm64), const IP_ADD_MEMBERSHIP = 12 -pkg syscall (netbsd-arm64), const IP_DEFAULT_MULTICAST_LOOP = 1 -pkg syscall (netbsd-arm64), const IP_DEFAULT_MULTICAST_LOOP ideal-int -pkg syscall (netbsd-arm64), const IP_DEFAULT_MULTICAST_TTL = 1 -pkg syscall (netbsd-arm64), const IP_DEFAULT_MULTICAST_TTL ideal-int -pkg syscall (netbsd-arm64), const IP_DF = 16384 -pkg syscall (netbsd-arm64), const IP_DF ideal-int -pkg syscall (netbsd-arm64), const IP_DROP_MEMBERSHIP = 13 -pkg syscall (netbsd-arm64), const IP_EF = 32768 -pkg syscall (netbsd-arm64), const IP_EF ideal-int -pkg syscall (netbsd-arm64), const IP_ERRORMTU = 21 -pkg syscall (netbsd-arm64), const IP_ERRORMTU ideal-int -pkg syscall (netbsd-arm64), const IP_HDRINCL = 2 -pkg syscall (netbsd-arm64), const IP_HDRINCL ideal-int -pkg syscall (netbsd-arm64), const IP_IPSEC_POLICY = 22 -pkg syscall (netbsd-arm64), const IP_IPSEC_POLICY ideal-int -pkg syscall (netbsd-arm64), const IP_MAXPACKET = 65535 -pkg syscall (netbsd-arm64), const IP_MAXPACKET ideal-int -pkg syscall (netbsd-arm64), const IP_MAX_MEMBERSHIPS = 20 -pkg syscall (netbsd-arm64), const IP_MAX_MEMBERSHIPS ideal-int -pkg syscall (netbsd-arm64), const IP_MF = 8192 -pkg syscall (netbsd-arm64), const IP_MF ideal-int -pkg syscall (netbsd-arm64), const IP_MINFRAGSIZE = 69 -pkg syscall (netbsd-arm64), const IP_MINFRAGSIZE ideal-int -pkg syscall (netbsd-arm64), const IP_MINTTL = 24 -pkg syscall (netbsd-arm64), const IP_MINTTL ideal-int -pkg syscall (netbsd-arm64), const IP_MSS = 576 -pkg syscall (netbsd-arm64), const IP_MSS ideal-int -pkg syscall (netbsd-arm64), const IP_MULTICAST_IF = 9 -pkg syscall (netbsd-arm64), const IP_MULTICAST_LOOP = 11 -pkg syscall (netbsd-arm64), const IP_MULTICAST_TTL = 10 -pkg syscall (netbsd-arm64), const IP_OFFMASK = 8191 -pkg syscall (netbsd-arm64), const IP_OFFMASK ideal-int -pkg syscall (netbsd-arm64), const IP_OPTIONS = 1 -pkg syscall (netbsd-arm64), const IP_OPTIONS ideal-int -pkg syscall (netbsd-arm64), const IP_PORTRANGE = 19 -pkg syscall (netbsd-arm64), const IP_PORTRANGE ideal-int -pkg syscall (netbsd-arm64), const IP_PORTRANGE_DEFAULT = 0 -pkg syscall (netbsd-arm64), const IP_PORTRANGE_DEFAULT ideal-int -pkg syscall (netbsd-arm64), const IP_PORTRANGE_HIGH = 1 -pkg syscall (netbsd-arm64), const IP_PORTRANGE_HIGH ideal-int -pkg syscall (netbsd-arm64), const IP_PORTRANGE_LOW = 2 -pkg syscall (netbsd-arm64), const IP_PORTRANGE_LOW ideal-int -pkg syscall (netbsd-arm64), const IP_RECVDSTADDR = 7 -pkg syscall (netbsd-arm64), const IP_RECVDSTADDR ideal-int -pkg syscall (netbsd-arm64), const IP_RECVIF = 20 -pkg syscall (netbsd-arm64), const IP_RECVIF ideal-int -pkg syscall (netbsd-arm64), const IP_RECVOPTS = 5 -pkg syscall (netbsd-arm64), const IP_RECVOPTS ideal-int -pkg syscall (netbsd-arm64), const IP_RECVRETOPTS = 6 -pkg syscall (netbsd-arm64), const IP_RECVRETOPTS ideal-int -pkg syscall (netbsd-arm64), const IP_RECVTTL = 23 -pkg syscall (netbsd-arm64), const IP_RECVTTL ideal-int -pkg syscall (netbsd-arm64), const IP_RETOPTS = 8 -pkg syscall (netbsd-arm64), const IP_RETOPTS ideal-int -pkg syscall (netbsd-arm64), const IP_RF = 32768 -pkg syscall (netbsd-arm64), const IP_RF ideal-int -pkg syscall (netbsd-arm64), const IP_TOS = 3 -pkg syscall (netbsd-arm64), const IP_TTL = 4 -pkg syscall (netbsd-arm64), const ISIG = 128 -pkg syscall (netbsd-arm64), const ISIG ideal-int -pkg syscall (netbsd-arm64), const ISTRIP = 32 -pkg syscall (netbsd-arm64), const ISTRIP ideal-int -pkg syscall (netbsd-arm64), const IXANY = 2048 -pkg syscall (netbsd-arm64), const IXANY ideal-int -pkg syscall (netbsd-arm64), const IXOFF = 1024 -pkg syscall (netbsd-arm64), const IXOFF ideal-int -pkg syscall (netbsd-arm64), const IXON = 512 -pkg syscall (netbsd-arm64), const IXON ideal-int -pkg syscall (netbsd-arm64), const LOCK_EX = 2 -pkg syscall (netbsd-arm64), const LOCK_EX ideal-int -pkg syscall (netbsd-arm64), const LOCK_NB = 4 -pkg syscall (netbsd-arm64), const LOCK_NB ideal-int -pkg syscall (netbsd-arm64), const LOCK_SH = 1 -pkg syscall (netbsd-arm64), const LOCK_SH ideal-int -pkg syscall (netbsd-arm64), const LOCK_UN = 8 -pkg syscall (netbsd-arm64), const LOCK_UN ideal-int -pkg syscall (netbsd-arm64), const MADV_DONTNEED = 4 -pkg syscall (netbsd-arm64), const MADV_DONTNEED ideal-int -pkg syscall (netbsd-arm64), const MADV_FREE = 6 -pkg syscall (netbsd-arm64), const MADV_FREE ideal-int -pkg syscall (netbsd-arm64), const MADV_NORMAL = 0 -pkg syscall (netbsd-arm64), const MADV_NORMAL ideal-int -pkg syscall (netbsd-arm64), const MADV_RANDOM = 1 -pkg syscall (netbsd-arm64), const MADV_RANDOM ideal-int -pkg syscall (netbsd-arm64), const MADV_SEQUENTIAL = 2 -pkg syscall (netbsd-arm64), const MADV_SEQUENTIAL ideal-int -pkg syscall (netbsd-arm64), const MADV_SPACEAVAIL = 5 -pkg syscall (netbsd-arm64), const MADV_SPACEAVAIL ideal-int -pkg syscall (netbsd-arm64), const MADV_WILLNEED = 3 -pkg syscall (netbsd-arm64), const MADV_WILLNEED ideal-int -pkg syscall (netbsd-arm64), const MAP_ALIGNMENT_16MB = 402653184 -pkg syscall (netbsd-arm64), const MAP_ALIGNMENT_16MB ideal-int -pkg syscall (netbsd-arm64), const MAP_ALIGNMENT_1TB = 671088640 -pkg syscall (netbsd-arm64), const MAP_ALIGNMENT_1TB ideal-int -pkg syscall (netbsd-arm64), const MAP_ALIGNMENT_256TB = 805306368 -pkg syscall (netbsd-arm64), const MAP_ALIGNMENT_256TB ideal-int -pkg syscall (netbsd-arm64), const MAP_ALIGNMENT_4GB = 536870912 -pkg syscall (netbsd-arm64), const MAP_ALIGNMENT_4GB ideal-int -pkg syscall (netbsd-arm64), const MAP_ALIGNMENT_64KB = 268435456 -pkg syscall (netbsd-arm64), const MAP_ALIGNMENT_64KB ideal-int -pkg syscall (netbsd-arm64), const MAP_ALIGNMENT_64PB = 939524096 -pkg syscall (netbsd-arm64), const MAP_ALIGNMENT_64PB ideal-int -pkg syscall (netbsd-arm64), const MAP_ALIGNMENT_MASK = -16777216 -pkg syscall (netbsd-arm64), const MAP_ALIGNMENT_MASK ideal-int -pkg syscall (netbsd-arm64), const MAP_ALIGNMENT_SHIFT = 24 -pkg syscall (netbsd-arm64), const MAP_ALIGNMENT_SHIFT ideal-int -pkg syscall (netbsd-arm64), const MAP_ANON = 4096 -pkg syscall (netbsd-arm64), const MAP_ANON ideal-int -pkg syscall (netbsd-arm64), const MAP_FILE = 0 -pkg syscall (netbsd-arm64), const MAP_FILE ideal-int -pkg syscall (netbsd-arm64), const MAP_FIXED = 16 -pkg syscall (netbsd-arm64), const MAP_FIXED ideal-int -pkg syscall (netbsd-arm64), const MAP_HASSEMAPHORE = 512 -pkg syscall (netbsd-arm64), const MAP_HASSEMAPHORE ideal-int -pkg syscall (netbsd-arm64), const MAP_INHERIT = 128 -pkg syscall (netbsd-arm64), const MAP_INHERIT ideal-int -pkg syscall (netbsd-arm64), const MAP_INHERIT_COPY = 1 -pkg syscall (netbsd-arm64), const MAP_INHERIT_COPY ideal-int -pkg syscall (netbsd-arm64), const MAP_INHERIT_DEFAULT = 1 -pkg syscall (netbsd-arm64), const MAP_INHERIT_DEFAULT ideal-int -pkg syscall (netbsd-arm64), const MAP_INHERIT_DONATE_COPY = 3 -pkg syscall (netbsd-arm64), const MAP_INHERIT_DONATE_COPY ideal-int -pkg syscall (netbsd-arm64), const MAP_INHERIT_NONE = 2 -pkg syscall (netbsd-arm64), const MAP_INHERIT_NONE ideal-int -pkg syscall (netbsd-arm64), const MAP_INHERIT_SHARE = 0 -pkg syscall (netbsd-arm64), const MAP_INHERIT_SHARE ideal-int -pkg syscall (netbsd-arm64), const MAP_NORESERVE = 64 -pkg syscall (netbsd-arm64), const MAP_NORESERVE ideal-int -pkg syscall (netbsd-arm64), const MAP_PRIVATE = 2 -pkg syscall (netbsd-arm64), const MAP_PRIVATE ideal-int -pkg syscall (netbsd-arm64), const MAP_RENAME = 32 -pkg syscall (netbsd-arm64), const MAP_RENAME ideal-int -pkg syscall (netbsd-arm64), const MAP_SHARED = 1 -pkg syscall (netbsd-arm64), const MAP_SHARED ideal-int -pkg syscall (netbsd-arm64), const MAP_STACK = 8192 -pkg syscall (netbsd-arm64), const MAP_STACK ideal-int -pkg syscall (netbsd-arm64), const MAP_TRYFIXED = 1024 -pkg syscall (netbsd-arm64), const MAP_TRYFIXED ideal-int -pkg syscall (netbsd-arm64), const MAP_WIRED = 2048 -pkg syscall (netbsd-arm64), const MAP_WIRED ideal-int -pkg syscall (netbsd-arm64), const MCL_CURRENT = 1 -pkg syscall (netbsd-arm64), const MCL_CURRENT ideal-int -pkg syscall (netbsd-arm64), const MCL_FUTURE = 2 -pkg syscall (netbsd-arm64), const MCL_FUTURE ideal-int -pkg syscall (netbsd-arm64), const MSG_BCAST = 256 -pkg syscall (netbsd-arm64), const MSG_BCAST ideal-int -pkg syscall (netbsd-arm64), const MSG_CMSG_CLOEXEC = 2048 -pkg syscall (netbsd-arm64), const MSG_CMSG_CLOEXEC ideal-int -pkg syscall (netbsd-arm64), const MSG_CONTROLMBUF = 33554432 -pkg syscall (netbsd-arm64), const MSG_CONTROLMBUF ideal-int -pkg syscall (netbsd-arm64), const MSG_CTRUNC = 32 -pkg syscall (netbsd-arm64), const MSG_CTRUNC ideal-int -pkg syscall (netbsd-arm64), const MSG_DONTROUTE = 4 -pkg syscall (netbsd-arm64), const MSG_DONTROUTE ideal-int -pkg syscall (netbsd-arm64), const MSG_DONTWAIT = 128 -pkg syscall (netbsd-arm64), const MSG_DONTWAIT ideal-int -pkg syscall (netbsd-arm64), const MSG_EOR = 8 -pkg syscall (netbsd-arm64), const MSG_EOR ideal-int -pkg syscall (netbsd-arm64), const MSG_IOVUSRSPACE = 67108864 -pkg syscall (netbsd-arm64), const MSG_IOVUSRSPACE ideal-int -pkg syscall (netbsd-arm64), const MSG_LENUSRSPACE = 134217728 -pkg syscall (netbsd-arm64), const MSG_LENUSRSPACE ideal-int -pkg syscall (netbsd-arm64), const MSG_MCAST = 512 -pkg syscall (netbsd-arm64), const MSG_MCAST ideal-int -pkg syscall (netbsd-arm64), const MSG_NAMEMBUF = 16777216 -pkg syscall (netbsd-arm64), const MSG_NAMEMBUF ideal-int -pkg syscall (netbsd-arm64), const MSG_NBIO = 4096 -pkg syscall (netbsd-arm64), const MSG_NBIO ideal-int -pkg syscall (netbsd-arm64), const MSG_NOSIGNAL = 1024 -pkg syscall (netbsd-arm64), const MSG_NOSIGNAL ideal-int -pkg syscall (netbsd-arm64), const MSG_OOB = 1 -pkg syscall (netbsd-arm64), const MSG_OOB ideal-int -pkg syscall (netbsd-arm64), const MSG_PEEK = 2 -pkg syscall (netbsd-arm64), const MSG_PEEK ideal-int -pkg syscall (netbsd-arm64), const MSG_TRUNC = 16 -pkg syscall (netbsd-arm64), const MSG_TRUNC ideal-int -pkg syscall (netbsd-arm64), const MSG_USERFLAGS = 16777215 -pkg syscall (netbsd-arm64), const MSG_USERFLAGS ideal-int -pkg syscall (netbsd-arm64), const MSG_WAITALL = 64 -pkg syscall (netbsd-arm64), const MSG_WAITALL ideal-int -pkg syscall (netbsd-arm64), const MS_ASYNC = 1 -pkg syscall (netbsd-arm64), const MS_ASYNC ideal-int -pkg syscall (netbsd-arm64), const MS_INVALIDATE = 2 -pkg syscall (netbsd-arm64), const MS_INVALIDATE ideal-int -pkg syscall (netbsd-arm64), const MS_SYNC = 4 -pkg syscall (netbsd-arm64), const MS_SYNC ideal-int -pkg syscall (netbsd-arm64), const NAME_MAX = 511 -pkg syscall (netbsd-arm64), const NAME_MAX ideal-int -pkg syscall (netbsd-arm64), const NET_RT_DUMP = 1 -pkg syscall (netbsd-arm64), const NET_RT_DUMP ideal-int -pkg syscall (netbsd-arm64), const NET_RT_FLAGS = 2 -pkg syscall (netbsd-arm64), const NET_RT_FLAGS ideal-int -pkg syscall (netbsd-arm64), const NET_RT_IFLIST = 5 -pkg syscall (netbsd-arm64), const NET_RT_IFLIST ideal-int -pkg syscall (netbsd-arm64), const NET_RT_MAXID = 6 -pkg syscall (netbsd-arm64), const NET_RT_MAXID ideal-int -pkg syscall (netbsd-arm64), const NET_RT_OIFLIST = 4 -pkg syscall (netbsd-arm64), const NET_RT_OIFLIST ideal-int -pkg syscall (netbsd-arm64), const NET_RT_OOIFLIST = 3 -pkg syscall (netbsd-arm64), const NET_RT_OOIFLIST ideal-int -pkg syscall (netbsd-arm64), const NOFLSH = 2147483648 -pkg syscall (netbsd-arm64), const NOFLSH ideal-int -pkg syscall (netbsd-arm64), const NOTE_ATTRIB = 8 -pkg syscall (netbsd-arm64), const NOTE_ATTRIB ideal-int -pkg syscall (netbsd-arm64), const NOTE_CHILD = 4 -pkg syscall (netbsd-arm64), const NOTE_CHILD ideal-int -pkg syscall (netbsd-arm64), const NOTE_DELETE = 1 -pkg syscall (netbsd-arm64), const NOTE_DELETE ideal-int -pkg syscall (netbsd-arm64), const NOTE_EXEC = 536870912 -pkg syscall (netbsd-arm64), const NOTE_EXEC ideal-int -pkg syscall (netbsd-arm64), const NOTE_EXIT = 2147483648 -pkg syscall (netbsd-arm64), const NOTE_EXIT ideal-int -pkg syscall (netbsd-arm64), const NOTE_EXTEND = 4 -pkg syscall (netbsd-arm64), const NOTE_EXTEND ideal-int -pkg syscall (netbsd-arm64), const NOTE_FORK = 1073741824 -pkg syscall (netbsd-arm64), const NOTE_FORK ideal-int -pkg syscall (netbsd-arm64), const NOTE_LINK = 16 -pkg syscall (netbsd-arm64), const NOTE_LINK ideal-int -pkg syscall (netbsd-arm64), const NOTE_LOWAT = 1 -pkg syscall (netbsd-arm64), const NOTE_LOWAT ideal-int -pkg syscall (netbsd-arm64), const NOTE_PCTRLMASK = 4026531840 -pkg syscall (netbsd-arm64), const NOTE_PCTRLMASK ideal-int -pkg syscall (netbsd-arm64), const NOTE_PDATAMASK = 1048575 -pkg syscall (netbsd-arm64), const NOTE_PDATAMASK ideal-int -pkg syscall (netbsd-arm64), const NOTE_RENAME = 32 -pkg syscall (netbsd-arm64), const NOTE_RENAME ideal-int -pkg syscall (netbsd-arm64), const NOTE_REVOKE = 64 -pkg syscall (netbsd-arm64), const NOTE_REVOKE ideal-int -pkg syscall (netbsd-arm64), const NOTE_TRACK = 1 -pkg syscall (netbsd-arm64), const NOTE_TRACK ideal-int -pkg syscall (netbsd-arm64), const NOTE_TRACKERR = 2 -pkg syscall (netbsd-arm64), const NOTE_TRACKERR ideal-int -pkg syscall (netbsd-arm64), const NOTE_WRITE = 2 -pkg syscall (netbsd-arm64), const NOTE_WRITE ideal-int -pkg syscall (netbsd-arm64), const OCRNL = 16 -pkg syscall (netbsd-arm64), const OCRNL ideal-int -pkg syscall (netbsd-arm64), const OFIOGETBMAP = 3221513850 -pkg syscall (netbsd-arm64), const OFIOGETBMAP ideal-int -pkg syscall (netbsd-arm64), const ONLCR = 2 -pkg syscall (netbsd-arm64), const ONLCR ideal-int -pkg syscall (netbsd-arm64), const ONLRET = 64 -pkg syscall (netbsd-arm64), const ONLRET ideal-int -pkg syscall (netbsd-arm64), const ONOCR = 32 -pkg syscall (netbsd-arm64), const ONOCR ideal-int -pkg syscall (netbsd-arm64), const ONOEOT = 8 -pkg syscall (netbsd-arm64), const ONOEOT ideal-int -pkg syscall (netbsd-arm64), const OPOST = 1 -pkg syscall (netbsd-arm64), const OPOST ideal-int -pkg syscall (netbsd-arm64), const O_ACCMODE = 3 -pkg syscall (netbsd-arm64), const O_ACCMODE ideal-int -pkg syscall (netbsd-arm64), const O_ALT_IO = 262144 -pkg syscall (netbsd-arm64), const O_ALT_IO ideal-int -pkg syscall (netbsd-arm64), const O_APPEND = 8 -pkg syscall (netbsd-arm64), const O_ASYNC = 64 -pkg syscall (netbsd-arm64), const O_CLOEXEC = 4194304 -pkg syscall (netbsd-arm64), const O_CREAT = 512 -pkg syscall (netbsd-arm64), const O_DIRECT = 524288 -pkg syscall (netbsd-arm64), const O_DIRECT ideal-int -pkg syscall (netbsd-arm64), const O_DIRECTORY = 2097152 -pkg syscall (netbsd-arm64), const O_DIRECTORY ideal-int -pkg syscall (netbsd-arm64), const O_DSYNC = 65536 -pkg syscall (netbsd-arm64), const O_DSYNC ideal-int -pkg syscall (netbsd-arm64), const O_EXCL = 2048 -pkg syscall (netbsd-arm64), const O_EXLOCK = 32 -pkg syscall (netbsd-arm64), const O_EXLOCK ideal-int -pkg syscall (netbsd-arm64), const O_FSYNC = 128 -pkg syscall (netbsd-arm64), const O_FSYNC ideal-int -pkg syscall (netbsd-arm64), const O_NDELAY = 4 -pkg syscall (netbsd-arm64), const O_NDELAY ideal-int -pkg syscall (netbsd-arm64), const O_NOCTTY = 32768 -pkg syscall (netbsd-arm64), const O_NOFOLLOW = 256 -pkg syscall (netbsd-arm64), const O_NOFOLLOW ideal-int -pkg syscall (netbsd-arm64), const O_NONBLOCK = 4 -pkg syscall (netbsd-arm64), const O_NOSIGPIPE = 16777216 -pkg syscall (netbsd-arm64), const O_NOSIGPIPE ideal-int -pkg syscall (netbsd-arm64), const O_RSYNC = 131072 -pkg syscall (netbsd-arm64), const O_RSYNC ideal-int -pkg syscall (netbsd-arm64), const O_SHLOCK = 16 -pkg syscall (netbsd-arm64), const O_SHLOCK ideal-int -pkg syscall (netbsd-arm64), const O_SYNC = 128 -pkg syscall (netbsd-arm64), const O_TRUNC = 1024 -pkg syscall (netbsd-arm64), const PARENB = 4096 -pkg syscall (netbsd-arm64), const PARENB ideal-int -pkg syscall (netbsd-arm64), const PARMRK = 8 -pkg syscall (netbsd-arm64), const PARMRK ideal-int -pkg syscall (netbsd-arm64), const PARODD = 8192 -pkg syscall (netbsd-arm64), const PARODD ideal-int -pkg syscall (netbsd-arm64), const PENDIN = 536870912 -pkg syscall (netbsd-arm64), const PENDIN ideal-int -pkg syscall (netbsd-arm64), const PRIO_PGRP = 1 -pkg syscall (netbsd-arm64), const PRIO_PGRP ideal-int -pkg syscall (netbsd-arm64), const PRIO_PROCESS = 0 -pkg syscall (netbsd-arm64), const PRIO_PROCESS ideal-int -pkg syscall (netbsd-arm64), const PRIO_USER = 2 -pkg syscall (netbsd-arm64), const PRIO_USER ideal-int -pkg syscall (netbsd-arm64), const PRI_IOFLUSH = 124 -pkg syscall (netbsd-arm64), const PRI_IOFLUSH ideal-int -pkg syscall (netbsd-arm64), const PROT_EXEC = 4 -pkg syscall (netbsd-arm64), const PROT_EXEC ideal-int -pkg syscall (netbsd-arm64), const PROT_NONE = 0 -pkg syscall (netbsd-arm64), const PROT_NONE ideal-int -pkg syscall (netbsd-arm64), const PROT_READ = 1 -pkg syscall (netbsd-arm64), const PROT_READ ideal-int -pkg syscall (netbsd-arm64), const PROT_WRITE = 2 -pkg syscall (netbsd-arm64), const PROT_WRITE ideal-int -pkg syscall (netbsd-arm64), const PTRACE_CONT = 7 -pkg syscall (netbsd-arm64), const PTRACE_CONT ideal-int -pkg syscall (netbsd-arm64), const PTRACE_KILL = 8 -pkg syscall (netbsd-arm64), const PTRACE_KILL ideal-int -pkg syscall (netbsd-arm64), const PTRACE_TRACEME = 0 -pkg syscall (netbsd-arm64), const PTRACE_TRACEME ideal-int -pkg syscall (netbsd-arm64), const RLIMIT_AS = 10 -pkg syscall (netbsd-arm64), const RLIMIT_AS ideal-int -pkg syscall (netbsd-arm64), const RLIMIT_CORE = 4 -pkg syscall (netbsd-arm64), const RLIMIT_CORE ideal-int -pkg syscall (netbsd-arm64), const RLIMIT_CPU = 0 -pkg syscall (netbsd-arm64), const RLIMIT_CPU ideal-int -pkg syscall (netbsd-arm64), const RLIMIT_DATA = 2 -pkg syscall (netbsd-arm64), const RLIMIT_DATA ideal-int -pkg syscall (netbsd-arm64), const RLIMIT_FSIZE = 1 -pkg syscall (netbsd-arm64), const RLIMIT_FSIZE ideal-int -pkg syscall (netbsd-arm64), const RLIMIT_NOFILE = 8 -pkg syscall (netbsd-arm64), const RLIMIT_NOFILE ideal-int -pkg syscall (netbsd-arm64), const RLIMIT_STACK = 3 -pkg syscall (netbsd-arm64), const RLIMIT_STACK ideal-int -pkg syscall (netbsd-arm64), const RLIM_INFINITY = 9223372036854775807 -pkg syscall (netbsd-arm64), const RLIM_INFINITY ideal-int -pkg syscall (netbsd-arm64), const RTAX_AUTHOR = 6 -pkg syscall (netbsd-arm64), const RTAX_AUTHOR ideal-int -pkg syscall (netbsd-arm64), const RTAX_BRD = 7 -pkg syscall (netbsd-arm64), const RTAX_BRD ideal-int -pkg syscall (netbsd-arm64), const RTAX_DST = 0 -pkg syscall (netbsd-arm64), const RTAX_DST ideal-int -pkg syscall (netbsd-arm64), const RTAX_GATEWAY = 1 -pkg syscall (netbsd-arm64), const RTAX_GATEWAY ideal-int -pkg syscall (netbsd-arm64), const RTAX_GENMASK = 3 -pkg syscall (netbsd-arm64), const RTAX_GENMASK ideal-int -pkg syscall (netbsd-arm64), const RTAX_IFA = 5 -pkg syscall (netbsd-arm64), const RTAX_IFA ideal-int -pkg syscall (netbsd-arm64), const RTAX_IFP = 4 -pkg syscall (netbsd-arm64), const RTAX_IFP ideal-int -pkg syscall (netbsd-arm64), const RTAX_MAX = 9 -pkg syscall (netbsd-arm64), const RTAX_MAX ideal-int -pkg syscall (netbsd-arm64), const RTAX_NETMASK = 2 -pkg syscall (netbsd-arm64), const RTAX_NETMASK ideal-int -pkg syscall (netbsd-arm64), const RTAX_TAG = 8 -pkg syscall (netbsd-arm64), const RTAX_TAG ideal-int -pkg syscall (netbsd-arm64), const RTA_AUTHOR = 64 -pkg syscall (netbsd-arm64), const RTA_AUTHOR ideal-int -pkg syscall (netbsd-arm64), const RTA_BRD = 128 -pkg syscall (netbsd-arm64), const RTA_BRD ideal-int -pkg syscall (netbsd-arm64), const RTA_DST = 1 -pkg syscall (netbsd-arm64), const RTA_DST ideal-int -pkg syscall (netbsd-arm64), const RTA_GATEWAY = 2 -pkg syscall (netbsd-arm64), const RTA_GATEWAY ideal-int -pkg syscall (netbsd-arm64), const RTA_GENMASK = 8 -pkg syscall (netbsd-arm64), const RTA_GENMASK ideal-int -pkg syscall (netbsd-arm64), const RTA_IFA = 32 -pkg syscall (netbsd-arm64), const RTA_IFA ideal-int -pkg syscall (netbsd-arm64), const RTA_IFP = 16 -pkg syscall (netbsd-arm64), const RTA_IFP ideal-int -pkg syscall (netbsd-arm64), const RTA_NETMASK = 4 -pkg syscall (netbsd-arm64), const RTA_NETMASK ideal-int -pkg syscall (netbsd-arm64), const RTA_TAG = 256 -pkg syscall (netbsd-arm64), const RTA_TAG ideal-int -pkg syscall (netbsd-arm64), const RTF_ANNOUNCE = 131072 -pkg syscall (netbsd-arm64), const RTF_ANNOUNCE ideal-int -pkg syscall (netbsd-arm64), const RTF_BLACKHOLE = 4096 -pkg syscall (netbsd-arm64), const RTF_BLACKHOLE ideal-int -pkg syscall (netbsd-arm64), const RTF_CLONED = 8192 -pkg syscall (netbsd-arm64), const RTF_CLONED ideal-int -pkg syscall (netbsd-arm64), const RTF_CLONING = 256 -pkg syscall (netbsd-arm64), const RTF_CLONING ideal-int -pkg syscall (netbsd-arm64), const RTF_DONE = 64 -pkg syscall (netbsd-arm64), const RTF_DONE ideal-int -pkg syscall (netbsd-arm64), const RTF_DYNAMIC = 16 -pkg syscall (netbsd-arm64), const RTF_DYNAMIC ideal-int -pkg syscall (netbsd-arm64), const RTF_GATEWAY = 2 -pkg syscall (netbsd-arm64), const RTF_GATEWAY ideal-int -pkg syscall (netbsd-arm64), const RTF_HOST = 4 -pkg syscall (netbsd-arm64), const RTF_HOST ideal-int -pkg syscall (netbsd-arm64), const RTF_LLINFO = 1024 -pkg syscall (netbsd-arm64), const RTF_LLINFO ideal-int -pkg syscall (netbsd-arm64), const RTF_MASK = 128 -pkg syscall (netbsd-arm64), const RTF_MASK ideal-int -pkg syscall (netbsd-arm64), const RTF_MODIFIED = 32 -pkg syscall (netbsd-arm64), const RTF_MODIFIED ideal-int -pkg syscall (netbsd-arm64), const RTF_PROTO1 = 32768 -pkg syscall (netbsd-arm64), const RTF_PROTO1 ideal-int -pkg syscall (netbsd-arm64), const RTF_PROTO2 = 16384 -pkg syscall (netbsd-arm64), const RTF_PROTO2 ideal-int -pkg syscall (netbsd-arm64), const RTF_REJECT = 8 -pkg syscall (netbsd-arm64), const RTF_REJECT ideal-int -pkg syscall (netbsd-arm64), const RTF_SRC = 65536 -pkg syscall (netbsd-arm64), const RTF_SRC ideal-int -pkg syscall (netbsd-arm64), const RTF_STATIC = 2048 -pkg syscall (netbsd-arm64), const RTF_STATIC ideal-int -pkg syscall (netbsd-arm64), const RTF_UP = 1 -pkg syscall (netbsd-arm64), const RTF_UP ideal-int -pkg syscall (netbsd-arm64), const RTF_XRESOLVE = 512 -pkg syscall (netbsd-arm64), const RTF_XRESOLVE ideal-int -pkg syscall (netbsd-arm64), const RTM_ADD = 1 -pkg syscall (netbsd-arm64), const RTM_ADD ideal-int -pkg syscall (netbsd-arm64), const RTM_CHANGE = 3 -pkg syscall (netbsd-arm64), const RTM_CHANGE ideal-int -pkg syscall (netbsd-arm64), const RTM_CHGADDR = 21 -pkg syscall (netbsd-arm64), const RTM_CHGADDR ideal-int -pkg syscall (netbsd-arm64), const RTM_DELADDR = 13 -pkg syscall (netbsd-arm64), const RTM_DELADDR ideal-int -pkg syscall (netbsd-arm64), const RTM_DELETE = 2 -pkg syscall (netbsd-arm64), const RTM_DELETE ideal-int -pkg syscall (netbsd-arm64), const RTM_GET = 4 -pkg syscall (netbsd-arm64), const RTM_GET ideal-int -pkg syscall (netbsd-arm64), const RTM_IEEE80211 = 17 -pkg syscall (netbsd-arm64), const RTM_IEEE80211 ideal-int -pkg syscall (netbsd-arm64), const RTM_IFANNOUNCE = 16 -pkg syscall (netbsd-arm64), const RTM_IFANNOUNCE ideal-int -pkg syscall (netbsd-arm64), const RTM_IFINFO = 20 -pkg syscall (netbsd-arm64), const RTM_IFINFO ideal-int -pkg syscall (netbsd-arm64), const RTM_LLINFO_UPD = 19 -pkg syscall (netbsd-arm64), const RTM_LLINFO_UPD ideal-int -pkg syscall (netbsd-arm64), const RTM_LOCK = 8 -pkg syscall (netbsd-arm64), const RTM_LOCK ideal-int -pkg syscall (netbsd-arm64), const RTM_LOSING = 5 -pkg syscall (netbsd-arm64), const RTM_LOSING ideal-int -pkg syscall (netbsd-arm64), const RTM_MISS = 7 -pkg syscall (netbsd-arm64), const RTM_MISS ideal-int -pkg syscall (netbsd-arm64), const RTM_NEWADDR = 12 -pkg syscall (netbsd-arm64), const RTM_NEWADDR ideal-int -pkg syscall (netbsd-arm64), const RTM_OIFINFO = 15 -pkg syscall (netbsd-arm64), const RTM_OIFINFO ideal-int -pkg syscall (netbsd-arm64), const RTM_OLDADD = 9 -pkg syscall (netbsd-arm64), const RTM_OLDADD ideal-int -pkg syscall (netbsd-arm64), const RTM_OLDDEL = 10 -pkg syscall (netbsd-arm64), const RTM_OLDDEL ideal-int -pkg syscall (netbsd-arm64), const RTM_OOIFINFO = 14 -pkg syscall (netbsd-arm64), const RTM_OOIFINFO ideal-int -pkg syscall (netbsd-arm64), const RTM_REDIRECT = 6 -pkg syscall (netbsd-arm64), const RTM_REDIRECT ideal-int -pkg syscall (netbsd-arm64), const RTM_RESOLVE = 11 -pkg syscall (netbsd-arm64), const RTM_RESOLVE ideal-int -pkg syscall (netbsd-arm64), const RTM_RTTUNIT = 1000000 -pkg syscall (netbsd-arm64), const RTM_RTTUNIT ideal-int -pkg syscall (netbsd-arm64), const RTM_SETGATE = 18 -pkg syscall (netbsd-arm64), const RTM_SETGATE ideal-int -pkg syscall (netbsd-arm64), const RTM_VERSION = 4 -pkg syscall (netbsd-arm64), const RTM_VERSION ideal-int -pkg syscall (netbsd-arm64), const RTV_EXPIRE = 4 -pkg syscall (netbsd-arm64), const RTV_EXPIRE ideal-int -pkg syscall (netbsd-arm64), const RTV_HOPCOUNT = 2 -pkg syscall (netbsd-arm64), const RTV_HOPCOUNT ideal-int -pkg syscall (netbsd-arm64), const RTV_MTU = 1 -pkg syscall (netbsd-arm64), const RTV_MTU ideal-int -pkg syscall (netbsd-arm64), const RTV_RPIPE = 8 -pkg syscall (netbsd-arm64), const RTV_RPIPE ideal-int -pkg syscall (netbsd-arm64), const RTV_RTT = 64 -pkg syscall (netbsd-arm64), const RTV_RTT ideal-int -pkg syscall (netbsd-arm64), const RTV_RTTVAR = 128 -pkg syscall (netbsd-arm64), const RTV_RTTVAR ideal-int -pkg syscall (netbsd-arm64), const RTV_SPIPE = 16 -pkg syscall (netbsd-arm64), const RTV_SPIPE ideal-int -pkg syscall (netbsd-arm64), const RTV_SSTHRESH = 32 -pkg syscall (netbsd-arm64), const RTV_SSTHRESH ideal-int -pkg syscall (netbsd-arm64), const RUSAGE_CHILDREN = -1 -pkg syscall (netbsd-arm64), const RUSAGE_CHILDREN ideal-int -pkg syscall (netbsd-arm64), const RUSAGE_SELF = 0 -pkg syscall (netbsd-arm64), const RUSAGE_SELF ideal-int -pkg syscall (netbsd-arm64), const SCM_CREDS = 4 -pkg syscall (netbsd-arm64), const SCM_CREDS ideal-int -pkg syscall (netbsd-arm64), const SCM_RIGHTS = 1 -pkg syscall (netbsd-arm64), const SCM_RIGHTS ideal-int -pkg syscall (netbsd-arm64), const SCM_TIMESTAMP = 8 -pkg syscall (netbsd-arm64), const SCM_TIMESTAMP ideal-int -pkg syscall (netbsd-arm64), const SIGBUS = 10 -pkg syscall (netbsd-arm64), const SIGCHLD = 20 -pkg syscall (netbsd-arm64), const SIGCHLD Signal -pkg syscall (netbsd-arm64), const SIGCONT = 19 -pkg syscall (netbsd-arm64), const SIGCONT Signal -pkg syscall (netbsd-arm64), const SIGEMT = 7 -pkg syscall (netbsd-arm64), const SIGEMT Signal -pkg syscall (netbsd-arm64), const SIGINFO = 29 -pkg syscall (netbsd-arm64), const SIGINFO Signal -pkg syscall (netbsd-arm64), const SIGIO = 23 -pkg syscall (netbsd-arm64), const SIGIO Signal -pkg syscall (netbsd-arm64), const SIGIOT = 6 -pkg syscall (netbsd-arm64), const SIGIOT Signal -pkg syscall (netbsd-arm64), const SIGPROF = 27 -pkg syscall (netbsd-arm64), const SIGPROF Signal -pkg syscall (netbsd-arm64), const SIGPWR = 32 -pkg syscall (netbsd-arm64), const SIGPWR Signal -pkg syscall (netbsd-arm64), const SIGSTOP = 17 -pkg syscall (netbsd-arm64), const SIGSTOP Signal -pkg syscall (netbsd-arm64), const SIGSYS = 12 -pkg syscall (netbsd-arm64), const SIGSYS Signal -pkg syscall (netbsd-arm64), const SIGTSTP = 18 -pkg syscall (netbsd-arm64), const SIGTSTP Signal -pkg syscall (netbsd-arm64), const SIGTTIN = 21 -pkg syscall (netbsd-arm64), const SIGTTIN Signal -pkg syscall (netbsd-arm64), const SIGTTOU = 22 -pkg syscall (netbsd-arm64), const SIGTTOU Signal -pkg syscall (netbsd-arm64), const SIGURG = 16 -pkg syscall (netbsd-arm64), const SIGURG Signal -pkg syscall (netbsd-arm64), const SIGUSR1 = 30 -pkg syscall (netbsd-arm64), const SIGUSR1 Signal -pkg syscall (netbsd-arm64), const SIGUSR2 = 31 -pkg syscall (netbsd-arm64), const SIGUSR2 Signal -pkg syscall (netbsd-arm64), const SIGVTALRM = 26 -pkg syscall (netbsd-arm64), const SIGVTALRM Signal -pkg syscall (netbsd-arm64), const SIGWINCH = 28 -pkg syscall (netbsd-arm64), const SIGWINCH Signal -pkg syscall (netbsd-arm64), const SIGXCPU = 24 -pkg syscall (netbsd-arm64), const SIGXCPU Signal -pkg syscall (netbsd-arm64), const SIGXFSZ = 25 -pkg syscall (netbsd-arm64), const SIGXFSZ Signal -pkg syscall (netbsd-arm64), const SIOCADDMULTI = 2156947761 -pkg syscall (netbsd-arm64), const SIOCADDMULTI ideal-int -pkg syscall (netbsd-arm64), const SIOCADDRT = 2151182858 -pkg syscall (netbsd-arm64), const SIOCADDRT ideal-int -pkg syscall (netbsd-arm64), const SIOCAIFADDR = 2151704858 -pkg syscall (netbsd-arm64), const SIOCAIFADDR ideal-int -pkg syscall (netbsd-arm64), const SIOCALIFADDR = 2165860636 -pkg syscall (netbsd-arm64), const SIOCALIFADDR ideal-int -pkg syscall (netbsd-arm64), const SIOCATMARK = 1074033415 -pkg syscall (netbsd-arm64), const SIOCATMARK ideal-int -pkg syscall (netbsd-arm64), const SIOCDELMULTI = 2156947762 -pkg syscall (netbsd-arm64), const SIOCDELMULTI ideal-int -pkg syscall (netbsd-arm64), const SIOCDELRT = 2151182859 -pkg syscall (netbsd-arm64), const SIOCDELRT ideal-int -pkg syscall (netbsd-arm64), const SIOCDIFADDR = 2156947737 -pkg syscall (netbsd-arm64), const SIOCDIFADDR ideal-int -pkg syscall (netbsd-arm64), const SIOCDIFPHYADDR = 2156947785 -pkg syscall (netbsd-arm64), const SIOCDIFPHYADDR ideal-int -pkg syscall (netbsd-arm64), const SIOCDLIFADDR = 2165860638 -pkg syscall (netbsd-arm64), const SIOCDLIFADDR ideal-int -pkg syscall (netbsd-arm64), const SIOCGDRVSPEC = 3223873915 -pkg syscall (netbsd-arm64), const SIOCGDRVSPEC ideal-int -pkg syscall (netbsd-arm64), const SIOCGETPFSYNC = 3230689784 -pkg syscall (netbsd-arm64), const SIOCGETPFSYNC ideal-int -pkg syscall (netbsd-arm64), const SIOCGETSGCNT = 3223352628 -pkg syscall (netbsd-arm64), const SIOCGETSGCNT ideal-int -pkg syscall (netbsd-arm64), const SIOCGETVIFCNT = 3223876915 -pkg syscall (netbsd-arm64), const SIOCGETVIFCNT ideal-int -pkg syscall (netbsd-arm64), const SIOCGHIWAT = 1074033409 -pkg syscall (netbsd-arm64), const SIOCGHIWAT ideal-int -pkg syscall (netbsd-arm64), const SIOCGIFADDR = 3230689569 -pkg syscall (netbsd-arm64), const SIOCGIFADDR ideal-int -pkg syscall (netbsd-arm64), const SIOCGIFADDRPREF = 3231213856 -pkg syscall (netbsd-arm64), const SIOCGIFADDRPREF ideal-int -pkg syscall (netbsd-arm64), const SIOCGIFALIAS = 3225446683 -pkg syscall (netbsd-arm64), const SIOCGIFALIAS ideal-int -pkg syscall (netbsd-arm64), const SIOCGIFBRDADDR = 3230689571 -pkg syscall (netbsd-arm64), const SIOCGIFBRDADDR ideal-int -pkg syscall (netbsd-arm64), const SIOCGIFCAP = 3223349622 -pkg syscall (netbsd-arm64), const SIOCGIFCAP ideal-int -pkg syscall (netbsd-arm64), const SIOCGIFCONF = 3222300966 -pkg syscall (netbsd-arm64), const SIOCGIFCONF ideal-int -pkg syscall (netbsd-arm64), const SIOCGIFDATA = 3231213957 -pkg syscall (netbsd-arm64), const SIOCGIFDATA ideal-int -pkg syscall (netbsd-arm64), const SIOCGIFDLT = 3230689655 -pkg syscall (netbsd-arm64), const SIOCGIFDLT ideal-int -pkg syscall (netbsd-arm64), const SIOCGIFDSTADDR = 3230689570 -pkg syscall (netbsd-arm64), const SIOCGIFDSTADDR ideal-int -pkg syscall (netbsd-arm64), const SIOCGIFFLAGS = 3230689553 -pkg syscall (netbsd-arm64), const SIOCGIFFLAGS ideal-int -pkg syscall (netbsd-arm64), const SIOCGIFGENERIC = 3230689594 -pkg syscall (netbsd-arm64), const SIOCGIFGENERIC ideal-int -pkg syscall (netbsd-arm64), const SIOCGIFMEDIA = 3224398134 -pkg syscall (netbsd-arm64), const SIOCGIFMEDIA ideal-int -pkg syscall (netbsd-arm64), const SIOCGIFMETRIC = 3230689559 -pkg syscall (netbsd-arm64), const SIOCGIFMETRIC ideal-int -pkg syscall (netbsd-arm64), const SIOCGIFMTU = 3230689662 -pkg syscall (netbsd-arm64), const SIOCGIFMTU ideal-int -pkg syscall (netbsd-arm64), const SIOCGIFNETMASK = 3230689573 -pkg syscall (netbsd-arm64), const SIOCGIFNETMASK ideal-int -pkg syscall (netbsd-arm64), const SIOCGIFPDSTADDR = 3230689608 -pkg syscall (netbsd-arm64), const SIOCGIFPDSTADDR ideal-int -pkg syscall (netbsd-arm64), const SIOCGIFPSRCADDR = 3230689607 -pkg syscall (netbsd-arm64), const SIOCGIFPSRCADDR ideal-int -pkg syscall (netbsd-arm64), const SIOCGLIFADDR = 3239602461 -pkg syscall (netbsd-arm64), const SIOCGLIFADDR ideal-int -pkg syscall (netbsd-arm64), const SIOCGLIFPHYADDR = 3239602507 -pkg syscall (netbsd-arm64), const SIOCGLIFPHYADDR ideal-int -pkg syscall (netbsd-arm64), const SIOCGLINKSTR = 3223873927 -pkg syscall (netbsd-arm64), const SIOCGLINKSTR ideal-int -pkg syscall (netbsd-arm64), const SIOCGLOWAT = 1074033411 -pkg syscall (netbsd-arm64), const SIOCGLOWAT ideal-int -pkg syscall (netbsd-arm64), const SIOCGPGRP = 1074033417 -pkg syscall (netbsd-arm64), const SIOCGPGRP ideal-int -pkg syscall (netbsd-arm64), const SIOCGVH = 3230689667 -pkg syscall (netbsd-arm64), const SIOCGVH ideal-int -pkg syscall (netbsd-arm64), const SIOCIFCREATE = 2156947834 -pkg syscall (netbsd-arm64), const SIOCIFCREATE ideal-int -pkg syscall (netbsd-arm64), const SIOCIFDESTROY = 2156947833 -pkg syscall (netbsd-arm64), const SIOCIFDESTROY ideal-int -pkg syscall (netbsd-arm64), const SIOCIFGCLONERS = 3222301048 -pkg syscall (netbsd-arm64), const SIOCIFGCLONERS ideal-int -pkg syscall (netbsd-arm64), const SIOCINITIFADDR = 3228592516 -pkg syscall (netbsd-arm64), const SIOCINITIFADDR ideal-int -pkg syscall (netbsd-arm64), const SIOCSDRVSPEC = 2150132091 -pkg syscall (netbsd-arm64), const SIOCSDRVSPEC ideal-int -pkg syscall (netbsd-arm64), const SIOCSETPFSYNC = 2156947959 -pkg syscall (netbsd-arm64), const SIOCSETPFSYNC ideal-int -pkg syscall (netbsd-arm64), const SIOCSHIWAT = 2147775232 -pkg syscall (netbsd-arm64), const SIOCSHIWAT ideal-int -pkg syscall (netbsd-arm64), const SIOCSIFADDR = 2156947724 -pkg syscall (netbsd-arm64), const SIOCSIFADDR ideal-int -pkg syscall (netbsd-arm64), const SIOCSIFADDRPREF = 2157472031 -pkg syscall (netbsd-arm64), const SIOCSIFADDRPREF ideal-int -pkg syscall (netbsd-arm64), const SIOCSIFBRDADDR = 2156947731 -pkg syscall (netbsd-arm64), const SIOCSIFBRDADDR ideal-int -pkg syscall (netbsd-arm64), const SIOCSIFCAP = 2149607797 -pkg syscall (netbsd-arm64), const SIOCSIFCAP ideal-int -pkg syscall (netbsd-arm64), const SIOCSIFDSTADDR = 2156947726 -pkg syscall (netbsd-arm64), const SIOCSIFDSTADDR ideal-int -pkg syscall (netbsd-arm64), const SIOCSIFFLAGS = 2156947728 -pkg syscall (netbsd-arm64), const SIOCSIFFLAGS ideal-int -pkg syscall (netbsd-arm64), const SIOCSIFGENERIC = 2156947769 -pkg syscall (netbsd-arm64), const SIOCSIFGENERIC ideal-int -pkg syscall (netbsd-arm64), const SIOCSIFMEDIA = 3230689589 -pkg syscall (netbsd-arm64), const SIOCSIFMEDIA ideal-int -pkg syscall (netbsd-arm64), const SIOCSIFMETRIC = 2156947736 -pkg syscall (netbsd-arm64), const SIOCSIFMETRIC ideal-int -pkg syscall (netbsd-arm64), const SIOCSIFMTU = 2156947839 -pkg syscall (netbsd-arm64), const SIOCSIFMTU ideal-int -pkg syscall (netbsd-arm64), const SIOCSIFNETMASK = 2156947734 -pkg syscall (netbsd-arm64), const SIOCSIFNETMASK ideal-int -pkg syscall (netbsd-arm64), const SIOCSIFPHYADDR = 2151704902 -pkg syscall (netbsd-arm64), const SIOCSIFPHYADDR ideal-int -pkg syscall (netbsd-arm64), const SIOCSLIFPHYADDR = 2165860682 -pkg syscall (netbsd-arm64), const SIOCSLIFPHYADDR ideal-int -pkg syscall (netbsd-arm64), const SIOCSLINKSTR = 2150132104 -pkg syscall (netbsd-arm64), const SIOCSLINKSTR ideal-int -pkg syscall (netbsd-arm64), const SIOCSLOWAT = 2147775234 -pkg syscall (netbsd-arm64), const SIOCSLOWAT ideal-int -pkg syscall (netbsd-arm64), const SIOCSPGRP = 2147775240 -pkg syscall (netbsd-arm64), const SIOCSPGRP ideal-int -pkg syscall (netbsd-arm64), const SIOCSVH = 3230689666 -pkg syscall (netbsd-arm64), const SIOCSVH ideal-int -pkg syscall (netbsd-arm64), const SIOCZIFDATA = 3231213958 -pkg syscall (netbsd-arm64), const SIOCZIFDATA ideal-int -pkg syscall (netbsd-arm64), const SOCK_CLOEXEC = 268435456 -pkg syscall (netbsd-arm64), const SOCK_CLOEXEC ideal-int -pkg syscall (netbsd-arm64), const SOCK_FLAGS_MASK = 4026531840 -pkg syscall (netbsd-arm64), const SOCK_FLAGS_MASK ideal-int -pkg syscall (netbsd-arm64), const SOCK_NONBLOCK = 536870912 -pkg syscall (netbsd-arm64), const SOCK_NONBLOCK ideal-int -pkg syscall (netbsd-arm64), const SOCK_NOSIGPIPE = 1073741824 -pkg syscall (netbsd-arm64), const SOCK_NOSIGPIPE ideal-int -pkg syscall (netbsd-arm64), const SOCK_RDM = 4 -pkg syscall (netbsd-arm64), const SOCK_RDM ideal-int -pkg syscall (netbsd-arm64), const SOL_SOCKET = 65535 -pkg syscall (netbsd-arm64), const SOMAXCONN = 128 -pkg syscall (netbsd-arm64), const SO_ACCEPTCONN = 2 -pkg syscall (netbsd-arm64), const SO_ACCEPTCONN ideal-int -pkg syscall (netbsd-arm64), const SO_ACCEPTFILTER = 4096 -pkg syscall (netbsd-arm64), const SO_ACCEPTFILTER ideal-int -pkg syscall (netbsd-arm64), const SO_BROADCAST = 32 -pkg syscall (netbsd-arm64), const SO_DEBUG = 1 -pkg syscall (netbsd-arm64), const SO_DEBUG ideal-int -pkg syscall (netbsd-arm64), const SO_DONTROUTE = 16 -pkg syscall (netbsd-arm64), const SO_ERROR = 4103 -pkg syscall (netbsd-arm64), const SO_ERROR ideal-int -pkg syscall (netbsd-arm64), const SO_KEEPALIVE = 8 -pkg syscall (netbsd-arm64), const SO_LINGER = 128 -pkg syscall (netbsd-arm64), const SO_NOHEADER = 4106 -pkg syscall (netbsd-arm64), const SO_NOHEADER ideal-int -pkg syscall (netbsd-arm64), const SO_NOSIGPIPE = 2048 -pkg syscall (netbsd-arm64), const SO_NOSIGPIPE ideal-int -pkg syscall (netbsd-arm64), const SO_OOBINLINE = 256 -pkg syscall (netbsd-arm64), const SO_OOBINLINE ideal-int -pkg syscall (netbsd-arm64), const SO_OVERFLOWED = 4105 -pkg syscall (netbsd-arm64), const SO_OVERFLOWED ideal-int -pkg syscall (netbsd-arm64), const SO_RCVBUF = 4098 -pkg syscall (netbsd-arm64), const SO_RCVLOWAT = 4100 -pkg syscall (netbsd-arm64), const SO_RCVLOWAT ideal-int -pkg syscall (netbsd-arm64), const SO_RCVTIMEO = 4108 -pkg syscall (netbsd-arm64), const SO_RCVTIMEO ideal-int -pkg syscall (netbsd-arm64), const SO_REUSEADDR = 4 -pkg syscall (netbsd-arm64), const SO_REUSEPORT = 512 -pkg syscall (netbsd-arm64), const SO_REUSEPORT ideal-int -pkg syscall (netbsd-arm64), const SO_SNDBUF = 4097 -pkg syscall (netbsd-arm64), const SO_SNDLOWAT = 4099 -pkg syscall (netbsd-arm64), const SO_SNDLOWAT ideal-int -pkg syscall (netbsd-arm64), const SO_SNDTIMEO = 4107 -pkg syscall (netbsd-arm64), const SO_SNDTIMEO ideal-int -pkg syscall (netbsd-arm64), const SO_TIMESTAMP = 8192 -pkg syscall (netbsd-arm64), const SO_TIMESTAMP ideal-int -pkg syscall (netbsd-arm64), const SO_TYPE = 4104 -pkg syscall (netbsd-arm64), const SO_TYPE ideal-int -pkg syscall (netbsd-arm64), const SO_USELOOPBACK = 64 -pkg syscall (netbsd-arm64), const SO_USELOOPBACK ideal-int -pkg syscall (netbsd-arm64), const SYSCTL_VERSION = 16777216 -pkg syscall (netbsd-arm64), const SYSCTL_VERSION ideal-int -pkg syscall (netbsd-arm64), const SYSCTL_VERS_0 = 0 -pkg syscall (netbsd-arm64), const SYSCTL_VERS_0 ideal-int -pkg syscall (netbsd-arm64), const SYSCTL_VERS_1 = 16777216 -pkg syscall (netbsd-arm64), const SYSCTL_VERS_1 ideal-int -pkg syscall (netbsd-arm64), const SYSCTL_VERS_MASK = 4278190080 -pkg syscall (netbsd-arm64), const SYSCTL_VERS_MASK ideal-int -pkg syscall (netbsd-arm64), const SYS_ACCEPT = 30 -pkg syscall (netbsd-arm64), const SYS_ACCEPT ideal-int -pkg syscall (netbsd-arm64), const SYS_ACCESS = 33 -pkg syscall (netbsd-arm64), const SYS_ACCESS ideal-int -pkg syscall (netbsd-arm64), const SYS_ACCT = 51 -pkg syscall (netbsd-arm64), const SYS_ACCT ideal-int -pkg syscall (netbsd-arm64), const SYS_ADJTIME = 421 -pkg syscall (netbsd-arm64), const SYS_ADJTIME ideal-int -pkg syscall (netbsd-arm64), const SYS_BIND = 104 -pkg syscall (netbsd-arm64), const SYS_BIND ideal-int -pkg syscall (netbsd-arm64), const SYS_BREAK = 17 -pkg syscall (netbsd-arm64), const SYS_BREAK ideal-int -pkg syscall (netbsd-arm64), const SYS_CHDIR = 12 -pkg syscall (netbsd-arm64), const SYS_CHDIR ideal-int -pkg syscall (netbsd-arm64), const SYS_CHFLAGS = 34 -pkg syscall (netbsd-arm64), const SYS_CHFLAGS ideal-int -pkg syscall (netbsd-arm64), const SYS_CHMOD = 15 -pkg syscall (netbsd-arm64), const SYS_CHMOD ideal-int -pkg syscall (netbsd-arm64), const SYS_CHOWN = 16 -pkg syscall (netbsd-arm64), const SYS_CHOWN ideal-int -pkg syscall (netbsd-arm64), const SYS_CHROOT = 61 -pkg syscall (netbsd-arm64), const SYS_CHROOT ideal-int -pkg syscall (netbsd-arm64), const SYS_CLOCK_GETRES = 429 -pkg syscall (netbsd-arm64), const SYS_CLOCK_GETRES ideal-int -pkg syscall (netbsd-arm64), const SYS_CLOCK_GETTIME = 427 -pkg syscall (netbsd-arm64), const SYS_CLOCK_GETTIME ideal-int -pkg syscall (netbsd-arm64), const SYS_CLOCK_SETTIME = 428 -pkg syscall (netbsd-arm64), const SYS_CLOCK_SETTIME ideal-int -pkg syscall (netbsd-arm64), const SYS_CLOSE = 6 -pkg syscall (netbsd-arm64), const SYS_CLOSE ideal-int -pkg syscall (netbsd-arm64), const SYS_CONNECT = 98 -pkg syscall (netbsd-arm64), const SYS_CONNECT ideal-int -pkg syscall (netbsd-arm64), const SYS_DUP = 41 -pkg syscall (netbsd-arm64), const SYS_DUP ideal-int -pkg syscall (netbsd-arm64), const SYS_DUP2 = 90 -pkg syscall (netbsd-arm64), const SYS_DUP2 ideal-int -pkg syscall (netbsd-arm64), const SYS_DUP3 = 454 -pkg syscall (netbsd-arm64), const SYS_DUP3 ideal-int -pkg syscall (netbsd-arm64), const SYS_EXECVE = 59 -pkg syscall (netbsd-arm64), const SYS_EXECVE ideal-int -pkg syscall (netbsd-arm64), const SYS_EXIT = 1 -pkg syscall (netbsd-arm64), const SYS_EXIT ideal-int -pkg syscall (netbsd-arm64), const SYS_EXTATTRCTL = 360 -pkg syscall (netbsd-arm64), const SYS_EXTATTRCTL ideal-int -pkg syscall (netbsd-arm64), const SYS_EXTATTR_DELETE_FD = 366 -pkg syscall (netbsd-arm64), const SYS_EXTATTR_DELETE_FD ideal-int -pkg syscall (netbsd-arm64), const SYS_EXTATTR_DELETE_FILE = 363 -pkg syscall (netbsd-arm64), const SYS_EXTATTR_DELETE_FILE ideal-int -pkg syscall (netbsd-arm64), const SYS_EXTATTR_DELETE_LINK = 369 -pkg syscall (netbsd-arm64), const SYS_EXTATTR_DELETE_LINK ideal-int -pkg syscall (netbsd-arm64), const SYS_EXTATTR_GET_FD = 365 -pkg syscall (netbsd-arm64), const SYS_EXTATTR_GET_FD ideal-int -pkg syscall (netbsd-arm64), const SYS_EXTATTR_GET_FILE = 362 -pkg syscall (netbsd-arm64), const SYS_EXTATTR_GET_FILE ideal-int -pkg syscall (netbsd-arm64), const SYS_EXTATTR_GET_LINK = 368 -pkg syscall (netbsd-arm64), const SYS_EXTATTR_GET_LINK ideal-int -pkg syscall (netbsd-arm64), const SYS_EXTATTR_LIST_FD = 370 -pkg syscall (netbsd-arm64), const SYS_EXTATTR_LIST_FD ideal-int -pkg syscall (netbsd-arm64), const SYS_EXTATTR_LIST_FILE = 371 -pkg syscall (netbsd-arm64), const SYS_EXTATTR_LIST_FILE ideal-int -pkg syscall (netbsd-arm64), const SYS_EXTATTR_LIST_LINK = 372 -pkg syscall (netbsd-arm64), const SYS_EXTATTR_LIST_LINK ideal-int -pkg syscall (netbsd-arm64), const SYS_EXTATTR_SET_FD = 364 -pkg syscall (netbsd-arm64), const SYS_EXTATTR_SET_FD ideal-int -pkg syscall (netbsd-arm64), const SYS_EXTATTR_SET_FILE = 361 -pkg syscall (netbsd-arm64), const SYS_EXTATTR_SET_FILE ideal-int -pkg syscall (netbsd-arm64), const SYS_EXTATTR_SET_LINK = 367 -pkg syscall (netbsd-arm64), const SYS_EXTATTR_SET_LINK ideal-int -pkg syscall (netbsd-arm64), const SYS_FACCESSAT = 462 -pkg syscall (netbsd-arm64), const SYS_FACCESSAT ideal-int -pkg syscall (netbsd-arm64), const SYS_FCHDIR = 13 -pkg syscall (netbsd-arm64), const SYS_FCHDIR ideal-int -pkg syscall (netbsd-arm64), const SYS_FCHFLAGS = 35 -pkg syscall (netbsd-arm64), const SYS_FCHFLAGS ideal-int -pkg syscall (netbsd-arm64), const SYS_FCHMOD = 124 -pkg syscall (netbsd-arm64), const SYS_FCHMOD ideal-int -pkg syscall (netbsd-arm64), const SYS_FCHMODAT = 463 -pkg syscall (netbsd-arm64), const SYS_FCHMODAT ideal-int -pkg syscall (netbsd-arm64), const SYS_FCHOWN = 123 -pkg syscall (netbsd-arm64), const SYS_FCHOWN ideal-int -pkg syscall (netbsd-arm64), const SYS_FCHOWNAT = 464 -pkg syscall (netbsd-arm64), const SYS_FCHOWNAT ideal-int -pkg syscall (netbsd-arm64), const SYS_FCHROOT = 297 -pkg syscall (netbsd-arm64), const SYS_FCHROOT ideal-int -pkg syscall (netbsd-arm64), const SYS_FCNTL = 92 -pkg syscall (netbsd-arm64), const SYS_FCNTL ideal-int -pkg syscall (netbsd-arm64), const SYS_FDATASYNC = 241 -pkg syscall (netbsd-arm64), const SYS_FDATASYNC ideal-int -pkg syscall (netbsd-arm64), const SYS_FEXECVE = 465 -pkg syscall (netbsd-arm64), const SYS_FEXECVE ideal-int -pkg syscall (netbsd-arm64), const SYS_FGETXATTR = 380 -pkg syscall (netbsd-arm64), const SYS_FGETXATTR ideal-int -pkg syscall (netbsd-arm64), const SYS_FHSTAT = 451 -pkg syscall (netbsd-arm64), const SYS_FHSTAT ideal-int -pkg syscall (netbsd-arm64), const SYS_FKTRACE = 288 -pkg syscall (netbsd-arm64), const SYS_FKTRACE ideal-int -pkg syscall (netbsd-arm64), const SYS_FLISTXATTR = 383 -pkg syscall (netbsd-arm64), const SYS_FLISTXATTR ideal-int -pkg syscall (netbsd-arm64), const SYS_FLOCK = 131 -pkg syscall (netbsd-arm64), const SYS_FLOCK ideal-int -pkg syscall (netbsd-arm64), const SYS_FORK = 2 -pkg syscall (netbsd-arm64), const SYS_FORK ideal-int -pkg syscall (netbsd-arm64), const SYS_FPATHCONF = 192 -pkg syscall (netbsd-arm64), const SYS_FPATHCONF ideal-int -pkg syscall (netbsd-arm64), const SYS_FREMOVEXATTR = 386 -pkg syscall (netbsd-arm64), const SYS_FREMOVEXATTR ideal-int -pkg syscall (netbsd-arm64), const SYS_FSETXATTR = 377 -pkg syscall (netbsd-arm64), const SYS_FSETXATTR ideal-int -pkg syscall (netbsd-arm64), const SYS_FSTAT = 440 -pkg syscall (netbsd-arm64), const SYS_FSTAT ideal-int -pkg syscall (netbsd-arm64), const SYS_FSTATAT = 466 -pkg syscall (netbsd-arm64), const SYS_FSTATAT ideal-int -pkg syscall (netbsd-arm64), const SYS_FSTATVFS1 = 358 -pkg syscall (netbsd-arm64), const SYS_FSTATVFS1 ideal-int -pkg syscall (netbsd-arm64), const SYS_FSYNC = 95 -pkg syscall (netbsd-arm64), const SYS_FSYNC ideal-int -pkg syscall (netbsd-arm64), const SYS_FSYNC_RANGE = 354 -pkg syscall (netbsd-arm64), const SYS_FSYNC_RANGE ideal-int -pkg syscall (netbsd-arm64), const SYS_FTRUNCATE = 201 -pkg syscall (netbsd-arm64), const SYS_FTRUNCATE ideal-int -pkg syscall (netbsd-arm64), const SYS_FUTIMENS = 472 -pkg syscall (netbsd-arm64), const SYS_FUTIMENS ideal-int -pkg syscall (netbsd-arm64), const SYS_FUTIMES = 423 -pkg syscall (netbsd-arm64), const SYS_FUTIMES ideal-int -pkg syscall (netbsd-arm64), const SYS_GETCONTEXT = 307 -pkg syscall (netbsd-arm64), const SYS_GETCONTEXT ideal-int -pkg syscall (netbsd-arm64), const SYS_GETDENTS = 390 -pkg syscall (netbsd-arm64), const SYS_GETDENTS ideal-int -pkg syscall (netbsd-arm64), const SYS_GETEGID = 43 -pkg syscall (netbsd-arm64), const SYS_GETEGID ideal-int -pkg syscall (netbsd-arm64), const SYS_GETEUID = 25 -pkg syscall (netbsd-arm64), const SYS_GETEUID ideal-int -pkg syscall (netbsd-arm64), const SYS_GETFH = 395 -pkg syscall (netbsd-arm64), const SYS_GETFH ideal-int -pkg syscall (netbsd-arm64), const SYS_GETGID = 47 -pkg syscall (netbsd-arm64), const SYS_GETGID ideal-int -pkg syscall (netbsd-arm64), const SYS_GETGROUPS = 79 -pkg syscall (netbsd-arm64), const SYS_GETGROUPS ideal-int -pkg syscall (netbsd-arm64), const SYS_GETITIMER = 426 -pkg syscall (netbsd-arm64), const SYS_GETITIMER ideal-int -pkg syscall (netbsd-arm64), const SYS_GETPEERNAME = 31 -pkg syscall (netbsd-arm64), const SYS_GETPEERNAME ideal-int -pkg syscall (netbsd-arm64), const SYS_GETPGID = 207 -pkg syscall (netbsd-arm64), const SYS_GETPGID ideal-int -pkg syscall (netbsd-arm64), const SYS_GETPGRP = 81 -pkg syscall (netbsd-arm64), const SYS_GETPGRP ideal-int -pkg syscall (netbsd-arm64), const SYS_GETPID = 20 -pkg syscall (netbsd-arm64), const SYS_GETPID ideal-int -pkg syscall (netbsd-arm64), const SYS_GETPPID = 39 -pkg syscall (netbsd-arm64), const SYS_GETPPID ideal-int -pkg syscall (netbsd-arm64), const SYS_GETPRIORITY = 100 -pkg syscall (netbsd-arm64), const SYS_GETPRIORITY ideal-int -pkg syscall (netbsd-arm64), const SYS_GETRLIMIT = 194 -pkg syscall (netbsd-arm64), const SYS_GETRLIMIT ideal-int -pkg syscall (netbsd-arm64), const SYS_GETRUSAGE = 445 -pkg syscall (netbsd-arm64), const SYS_GETRUSAGE ideal-int -pkg syscall (netbsd-arm64), const SYS_GETSID = 286 -pkg syscall (netbsd-arm64), const SYS_GETSID ideal-int -pkg syscall (netbsd-arm64), const SYS_GETSOCKNAME = 32 -pkg syscall (netbsd-arm64), const SYS_GETSOCKNAME ideal-int -pkg syscall (netbsd-arm64), const SYS_GETSOCKOPT = 118 -pkg syscall (netbsd-arm64), const SYS_GETSOCKOPT ideal-int -pkg syscall (netbsd-arm64), const SYS_GETTIMEOFDAY = 418 -pkg syscall (netbsd-arm64), const SYS_GETTIMEOFDAY ideal-int -pkg syscall (netbsd-arm64), const SYS_GETUID = 24 -pkg syscall (netbsd-arm64), const SYS_GETUID ideal-int -pkg syscall (netbsd-arm64), const SYS_GETVFSSTAT = 356 -pkg syscall (netbsd-arm64), const SYS_GETVFSSTAT ideal-int -pkg syscall (netbsd-arm64), const SYS_GETXATTR = 378 -pkg syscall (netbsd-arm64), const SYS_GETXATTR ideal-int -pkg syscall (netbsd-arm64), const SYS_IOCTL = 54 -pkg syscall (netbsd-arm64), const SYS_IOCTL ideal-int -pkg syscall (netbsd-arm64), const SYS_ISSETUGID = 305 -pkg syscall (netbsd-arm64), const SYS_ISSETUGID ideal-int -pkg syscall (netbsd-arm64), const SYS_KEVENT = 435 -pkg syscall (netbsd-arm64), const SYS_KEVENT ideal-int -pkg syscall (netbsd-arm64), const SYS_KILL = 37 -pkg syscall (netbsd-arm64), const SYS_KILL ideal-int -pkg syscall (netbsd-arm64), const SYS_KQUEUE = 344 -pkg syscall (netbsd-arm64), const SYS_KQUEUE ideal-int -pkg syscall (netbsd-arm64), const SYS_KQUEUE1 = 455 -pkg syscall (netbsd-arm64), const SYS_KQUEUE1 ideal-int -pkg syscall (netbsd-arm64), const SYS_KTRACE = 45 -pkg syscall (netbsd-arm64), const SYS_KTRACE ideal-int -pkg syscall (netbsd-arm64), const SYS_LCHFLAGS = 304 -pkg syscall (netbsd-arm64), const SYS_LCHFLAGS ideal-int -pkg syscall (netbsd-arm64), const SYS_LCHMOD = 274 -pkg syscall (netbsd-arm64), const SYS_LCHMOD ideal-int -pkg syscall (netbsd-arm64), const SYS_LCHOWN = 275 -pkg syscall (netbsd-arm64), const SYS_LCHOWN ideal-int -pkg syscall (netbsd-arm64), const SYS_LGETXATTR = 379 -pkg syscall (netbsd-arm64), const SYS_LGETXATTR ideal-int -pkg syscall (netbsd-arm64), const SYS_LINK = 9 -pkg syscall (netbsd-arm64), const SYS_LINK ideal-int -pkg syscall (netbsd-arm64), const SYS_LINKAT = 457 -pkg syscall (netbsd-arm64), const SYS_LINKAT ideal-int -pkg syscall (netbsd-arm64), const SYS_LISTEN = 106 -pkg syscall (netbsd-arm64), const SYS_LISTEN ideal-int -pkg syscall (netbsd-arm64), const SYS_LISTXATTR = 381 -pkg syscall (netbsd-arm64), const SYS_LISTXATTR ideal-int -pkg syscall (netbsd-arm64), const SYS_LLISTXATTR = 382 -pkg syscall (netbsd-arm64), const SYS_LLISTXATTR ideal-int -pkg syscall (netbsd-arm64), const SYS_LREMOVEXATTR = 385 -pkg syscall (netbsd-arm64), const SYS_LREMOVEXATTR ideal-int -pkg syscall (netbsd-arm64), const SYS_LSEEK = 199 -pkg syscall (netbsd-arm64), const SYS_LSEEK ideal-int -pkg syscall (netbsd-arm64), const SYS_LSETXATTR = 376 -pkg syscall (netbsd-arm64), const SYS_LSETXATTR ideal-int -pkg syscall (netbsd-arm64), const SYS_LSTAT = 441 -pkg syscall (netbsd-arm64), const SYS_LSTAT ideal-int -pkg syscall (netbsd-arm64), const SYS_LUTIMES = 424 -pkg syscall (netbsd-arm64), const SYS_LUTIMES ideal-int -pkg syscall (netbsd-arm64), const SYS_MADVISE = 75 -pkg syscall (netbsd-arm64), const SYS_MADVISE ideal-int -pkg syscall (netbsd-arm64), const SYS_MINCORE = 78 -pkg syscall (netbsd-arm64), const SYS_MINCORE ideal-int -pkg syscall (netbsd-arm64), const SYS_MINHERIT = 273 -pkg syscall (netbsd-arm64), const SYS_MINHERIT ideal-int -pkg syscall (netbsd-arm64), const SYS_MKDIR = 136 -pkg syscall (netbsd-arm64), const SYS_MKDIR ideal-int -pkg syscall (netbsd-arm64), const SYS_MKDIRAT = 461 -pkg syscall (netbsd-arm64), const SYS_MKDIRAT ideal-int -pkg syscall (netbsd-arm64), const SYS_MKFIFO = 132 -pkg syscall (netbsd-arm64), const SYS_MKFIFO ideal-int -pkg syscall (netbsd-arm64), const SYS_MKFIFOAT = 459 -pkg syscall (netbsd-arm64), const SYS_MKFIFOAT ideal-int -pkg syscall (netbsd-arm64), const SYS_MKNOD = 450 -pkg syscall (netbsd-arm64), const SYS_MKNOD ideal-int -pkg syscall (netbsd-arm64), const SYS_MKNODAT = 460 -pkg syscall (netbsd-arm64), const SYS_MKNODAT ideal-int -pkg syscall (netbsd-arm64), const SYS_MLOCK = 203 -pkg syscall (netbsd-arm64), const SYS_MLOCK ideal-int -pkg syscall (netbsd-arm64), const SYS_MLOCKALL = 242 -pkg syscall (netbsd-arm64), const SYS_MLOCKALL ideal-int -pkg syscall (netbsd-arm64), const SYS_MMAP = 197 -pkg syscall (netbsd-arm64), const SYS_MMAP ideal-int -pkg syscall (netbsd-arm64), const SYS_MODCTL = 246 -pkg syscall (netbsd-arm64), const SYS_MODCTL ideal-int -pkg syscall (netbsd-arm64), const SYS_MOUNT = 410 -pkg syscall (netbsd-arm64), const SYS_MOUNT ideal-int -pkg syscall (netbsd-arm64), const SYS_MPROTECT = 74 -pkg syscall (netbsd-arm64), const SYS_MPROTECT ideal-int -pkg syscall (netbsd-arm64), const SYS_MREMAP = 411 -pkg syscall (netbsd-arm64), const SYS_MREMAP ideal-int -pkg syscall (netbsd-arm64), const SYS_MSGCTL = 444 -pkg syscall (netbsd-arm64), const SYS_MSGCTL ideal-int -pkg syscall (netbsd-arm64), const SYS_MSGGET = 225 -pkg syscall (netbsd-arm64), const SYS_MSGGET ideal-int -pkg syscall (netbsd-arm64), const SYS_MSGRCV = 227 -pkg syscall (netbsd-arm64), const SYS_MSGRCV ideal-int -pkg syscall (netbsd-arm64), const SYS_MSGSND = 226 -pkg syscall (netbsd-arm64), const SYS_MSGSND ideal-int -pkg syscall (netbsd-arm64), const SYS_MUNLOCK = 204 -pkg syscall (netbsd-arm64), const SYS_MUNLOCK ideal-int -pkg syscall (netbsd-arm64), const SYS_MUNLOCKALL = 243 -pkg syscall (netbsd-arm64), const SYS_MUNLOCKALL ideal-int -pkg syscall (netbsd-arm64), const SYS_MUNMAP = 73 -pkg syscall (netbsd-arm64), const SYS_MUNMAP ideal-int -pkg syscall (netbsd-arm64), const SYS_NANOSLEEP = 430 -pkg syscall (netbsd-arm64), const SYS_NANOSLEEP ideal-int -pkg syscall (netbsd-arm64), const SYS_NTP_ADJTIME = 176 -pkg syscall (netbsd-arm64), const SYS_NTP_ADJTIME ideal-int -pkg syscall (netbsd-arm64), const SYS_NTP_GETTIME = 448 -pkg syscall (netbsd-arm64), const SYS_NTP_GETTIME ideal-int -pkg syscall (netbsd-arm64), const SYS_OPEN = 5 -pkg syscall (netbsd-arm64), const SYS_OPEN ideal-int -pkg syscall (netbsd-arm64), const SYS_OPENAT = 468 -pkg syscall (netbsd-arm64), const SYS_OPENAT ideal-int -pkg syscall (netbsd-arm64), const SYS_PACCEPT = 456 -pkg syscall (netbsd-arm64), const SYS_PACCEPT ideal-int -pkg syscall (netbsd-arm64), const SYS_PATHCONF = 191 -pkg syscall (netbsd-arm64), const SYS_PATHCONF ideal-int -pkg syscall (netbsd-arm64), const SYS_PIPE = 42 -pkg syscall (netbsd-arm64), const SYS_PIPE ideal-int -pkg syscall (netbsd-arm64), const SYS_PIPE2 = 453 -pkg syscall (netbsd-arm64), const SYS_PIPE2 ideal-int -pkg syscall (netbsd-arm64), const SYS_PMC_CONTROL = 342 -pkg syscall (netbsd-arm64), const SYS_PMC_CONTROL ideal-int -pkg syscall (netbsd-arm64), const SYS_PMC_GET_INFO = 341 -pkg syscall (netbsd-arm64), const SYS_PMC_GET_INFO ideal-int -pkg syscall (netbsd-arm64), const SYS_POLL = 209 -pkg syscall (netbsd-arm64), const SYS_POLL ideal-int -pkg syscall (netbsd-arm64), const SYS_POLLTS = 437 -pkg syscall (netbsd-arm64), const SYS_POLLTS ideal-int -pkg syscall (netbsd-arm64), const SYS_POSIX_FADVISE = 416 -pkg syscall (netbsd-arm64), const SYS_POSIX_FADVISE ideal-int -pkg syscall (netbsd-arm64), const SYS_POSIX_SPAWN = 474 -pkg syscall (netbsd-arm64), const SYS_POSIX_SPAWN ideal-int -pkg syscall (netbsd-arm64), const SYS_PREAD = 173 -pkg syscall (netbsd-arm64), const SYS_PREAD ideal-int -pkg syscall (netbsd-arm64), const SYS_PREADV = 289 -pkg syscall (netbsd-arm64), const SYS_PREADV ideal-int -pkg syscall (netbsd-arm64), const SYS_PROFIL = 44 -pkg syscall (netbsd-arm64), const SYS_PROFIL ideal-int -pkg syscall (netbsd-arm64), const SYS_PSELECT = 436 -pkg syscall (netbsd-arm64), const SYS_PSELECT ideal-int -pkg syscall (netbsd-arm64), const SYS_PSET_ASSIGN = 414 -pkg syscall (netbsd-arm64), const SYS_PSET_ASSIGN ideal-int -pkg syscall (netbsd-arm64), const SYS_PSET_CREATE = 412 -pkg syscall (netbsd-arm64), const SYS_PSET_CREATE ideal-int -pkg syscall (netbsd-arm64), const SYS_PSET_DESTROY = 413 -pkg syscall (netbsd-arm64), const SYS_PSET_DESTROY ideal-int -pkg syscall (netbsd-arm64), const SYS_PTRACE = 26 -pkg syscall (netbsd-arm64), const SYS_PTRACE ideal-int -pkg syscall (netbsd-arm64), const SYS_PWRITE = 174 -pkg syscall (netbsd-arm64), const SYS_PWRITE ideal-int -pkg syscall (netbsd-arm64), const SYS_PWRITEV = 290 -pkg syscall (netbsd-arm64), const SYS_PWRITEV ideal-int -pkg syscall (netbsd-arm64), const SYS_RASCTL = 343 -pkg syscall (netbsd-arm64), const SYS_RASCTL ideal-int -pkg syscall (netbsd-arm64), const SYS_READ = 3 -pkg syscall (netbsd-arm64), const SYS_READ ideal-int -pkg syscall (netbsd-arm64), const SYS_READLINK = 58 -pkg syscall (netbsd-arm64), const SYS_READLINK ideal-int -pkg syscall (netbsd-arm64), const SYS_READLINKAT = 469 -pkg syscall (netbsd-arm64), const SYS_READLINKAT ideal-int -pkg syscall (netbsd-arm64), const SYS_READV = 120 -pkg syscall (netbsd-arm64), const SYS_READV ideal-int -pkg syscall (netbsd-arm64), const SYS_REBOOT = 208 -pkg syscall (netbsd-arm64), const SYS_REBOOT ideal-int -pkg syscall (netbsd-arm64), const SYS_RECVFROM = 29 -pkg syscall (netbsd-arm64), const SYS_RECVFROM ideal-int -pkg syscall (netbsd-arm64), const SYS_RECVMMSG = 475 -pkg syscall (netbsd-arm64), const SYS_RECVMMSG ideal-int -pkg syscall (netbsd-arm64), const SYS_RECVMSG = 27 -pkg syscall (netbsd-arm64), const SYS_RECVMSG ideal-int -pkg syscall (netbsd-arm64), const SYS_REMOVEXATTR = 384 -pkg syscall (netbsd-arm64), const SYS_REMOVEXATTR ideal-int -pkg syscall (netbsd-arm64), const SYS_RENAME = 128 -pkg syscall (netbsd-arm64), const SYS_RENAME ideal-int -pkg syscall (netbsd-arm64), const SYS_RENAMEAT = 458 -pkg syscall (netbsd-arm64), const SYS_RENAMEAT ideal-int -pkg syscall (netbsd-arm64), const SYS_REVOKE = 56 -pkg syscall (netbsd-arm64), const SYS_REVOKE ideal-int -pkg syscall (netbsd-arm64), const SYS_RMDIR = 137 -pkg syscall (netbsd-arm64), const SYS_RMDIR ideal-int -pkg syscall (netbsd-arm64), const SYS_SBRK = 69 -pkg syscall (netbsd-arm64), const SYS_SBRK ideal-int -pkg syscall (netbsd-arm64), const SYS_SCHED_YIELD = 350 -pkg syscall (netbsd-arm64), const SYS_SCHED_YIELD ideal-int -pkg syscall (netbsd-arm64), const SYS_SELECT = 417 -pkg syscall (netbsd-arm64), const SYS_SELECT ideal-int -pkg syscall (netbsd-arm64), const SYS_SEMCONFIG = 223 -pkg syscall (netbsd-arm64), const SYS_SEMCONFIG ideal-int -pkg syscall (netbsd-arm64), const SYS_SEMGET = 221 -pkg syscall (netbsd-arm64), const SYS_SEMGET ideal-int -pkg syscall (netbsd-arm64), const SYS_SEMOP = 222 -pkg syscall (netbsd-arm64), const SYS_SEMOP ideal-int -pkg syscall (netbsd-arm64), const SYS_SENDMMSG = 476 -pkg syscall (netbsd-arm64), const SYS_SENDMMSG ideal-int -pkg syscall (netbsd-arm64), const SYS_SENDMSG = 28 -pkg syscall (netbsd-arm64), const SYS_SENDMSG ideal-int -pkg syscall (netbsd-arm64), const SYS_SENDTO = 133 -pkg syscall (netbsd-arm64), const SYS_SENDTO ideal-int -pkg syscall (netbsd-arm64), const SYS_SETCONTEXT = 308 -pkg syscall (netbsd-arm64), const SYS_SETCONTEXT ideal-int -pkg syscall (netbsd-arm64), const SYS_SETEGID = 182 -pkg syscall (netbsd-arm64), const SYS_SETEGID ideal-int -pkg syscall (netbsd-arm64), const SYS_SETEUID = 183 -pkg syscall (netbsd-arm64), const SYS_SETEUID ideal-int -pkg syscall (netbsd-arm64), const SYS_SETGID = 181 -pkg syscall (netbsd-arm64), const SYS_SETGID ideal-int -pkg syscall (netbsd-arm64), const SYS_SETGROUPS = 80 -pkg syscall (netbsd-arm64), const SYS_SETGROUPS ideal-int -pkg syscall (netbsd-arm64), const SYS_SETITIMER = 425 -pkg syscall (netbsd-arm64), const SYS_SETITIMER ideal-int -pkg syscall (netbsd-arm64), const SYS_SETPGID = 82 -pkg syscall (netbsd-arm64), const SYS_SETPGID ideal-int -pkg syscall (netbsd-arm64), const SYS_SETPRIORITY = 96 -pkg syscall (netbsd-arm64), const SYS_SETPRIORITY ideal-int -pkg syscall (netbsd-arm64), const SYS_SETREGID = 127 -pkg syscall (netbsd-arm64), const SYS_SETREGID ideal-int -pkg syscall (netbsd-arm64), const SYS_SETREUID = 126 -pkg syscall (netbsd-arm64), const SYS_SETREUID ideal-int -pkg syscall (netbsd-arm64), const SYS_SETRLIMIT = 195 -pkg syscall (netbsd-arm64), const SYS_SETRLIMIT ideal-int -pkg syscall (netbsd-arm64), const SYS_SETSID = 147 -pkg syscall (netbsd-arm64), const SYS_SETSID ideal-int -pkg syscall (netbsd-arm64), const SYS_SETSOCKOPT = 105 -pkg syscall (netbsd-arm64), const SYS_SETSOCKOPT ideal-int -pkg syscall (netbsd-arm64), const SYS_SETTIMEOFDAY = 419 -pkg syscall (netbsd-arm64), const SYS_SETTIMEOFDAY ideal-int -pkg syscall (netbsd-arm64), const SYS_SETUID = 23 -pkg syscall (netbsd-arm64), const SYS_SETUID ideal-int -pkg syscall (netbsd-arm64), const SYS_SETXATTR = 375 -pkg syscall (netbsd-arm64), const SYS_SETXATTR ideal-int -pkg syscall (netbsd-arm64), const SYS_SHMAT = 228 -pkg syscall (netbsd-arm64), const SYS_SHMAT ideal-int -pkg syscall (netbsd-arm64), const SYS_SHMCTL = 443 -pkg syscall (netbsd-arm64), const SYS_SHMCTL ideal-int -pkg syscall (netbsd-arm64), const SYS_SHMDT = 230 -pkg syscall (netbsd-arm64), const SYS_SHMDT ideal-int -pkg syscall (netbsd-arm64), const SYS_SHMGET = 231 -pkg syscall (netbsd-arm64), const SYS_SHMGET ideal-int -pkg syscall (netbsd-arm64), const SYS_SHUTDOWN = 134 -pkg syscall (netbsd-arm64), const SYS_SHUTDOWN ideal-int -pkg syscall (netbsd-arm64), const SYS_SIGQUEUEINFO = 245 -pkg syscall (netbsd-arm64), const SYS_SIGQUEUEINFO ideal-int -pkg syscall (netbsd-arm64), const SYS_SOCKET = 394 -pkg syscall (netbsd-arm64), const SYS_SOCKET ideal-int -pkg syscall (netbsd-arm64), const SYS_SOCKETPAIR = 135 -pkg syscall (netbsd-arm64), const SYS_SOCKETPAIR ideal-int -pkg syscall (netbsd-arm64), const SYS_SSTK = 70 -pkg syscall (netbsd-arm64), const SYS_SSTK ideal-int -pkg syscall (netbsd-arm64), const SYS_STAT = 439 -pkg syscall (netbsd-arm64), const SYS_STAT ideal-int -pkg syscall (netbsd-arm64), const SYS_STATVFS1 = 357 -pkg syscall (netbsd-arm64), const SYS_STATVFS1 ideal-int -pkg syscall (netbsd-arm64), const SYS_SWAPCTL = 271 -pkg syscall (netbsd-arm64), const SYS_SWAPCTL ideal-int -pkg syscall (netbsd-arm64), const SYS_SYMLINK = 57 -pkg syscall (netbsd-arm64), const SYS_SYMLINK ideal-int -pkg syscall (netbsd-arm64), const SYS_SYMLINKAT = 470 -pkg syscall (netbsd-arm64), const SYS_SYMLINKAT ideal-int -pkg syscall (netbsd-arm64), const SYS_SYNC = 36 -pkg syscall (netbsd-arm64), const SYS_SYNC ideal-int -pkg syscall (netbsd-arm64), const SYS_SYSARCH = 165 -pkg syscall (netbsd-arm64), const SYS_SYSARCH ideal-int -pkg syscall (netbsd-arm64), const SYS_TIMER_CREATE = 235 -pkg syscall (netbsd-arm64), const SYS_TIMER_CREATE ideal-int -pkg syscall (netbsd-arm64), const SYS_TIMER_DELETE = 236 -pkg syscall (netbsd-arm64), const SYS_TIMER_DELETE ideal-int -pkg syscall (netbsd-arm64), const SYS_TIMER_GETOVERRUN = 239 -pkg syscall (netbsd-arm64), const SYS_TIMER_GETOVERRUN ideal-int -pkg syscall (netbsd-arm64), const SYS_TIMER_GETTIME = 447 -pkg syscall (netbsd-arm64), const SYS_TIMER_GETTIME ideal-int -pkg syscall (netbsd-arm64), const SYS_TIMER_SETTIME = 446 -pkg syscall (netbsd-arm64), const SYS_TIMER_SETTIME ideal-int -pkg syscall (netbsd-arm64), const SYS_TRUNCATE = 200 -pkg syscall (netbsd-arm64), const SYS_TRUNCATE ideal-int -pkg syscall (netbsd-arm64), const SYS_UMASK = 60 -pkg syscall (netbsd-arm64), const SYS_UMASK ideal-int -pkg syscall (netbsd-arm64), const SYS_UNDELETE = 205 -pkg syscall (netbsd-arm64), const SYS_UNDELETE ideal-int -pkg syscall (netbsd-arm64), const SYS_UNLINK = 10 -pkg syscall (netbsd-arm64), const SYS_UNLINK ideal-int -pkg syscall (netbsd-arm64), const SYS_UNLINKAT = 471 -pkg syscall (netbsd-arm64), const SYS_UNLINKAT ideal-int -pkg syscall (netbsd-arm64), const SYS_UNMOUNT = 22 -pkg syscall (netbsd-arm64), const SYS_UNMOUNT ideal-int -pkg syscall (netbsd-arm64), const SYS_UTIMENSAT = 467 -pkg syscall (netbsd-arm64), const SYS_UTIMENSAT ideal-int -pkg syscall (netbsd-arm64), const SYS_UTIMES = 420 -pkg syscall (netbsd-arm64), const SYS_UTIMES ideal-int -pkg syscall (netbsd-arm64), const SYS_UTRACE = 306 -pkg syscall (netbsd-arm64), const SYS_UTRACE ideal-int -pkg syscall (netbsd-arm64), const SYS_UUIDGEN = 355 -pkg syscall (netbsd-arm64), const SYS_UUIDGEN ideal-int -pkg syscall (netbsd-arm64), const SYS_VADVISE = 72 -pkg syscall (netbsd-arm64), const SYS_VADVISE ideal-int -pkg syscall (netbsd-arm64), const SYS_VFORK = 66 -pkg syscall (netbsd-arm64), const SYS_VFORK ideal-int -pkg syscall (netbsd-arm64), const SYS_WAIT4 = 449 -pkg syscall (netbsd-arm64), const SYS_WAIT4 ideal-int -pkg syscall (netbsd-arm64), const SYS_WRITE = 4 -pkg syscall (netbsd-arm64), const SYS_WRITE ideal-int -pkg syscall (netbsd-arm64), const SYS_WRITEV = 121 -pkg syscall (netbsd-arm64), const SYS_WRITEV ideal-int -pkg syscall (netbsd-arm64), const SYS__LWP_CONTINUE = 314 -pkg syscall (netbsd-arm64), const SYS__LWP_CONTINUE ideal-int -pkg syscall (netbsd-arm64), const SYS__LWP_CREATE = 309 -pkg syscall (netbsd-arm64), const SYS__LWP_CREATE ideal-int -pkg syscall (netbsd-arm64), const SYS__LWP_CTL = 325 -pkg syscall (netbsd-arm64), const SYS__LWP_CTL ideal-int -pkg syscall (netbsd-arm64), const SYS__LWP_DETACH = 319 -pkg syscall (netbsd-arm64), const SYS__LWP_DETACH ideal-int -pkg syscall (netbsd-arm64), const SYS__LWP_EXIT = 310 -pkg syscall (netbsd-arm64), const SYS__LWP_EXIT ideal-int -pkg syscall (netbsd-arm64), const SYS__LWP_GETNAME = 324 -pkg syscall (netbsd-arm64), const SYS__LWP_GETNAME ideal-int -pkg syscall (netbsd-arm64), const SYS__LWP_GETPRIVATE = 316 -pkg syscall (netbsd-arm64), const SYS__LWP_GETPRIVATE ideal-int -pkg syscall (netbsd-arm64), const SYS__LWP_KILL = 318 -pkg syscall (netbsd-arm64), const SYS__LWP_KILL ideal-int -pkg syscall (netbsd-arm64), const SYS__LWP_PARK = 434 -pkg syscall (netbsd-arm64), const SYS__LWP_PARK ideal-int -pkg syscall (netbsd-arm64), const SYS__LWP_SELF = 311 -pkg syscall (netbsd-arm64), const SYS__LWP_SELF ideal-int -pkg syscall (netbsd-arm64), const SYS__LWP_SETNAME = 323 -pkg syscall (netbsd-arm64), const SYS__LWP_SETNAME ideal-int -pkg syscall (netbsd-arm64), const SYS__LWP_SETPRIVATE = 317 -pkg syscall (netbsd-arm64), const SYS__LWP_SETPRIVATE ideal-int -pkg syscall (netbsd-arm64), const SYS__LWP_SUSPEND = 313 -pkg syscall (netbsd-arm64), const SYS__LWP_SUSPEND ideal-int -pkg syscall (netbsd-arm64), const SYS__LWP_UNPARK = 321 -pkg syscall (netbsd-arm64), const SYS__LWP_UNPARK ideal-int -pkg syscall (netbsd-arm64), const SYS__LWP_UNPARK_ALL = 322 -pkg syscall (netbsd-arm64), const SYS__LWP_UNPARK_ALL ideal-int -pkg syscall (netbsd-arm64), const SYS__LWP_WAIT = 312 -pkg syscall (netbsd-arm64), const SYS__LWP_WAIT ideal-int -pkg syscall (netbsd-arm64), const SYS__LWP_WAKEUP = 315 -pkg syscall (netbsd-arm64), const SYS__LWP_WAKEUP ideal-int -pkg syscall (netbsd-arm64), const SYS__PSET_BIND = 415 -pkg syscall (netbsd-arm64), const SYS__PSET_BIND ideal-int -pkg syscall (netbsd-arm64), const SYS__SCHED_GETAFFINITY = 349 -pkg syscall (netbsd-arm64), const SYS__SCHED_GETAFFINITY ideal-int -pkg syscall (netbsd-arm64), const SYS__SCHED_GETPARAM = 347 -pkg syscall (netbsd-arm64), const SYS__SCHED_GETPARAM ideal-int -pkg syscall (netbsd-arm64), const SYS__SCHED_SETAFFINITY = 348 -pkg syscall (netbsd-arm64), const SYS__SCHED_SETAFFINITY ideal-int -pkg syscall (netbsd-arm64), const SYS__SCHED_SETPARAM = 346 -pkg syscall (netbsd-arm64), const SYS__SCHED_SETPARAM ideal-int -pkg syscall (netbsd-arm64), const SYS___CLONE = 287 -pkg syscall (netbsd-arm64), const SYS___CLONE ideal-int -pkg syscall (netbsd-arm64), const SYS___GETCWD = 296 -pkg syscall (netbsd-arm64), const SYS___GETCWD ideal-int -pkg syscall (netbsd-arm64), const SYS___GETLOGIN = 49 -pkg syscall (netbsd-arm64), const SYS___GETLOGIN ideal-int -pkg syscall (netbsd-arm64), const SYS___POSIX_CHOWN = 283 -pkg syscall (netbsd-arm64), const SYS___POSIX_CHOWN ideal-int -pkg syscall (netbsd-arm64), const SYS___POSIX_FCHOWN = 284 -pkg syscall (netbsd-arm64), const SYS___POSIX_FCHOWN ideal-int -pkg syscall (netbsd-arm64), const SYS___POSIX_LCHOWN = 285 -pkg syscall (netbsd-arm64), const SYS___POSIX_LCHOWN ideal-int -pkg syscall (netbsd-arm64), const SYS___POSIX_RENAME = 270 -pkg syscall (netbsd-arm64), const SYS___POSIX_RENAME ideal-int -pkg syscall (netbsd-arm64), const SYS___QUOTACTL = 473 -pkg syscall (netbsd-arm64), const SYS___QUOTACTL ideal-int -pkg syscall (netbsd-arm64), const SYS___SEMCTL = 442 -pkg syscall (netbsd-arm64), const SYS___SEMCTL ideal-int -pkg syscall (netbsd-arm64), const SYS___SETLOGIN = 50 -pkg syscall (netbsd-arm64), const SYS___SETLOGIN ideal-int -pkg syscall (netbsd-arm64), const SYS___SIGACTION_SIGTRAMP = 340 -pkg syscall (netbsd-arm64), const SYS___SIGACTION_SIGTRAMP ideal-int -pkg syscall (netbsd-arm64), const SYS___SIGTIMEDWAIT = 431 -pkg syscall (netbsd-arm64), const SYS___SIGTIMEDWAIT ideal-int -pkg syscall (netbsd-arm64), const SYS___SYSCTL = 202 -pkg syscall (netbsd-arm64), const SYS___SYSCTL ideal-int -pkg syscall (netbsd-arm64), const S_ARCH1 = 65536 -pkg syscall (netbsd-arm64), const S_ARCH1 ideal-int -pkg syscall (netbsd-arm64), const S_ARCH2 = 131072 -pkg syscall (netbsd-arm64), const S_ARCH2 ideal-int -pkg syscall (netbsd-arm64), const S_BLKSIZE = 512 -pkg syscall (netbsd-arm64), const S_BLKSIZE ideal-int -pkg syscall (netbsd-arm64), const S_IEXEC = 64 -pkg syscall (netbsd-arm64), const S_IEXEC ideal-int -pkg syscall (netbsd-arm64), const S_IFMT = 61440 -pkg syscall (netbsd-arm64), const S_IFWHT = 57344 -pkg syscall (netbsd-arm64), const S_IFWHT ideal-int -pkg syscall (netbsd-arm64), const S_IREAD = 256 -pkg syscall (netbsd-arm64), const S_IREAD ideal-int -pkg syscall (netbsd-arm64), const S_IRGRP = 32 -pkg syscall (netbsd-arm64), const S_IRGRP ideal-int -pkg syscall (netbsd-arm64), const S_IROTH = 4 -pkg syscall (netbsd-arm64), const S_IROTH ideal-int -pkg syscall (netbsd-arm64), const S_IRWXG = 56 -pkg syscall (netbsd-arm64), const S_IRWXG ideal-int -pkg syscall (netbsd-arm64), const S_IRWXO = 7 -pkg syscall (netbsd-arm64), const S_IRWXO ideal-int -pkg syscall (netbsd-arm64), const S_IRWXU = 448 -pkg syscall (netbsd-arm64), const S_IRWXU ideal-int -pkg syscall (netbsd-arm64), const S_ISTXT = 512 -pkg syscall (netbsd-arm64), const S_ISTXT ideal-int -pkg syscall (netbsd-arm64), const S_IWGRP = 16 -pkg syscall (netbsd-arm64), const S_IWGRP ideal-int -pkg syscall (netbsd-arm64), const S_IWOTH = 2 -pkg syscall (netbsd-arm64), const S_IWOTH ideal-int -pkg syscall (netbsd-arm64), const S_IWRITE = 128 -pkg syscall (netbsd-arm64), const S_IWRITE ideal-int -pkg syscall (netbsd-arm64), const S_IXGRP = 8 -pkg syscall (netbsd-arm64), const S_IXGRP ideal-int -pkg syscall (netbsd-arm64), const S_IXOTH = 1 -pkg syscall (netbsd-arm64), const S_IXOTH ideal-int -pkg syscall (netbsd-arm64), const S_LOGIN_SET = 1 -pkg syscall (netbsd-arm64), const S_LOGIN_SET ideal-int -pkg syscall (netbsd-arm64), const SizeofBpfHdr = 32 -pkg syscall (netbsd-arm64), const SizeofBpfHdr ideal-int -pkg syscall (netbsd-arm64), const SizeofBpfInsn = 8 -pkg syscall (netbsd-arm64), const SizeofBpfInsn ideal-int -pkg syscall (netbsd-arm64), const SizeofBpfProgram = 16 -pkg syscall (netbsd-arm64), const SizeofBpfProgram ideal-int -pkg syscall (netbsd-arm64), const SizeofBpfStat = 128 -pkg syscall (netbsd-arm64), const SizeofBpfStat ideal-int -pkg syscall (netbsd-arm64), const SizeofBpfVersion = 4 -pkg syscall (netbsd-arm64), const SizeofBpfVersion ideal-int -pkg syscall (netbsd-arm64), const SizeofCmsghdr = 12 -pkg syscall (netbsd-arm64), const SizeofCmsghdr ideal-int -pkg syscall (netbsd-arm64), const SizeofICMPv6Filter = 32 -pkg syscall (netbsd-arm64), const SizeofICMPv6Filter ideal-int -pkg syscall (netbsd-arm64), const SizeofIPMreq = 8 -pkg syscall (netbsd-arm64), const SizeofIPMreq ideal-int -pkg syscall (netbsd-arm64), const SizeofIPv6MTUInfo = 32 -pkg syscall (netbsd-arm64), const SizeofIPv6MTUInfo ideal-int -pkg syscall (netbsd-arm64), const SizeofIPv6Mreq = 20 -pkg syscall (netbsd-arm64), const SizeofIPv6Mreq ideal-int -pkg syscall (netbsd-arm64), const SizeofIfAnnounceMsghdr = 24 -pkg syscall (netbsd-arm64), const SizeofIfAnnounceMsghdr ideal-int -pkg syscall (netbsd-arm64), const SizeofIfData = 136 -pkg syscall (netbsd-arm64), const SizeofIfData ideal-int -pkg syscall (netbsd-arm64), const SizeofIfMsghdr = 152 -pkg syscall (netbsd-arm64), const SizeofIfMsghdr ideal-int -pkg syscall (netbsd-arm64), const SizeofIfaMsghdr = 24 -pkg syscall (netbsd-arm64), const SizeofIfaMsghdr ideal-int -pkg syscall (netbsd-arm64), const SizeofInet6Pktinfo = 20 -pkg syscall (netbsd-arm64), const SizeofInet6Pktinfo ideal-int -pkg syscall (netbsd-arm64), const SizeofLinger = 8 -pkg syscall (netbsd-arm64), const SizeofLinger ideal-int -pkg syscall (netbsd-arm64), const SizeofMsghdr = 48 -pkg syscall (netbsd-arm64), const SizeofMsghdr ideal-int -pkg syscall (netbsd-arm64), const SizeofRtMetrics = 80 -pkg syscall (netbsd-arm64), const SizeofRtMetrics ideal-int -pkg syscall (netbsd-arm64), const SizeofRtMsghdr = 120 -pkg syscall (netbsd-arm64), const SizeofRtMsghdr ideal-int -pkg syscall (netbsd-arm64), const SizeofSockaddrAny = 108 -pkg syscall (netbsd-arm64), const SizeofSockaddrAny ideal-int -pkg syscall (netbsd-arm64), const SizeofSockaddrDatalink = 20 -pkg syscall (netbsd-arm64), const SizeofSockaddrDatalink ideal-int -pkg syscall (netbsd-arm64), const SizeofSockaddrInet4 = 16 -pkg syscall (netbsd-arm64), const SizeofSockaddrInet4 ideal-int -pkg syscall (netbsd-arm64), const SizeofSockaddrInet6 = 28 -pkg syscall (netbsd-arm64), const SizeofSockaddrInet6 ideal-int -pkg syscall (netbsd-arm64), const SizeofSockaddrUnix = 106 -pkg syscall (netbsd-arm64), const SizeofSockaddrUnix ideal-int -pkg syscall (netbsd-arm64), const TCIFLUSH = 1 -pkg syscall (netbsd-arm64), const TCIFLUSH ideal-int -pkg syscall (netbsd-arm64), const TCIOFLUSH = 3 -pkg syscall (netbsd-arm64), const TCIOFLUSH ideal-int -pkg syscall (netbsd-arm64), const TCOFLUSH = 2 -pkg syscall (netbsd-arm64), const TCOFLUSH ideal-int -pkg syscall (netbsd-arm64), const TCP_CONGCTL = 32 -pkg syscall (netbsd-arm64), const TCP_CONGCTL ideal-int -pkg syscall (netbsd-arm64), const TCP_KEEPCNT = 6 -pkg syscall (netbsd-arm64), const TCP_KEEPCNT ideal-int -pkg syscall (netbsd-arm64), const TCP_KEEPIDLE = 3 -pkg syscall (netbsd-arm64), const TCP_KEEPIDLE ideal-int -pkg syscall (netbsd-arm64), const TCP_KEEPINIT = 7 -pkg syscall (netbsd-arm64), const TCP_KEEPINIT ideal-int -pkg syscall (netbsd-arm64), const TCP_KEEPINTVL = 5 -pkg syscall (netbsd-arm64), const TCP_KEEPINTVL ideal-int -pkg syscall (netbsd-arm64), const TCP_MAXBURST = 4 -pkg syscall (netbsd-arm64), const TCP_MAXBURST ideal-int -pkg syscall (netbsd-arm64), const TCP_MAXSEG = 2 -pkg syscall (netbsd-arm64), const TCP_MAXSEG ideal-int -pkg syscall (netbsd-arm64), const TCP_MAXWIN = 65535 -pkg syscall (netbsd-arm64), const TCP_MAXWIN ideal-int -pkg syscall (netbsd-arm64), const TCP_MAX_WINSHIFT = 14 -pkg syscall (netbsd-arm64), const TCP_MAX_WINSHIFT ideal-int -pkg syscall (netbsd-arm64), const TCP_MD5SIG = 16 -pkg syscall (netbsd-arm64), const TCP_MD5SIG ideal-int -pkg syscall (netbsd-arm64), const TCP_MINMSS = 216 -pkg syscall (netbsd-arm64), const TCP_MINMSS ideal-int -pkg syscall (netbsd-arm64), const TCP_MSS = 536 -pkg syscall (netbsd-arm64), const TCP_MSS ideal-int -pkg syscall (netbsd-arm64), const TCSAFLUSH = 2 -pkg syscall (netbsd-arm64), const TCSAFLUSH ideal-int -pkg syscall (netbsd-arm64), const TIOCCBRK = 536900730 -pkg syscall (netbsd-arm64), const TIOCCBRK ideal-int -pkg syscall (netbsd-arm64), const TIOCCDTR = 536900728 -pkg syscall (netbsd-arm64), const TIOCCDTR ideal-int -pkg syscall (netbsd-arm64), const TIOCCONS = 2147775586 -pkg syscall (netbsd-arm64), const TIOCCONS ideal-int -pkg syscall (netbsd-arm64), const TIOCDCDTIMESTAMP = 1074820184 -pkg syscall (netbsd-arm64), const TIOCDCDTIMESTAMP ideal-int -pkg syscall (netbsd-arm64), const TIOCDRAIN = 536900702 -pkg syscall (netbsd-arm64), const TIOCDRAIN ideal-int -pkg syscall (netbsd-arm64), const TIOCEXCL = 536900621 -pkg syscall (netbsd-arm64), const TIOCEXCL ideal-int -pkg syscall (netbsd-arm64), const TIOCEXT = 2147775584 -pkg syscall (netbsd-arm64), const TIOCEXT ideal-int -pkg syscall (netbsd-arm64), const TIOCFLAG_CDTRCTS = 16 -pkg syscall (netbsd-arm64), const TIOCFLAG_CDTRCTS ideal-int -pkg syscall (netbsd-arm64), const TIOCFLAG_CLOCAL = 2 -pkg syscall (netbsd-arm64), const TIOCFLAG_CLOCAL ideal-int -pkg syscall (netbsd-arm64), const TIOCFLAG_CRTSCTS = 4 -pkg syscall (netbsd-arm64), const TIOCFLAG_CRTSCTS ideal-int -pkg syscall (netbsd-arm64), const TIOCFLAG_MDMBUF = 8 -pkg syscall (netbsd-arm64), const TIOCFLAG_MDMBUF ideal-int -pkg syscall (netbsd-arm64), const TIOCFLAG_SOFTCAR = 1 -pkg syscall (netbsd-arm64), const TIOCFLAG_SOFTCAR ideal-int -pkg syscall (netbsd-arm64), const TIOCFLUSH = 2147775504 -pkg syscall (netbsd-arm64), const TIOCFLUSH ideal-int -pkg syscall (netbsd-arm64), const TIOCGETA = 1076655123 -pkg syscall (netbsd-arm64), const TIOCGETA ideal-int -pkg syscall (netbsd-arm64), const TIOCGETD = 1074033690 -pkg syscall (netbsd-arm64), const TIOCGETD ideal-int -pkg syscall (netbsd-arm64), const TIOCGFLAGS = 1074033757 -pkg syscall (netbsd-arm64), const TIOCGFLAGS ideal-int -pkg syscall (netbsd-arm64), const TIOCGLINED = 1075868738 -pkg syscall (netbsd-arm64), const TIOCGLINED ideal-int -pkg syscall (netbsd-arm64), const TIOCGPGRP = 1074033783 -pkg syscall (netbsd-arm64), const TIOCGPGRP ideal-int -pkg syscall (netbsd-arm64), const TIOCGQSIZE = 1074033793 -pkg syscall (netbsd-arm64), const TIOCGQSIZE ideal-int -pkg syscall (netbsd-arm64), const TIOCGRANTPT = 536900679 -pkg syscall (netbsd-arm64), const TIOCGRANTPT ideal-int -pkg syscall (netbsd-arm64), const TIOCGSID = 1074033763 -pkg syscall (netbsd-arm64), const TIOCGSID ideal-int -pkg syscall (netbsd-arm64), const TIOCGSIZE = 1074295912 -pkg syscall (netbsd-arm64), const TIOCGSIZE ideal-int -pkg syscall (netbsd-arm64), const TIOCGWINSZ = 1074295912 -pkg syscall (netbsd-arm64), const TIOCGWINSZ ideal-int -pkg syscall (netbsd-arm64), const TIOCMBIC = 2147775595 -pkg syscall (netbsd-arm64), const TIOCMBIC ideal-int -pkg syscall (netbsd-arm64), const TIOCMBIS = 2147775596 -pkg syscall (netbsd-arm64), const TIOCMBIS ideal-int -pkg syscall (netbsd-arm64), const TIOCMGET = 1074033770 -pkg syscall (netbsd-arm64), const TIOCMGET ideal-int -pkg syscall (netbsd-arm64), const TIOCMSET = 2147775597 -pkg syscall (netbsd-arm64), const TIOCMSET ideal-int -pkg syscall (netbsd-arm64), const TIOCM_CAR = 64 -pkg syscall (netbsd-arm64), const TIOCM_CAR ideal-int -pkg syscall (netbsd-arm64), const TIOCM_CD = 64 -pkg syscall (netbsd-arm64), const TIOCM_CD ideal-int -pkg syscall (netbsd-arm64), const TIOCM_CTS = 32 -pkg syscall (netbsd-arm64), const TIOCM_CTS ideal-int -pkg syscall (netbsd-arm64), const TIOCM_DSR = 256 -pkg syscall (netbsd-arm64), const TIOCM_DSR ideal-int -pkg syscall (netbsd-arm64), const TIOCM_DTR = 2 -pkg syscall (netbsd-arm64), const TIOCM_DTR ideal-int -pkg syscall (netbsd-arm64), const TIOCM_LE = 1 -pkg syscall (netbsd-arm64), const TIOCM_LE ideal-int -pkg syscall (netbsd-arm64), const TIOCM_RI = 128 -pkg syscall (netbsd-arm64), const TIOCM_RI ideal-int -pkg syscall (netbsd-arm64), const TIOCM_RNG = 128 -pkg syscall (netbsd-arm64), const TIOCM_RNG ideal-int -pkg syscall (netbsd-arm64), const TIOCM_RTS = 4 -pkg syscall (netbsd-arm64), const TIOCM_RTS ideal-int -pkg syscall (netbsd-arm64), const TIOCM_SR = 16 -pkg syscall (netbsd-arm64), const TIOCM_SR ideal-int -pkg syscall (netbsd-arm64), const TIOCM_ST = 8 -pkg syscall (netbsd-arm64), const TIOCM_ST ideal-int -pkg syscall (netbsd-arm64), const TIOCNOTTY = 536900721 -pkg syscall (netbsd-arm64), const TIOCNOTTY ideal-int -pkg syscall (netbsd-arm64), const TIOCNXCL = 536900622 -pkg syscall (netbsd-arm64), const TIOCNXCL ideal-int -pkg syscall (netbsd-arm64), const TIOCOUTQ = 1074033779 -pkg syscall (netbsd-arm64), const TIOCOUTQ ideal-int -pkg syscall (netbsd-arm64), const TIOCPKT = 2147775600 -pkg syscall (netbsd-arm64), const TIOCPKT ideal-int -pkg syscall (netbsd-arm64), const TIOCPKT_DATA = 0 -pkg syscall (netbsd-arm64), const TIOCPKT_DATA ideal-int -pkg syscall (netbsd-arm64), const TIOCPKT_DOSTOP = 32 -pkg syscall (netbsd-arm64), const TIOCPKT_DOSTOP ideal-int -pkg syscall (netbsd-arm64), const TIOCPKT_FLUSHREAD = 1 -pkg syscall (netbsd-arm64), const TIOCPKT_FLUSHREAD ideal-int -pkg syscall (netbsd-arm64), const TIOCPKT_FLUSHWRITE = 2 -pkg syscall (netbsd-arm64), const TIOCPKT_FLUSHWRITE ideal-int -pkg syscall (netbsd-arm64), const TIOCPKT_IOCTL = 64 -pkg syscall (netbsd-arm64), const TIOCPKT_IOCTL ideal-int -pkg syscall (netbsd-arm64), const TIOCPKT_NOSTOP = 16 -pkg syscall (netbsd-arm64), const TIOCPKT_NOSTOP ideal-int -pkg syscall (netbsd-arm64), const TIOCPKT_START = 8 -pkg syscall (netbsd-arm64), const TIOCPKT_START ideal-int -pkg syscall (netbsd-arm64), const TIOCPKT_STOP = 4 -pkg syscall (netbsd-arm64), const TIOCPKT_STOP ideal-int -pkg syscall (netbsd-arm64), const TIOCPTMGET = 1076393030 -pkg syscall (netbsd-arm64), const TIOCPTMGET ideal-int -pkg syscall (netbsd-arm64), const TIOCPTSNAME = 1076393032 -pkg syscall (netbsd-arm64), const TIOCPTSNAME ideal-int -pkg syscall (netbsd-arm64), const TIOCRCVFRAME = 2148037701 -pkg syscall (netbsd-arm64), const TIOCRCVFRAME ideal-int -pkg syscall (netbsd-arm64), const TIOCREMOTE = 2147775593 -pkg syscall (netbsd-arm64), const TIOCREMOTE ideal-int -pkg syscall (netbsd-arm64), const TIOCSBRK = 536900731 -pkg syscall (netbsd-arm64), const TIOCSBRK ideal-int -pkg syscall (netbsd-arm64), const TIOCSCTTY = 536900705 -pkg syscall (netbsd-arm64), const TIOCSCTTY ideal-int -pkg syscall (netbsd-arm64), const TIOCSDTR = 536900729 -pkg syscall (netbsd-arm64), const TIOCSDTR ideal-int -pkg syscall (netbsd-arm64), const TIOCSETA = 2150396948 -pkg syscall (netbsd-arm64), const TIOCSETA ideal-int -pkg syscall (netbsd-arm64), const TIOCSETAF = 2150396950 -pkg syscall (netbsd-arm64), const TIOCSETAF ideal-int -pkg syscall (netbsd-arm64), const TIOCSETAW = 2150396949 -pkg syscall (netbsd-arm64), const TIOCSETAW ideal-int -pkg syscall (netbsd-arm64), const TIOCSETD = 2147775515 -pkg syscall (netbsd-arm64), const TIOCSETD ideal-int -pkg syscall (netbsd-arm64), const TIOCSFLAGS = 2147775580 -pkg syscall (netbsd-arm64), const TIOCSFLAGS ideal-int -pkg syscall (netbsd-arm64), const TIOCSIG = 536900703 -pkg syscall (netbsd-arm64), const TIOCSIG ideal-int -pkg syscall (netbsd-arm64), const TIOCSLINED = 2149610563 -pkg syscall (netbsd-arm64), const TIOCSLINED ideal-int -pkg syscall (netbsd-arm64), const TIOCSPGRP = 2147775606 -pkg syscall (netbsd-arm64), const TIOCSPGRP ideal-int -pkg syscall (netbsd-arm64), const TIOCSQSIZE = 2147775616 -pkg syscall (netbsd-arm64), const TIOCSQSIZE ideal-int -pkg syscall (netbsd-arm64), const TIOCSSIZE = 2148037735 -pkg syscall (netbsd-arm64), const TIOCSSIZE ideal-int -pkg syscall (netbsd-arm64), const TIOCSTART = 536900718 -pkg syscall (netbsd-arm64), const TIOCSTART ideal-int -pkg syscall (netbsd-arm64), const TIOCSTAT = 2147775589 -pkg syscall (netbsd-arm64), const TIOCSTAT ideal-int -pkg syscall (netbsd-arm64), const TIOCSTI = 2147578994 -pkg syscall (netbsd-arm64), const TIOCSTI ideal-int -pkg syscall (netbsd-arm64), const TIOCSTOP = 536900719 -pkg syscall (netbsd-arm64), const TIOCSTOP ideal-int -pkg syscall (netbsd-arm64), const TIOCSWINSZ = 2148037735 -pkg syscall (netbsd-arm64), const TIOCSWINSZ ideal-int -pkg syscall (netbsd-arm64), const TIOCUCNTL = 2147775590 -pkg syscall (netbsd-arm64), const TIOCUCNTL ideal-int -pkg syscall (netbsd-arm64), const TIOCXMTFRAME = 2148037700 -pkg syscall (netbsd-arm64), const TIOCXMTFRAME ideal-int -pkg syscall (netbsd-arm64), const TOSTOP = 4194304 -pkg syscall (netbsd-arm64), const TOSTOP ideal-int -pkg syscall (netbsd-arm64), const VDISCARD = 15 -pkg syscall (netbsd-arm64), const VDISCARD ideal-int -pkg syscall (netbsd-arm64), const VDSUSP = 11 -pkg syscall (netbsd-arm64), const VDSUSP ideal-int -pkg syscall (netbsd-arm64), const VEOF = 0 -pkg syscall (netbsd-arm64), const VEOF ideal-int -pkg syscall (netbsd-arm64), const VEOL = 1 -pkg syscall (netbsd-arm64), const VEOL ideal-int -pkg syscall (netbsd-arm64), const VEOL2 = 2 -pkg syscall (netbsd-arm64), const VEOL2 ideal-int -pkg syscall (netbsd-arm64), const VERASE = 3 -pkg syscall (netbsd-arm64), const VERASE ideal-int -pkg syscall (netbsd-arm64), const VINTR = 8 -pkg syscall (netbsd-arm64), const VINTR ideal-int -pkg syscall (netbsd-arm64), const VKILL = 5 -pkg syscall (netbsd-arm64), const VKILL ideal-int -pkg syscall (netbsd-arm64), const VLNEXT = 14 -pkg syscall (netbsd-arm64), const VLNEXT ideal-int -pkg syscall (netbsd-arm64), const VMIN = 16 -pkg syscall (netbsd-arm64), const VMIN ideal-int -pkg syscall (netbsd-arm64), const VQUIT = 9 -pkg syscall (netbsd-arm64), const VQUIT ideal-int -pkg syscall (netbsd-arm64), const VREPRINT = 6 -pkg syscall (netbsd-arm64), const VREPRINT ideal-int -pkg syscall (netbsd-arm64), const VSTART = 12 -pkg syscall (netbsd-arm64), const VSTART ideal-int -pkg syscall (netbsd-arm64), const VSTATUS = 18 -pkg syscall (netbsd-arm64), const VSTATUS ideal-int -pkg syscall (netbsd-arm64), const VSTOP = 13 -pkg syscall (netbsd-arm64), const VSTOP ideal-int -pkg syscall (netbsd-arm64), const VSUSP = 10 -pkg syscall (netbsd-arm64), const VSUSP ideal-int -pkg syscall (netbsd-arm64), const VTIME = 17 -pkg syscall (netbsd-arm64), const VTIME ideal-int -pkg syscall (netbsd-arm64), const VWERASE = 4 -pkg syscall (netbsd-arm64), const VWERASE ideal-int -pkg syscall (netbsd-arm64), const WALL = 8 -pkg syscall (netbsd-arm64), const WALL ideal-int -pkg syscall (netbsd-arm64), const WALLSIG = 8 -pkg syscall (netbsd-arm64), const WALLSIG ideal-int -pkg syscall (netbsd-arm64), const WALTSIG = 4 -pkg syscall (netbsd-arm64), const WALTSIG ideal-int -pkg syscall (netbsd-arm64), const WCLONE = 4 -pkg syscall (netbsd-arm64), const WCLONE ideal-int -pkg syscall (netbsd-arm64), const WCOREFLAG = 128 -pkg syscall (netbsd-arm64), const WCOREFLAG ideal-int -pkg syscall (netbsd-arm64), const WNOHANG = 1 -pkg syscall (netbsd-arm64), const WNOHANG ideal-int -pkg syscall (netbsd-arm64), const WNOWAIT = 65536 -pkg syscall (netbsd-arm64), const WNOWAIT ideal-int -pkg syscall (netbsd-arm64), const WNOZOMBIE = 131072 -pkg syscall (netbsd-arm64), const WNOZOMBIE ideal-int -pkg syscall (netbsd-arm64), const WOPTSCHECKED = 262144 -pkg syscall (netbsd-arm64), const WOPTSCHECKED ideal-int -pkg syscall (netbsd-arm64), const WSTOPPED = 127 -pkg syscall (netbsd-arm64), const WSTOPPED ideal-int -pkg syscall (netbsd-arm64), const WUNTRACED = 2 -pkg syscall (netbsd-arm64), const WUNTRACED ideal-int -pkg syscall (netbsd-arm64), func Accept(int) (int, Sockaddr, error) -pkg syscall (netbsd-arm64), func Accept4(int, int) (int, Sockaddr, error) -pkg syscall (netbsd-arm64), func Access(string, uint32) error -pkg syscall (netbsd-arm64), func Adjtime(*Timeval, *Timeval) error -pkg syscall (netbsd-arm64), func Bind(int, Sockaddr) error -pkg syscall (netbsd-arm64), func BpfBuflen(int) (int, error) -pkg syscall (netbsd-arm64), func BpfDatalink(int) (int, error) -pkg syscall (netbsd-arm64), func BpfHeadercmpl(int) (int, error) -pkg syscall (netbsd-arm64), func BpfInterface(int, string) (string, error) -pkg syscall (netbsd-arm64), func BpfJump(int, int, int, int) *BpfInsn -pkg syscall (netbsd-arm64), func BpfStats(int) (*BpfStat, error) -pkg syscall (netbsd-arm64), func BpfStmt(int, int) *BpfInsn -pkg syscall (netbsd-arm64), func BpfTimeout(int) (*Timeval, error) -pkg syscall (netbsd-arm64), func CheckBpfVersion(int) error -pkg syscall (netbsd-arm64), func Chflags(string, int) error -pkg syscall (netbsd-arm64), func Chroot(string) error -pkg syscall (netbsd-arm64), func Close(int) error -pkg syscall (netbsd-arm64), func CloseOnExec(int) -pkg syscall (netbsd-arm64), func CmsgLen(int) int -pkg syscall (netbsd-arm64), func CmsgSpace(int) int -pkg syscall (netbsd-arm64), func Connect(int, Sockaddr) error -pkg syscall (netbsd-arm64), func Dup(int) (int, error) -pkg syscall (netbsd-arm64), func Dup2(int, int) error -pkg syscall (netbsd-arm64), func Fchdir(int) error -pkg syscall (netbsd-arm64), func Fchflags(int, int) error -pkg syscall (netbsd-arm64), func Fchmod(int, uint32) error -pkg syscall (netbsd-arm64), func Fchown(int, int, int) error -pkg syscall (netbsd-arm64), func FcntlFlock(uintptr, int, *Flock_t) error -pkg syscall (netbsd-arm64), func Flock(int, int) error -pkg syscall (netbsd-arm64), func FlushBpf(int) error -pkg syscall (netbsd-arm64), func ForkExec(string, []string, *ProcAttr) (int, error) -pkg syscall (netbsd-arm64), func Fpathconf(int, int) (int, error) -pkg syscall (netbsd-arm64), func Fstat(int, *Stat_t) error -pkg syscall (netbsd-arm64), func Fsync(int) error -pkg syscall (netbsd-arm64), func Ftruncate(int, int64) error -pkg syscall (netbsd-arm64), func Futimes(int, []Timeval) error -pkg syscall (netbsd-arm64), func Getdirentries(int, []uint8, *uintptr) (int, error) -pkg syscall (netbsd-arm64), func Getpeername(int) (Sockaddr, error) -pkg syscall (netbsd-arm64), func Getpgid(int) (int, error) -pkg syscall (netbsd-arm64), func Getpgrp() int -pkg syscall (netbsd-arm64), func Getpriority(int, int) (int, error) -pkg syscall (netbsd-arm64), func Getrlimit(int, *Rlimit) error -pkg syscall (netbsd-arm64), func Getrusage(int, *Rusage) error -pkg syscall (netbsd-arm64), func Getsid(int) (int, error) -pkg syscall (netbsd-arm64), func Getsockname(int) (Sockaddr, error) -pkg syscall (netbsd-arm64), func GetsockoptByte(int, int, int) (uint8, error) -pkg syscall (netbsd-arm64), func GetsockoptICMPv6Filter(int, int, int) (*ICMPv6Filter, error) -pkg syscall (netbsd-arm64), func GetsockoptIPMreq(int, int, int) (*IPMreq, error) -pkg syscall (netbsd-arm64), func GetsockoptIPv6MTUInfo(int, int, int) (*IPv6MTUInfo, error) -pkg syscall (netbsd-arm64), func GetsockoptIPv6Mreq(int, int, int) (*IPv6Mreq, error) -pkg syscall (netbsd-arm64), func GetsockoptInet4Addr(int, int, int) ([4]uint8, error) -pkg syscall (netbsd-arm64), func GetsockoptInt(int, int, int) (int, error) -pkg syscall (netbsd-arm64), func Issetugid() bool -pkg syscall (netbsd-arm64), func Kevent(int, []Kevent_t, []Kevent_t, *Timespec) (int, error) -pkg syscall (netbsd-arm64), func Kill(int, Signal) error -pkg syscall (netbsd-arm64), func Kqueue() (int, error) -pkg syscall (netbsd-arm64), func Listen(int, int) error -pkg syscall (netbsd-arm64), func Lstat(string, *Stat_t) error -pkg syscall (netbsd-arm64), func Mkfifo(string, uint32) error -pkg syscall (netbsd-arm64), func Mknod(string, uint32, int) error -pkg syscall (netbsd-arm64), func Mmap(int, int64, int, int, int) ([]uint8, error) -pkg syscall (netbsd-arm64), func Munmap([]uint8) error -pkg syscall (netbsd-arm64), func Nanosleep(*Timespec, *Timespec) error -pkg syscall (netbsd-arm64), func Open(string, int, uint32) (int, error) -pkg syscall (netbsd-arm64), func ParseDirent([]uint8, int, []string) (int, int, []string) -pkg syscall (netbsd-arm64), func ParseRoutingMessage([]uint8) ([]RoutingMessage, error) -pkg syscall (netbsd-arm64), func ParseRoutingSockaddr(RoutingMessage) ([]Sockaddr, error) -pkg syscall (netbsd-arm64), func ParseSocketControlMessage([]uint8) ([]SocketControlMessage, error) -pkg syscall (netbsd-arm64), func ParseUnixRights(*SocketControlMessage) ([]int, error) -pkg syscall (netbsd-arm64), func Pathconf(string, int) (int, error) -pkg syscall (netbsd-arm64), func Pipe([]int) error -pkg syscall (netbsd-arm64), func Pipe2([]int, int) error -pkg syscall (netbsd-arm64), func Pread(int, []uint8, int64) (int, error) -pkg syscall (netbsd-arm64), func Pwrite(int, []uint8, int64) (int, error) -pkg syscall (netbsd-arm64), func RawSyscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) -pkg syscall (netbsd-arm64), func RawSyscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) -pkg syscall (netbsd-arm64), func Read(int, []uint8) (int, error) -pkg syscall (netbsd-arm64), func ReadDirent(int, []uint8) (int, error) -pkg syscall (netbsd-arm64), func Recvfrom(int, []uint8, int) (int, Sockaddr, error) -pkg syscall (netbsd-arm64), func Recvmsg(int, []uint8, []uint8, int) (int, int, int, Sockaddr, error) -pkg syscall (netbsd-arm64), func Revoke(string) error -pkg syscall (netbsd-arm64), func RouteRIB(int, int) ([]uint8, error) -pkg syscall (netbsd-arm64), func Seek(int, int64, int) (int64, error) -pkg syscall (netbsd-arm64), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) error -pkg syscall (netbsd-arm64), func Sendfile(int, int, *int64, int) (int, error) -pkg syscall (netbsd-arm64), func Sendmsg(int, []uint8, []uint8, Sockaddr, int) error -pkg syscall (netbsd-arm64), func SendmsgN(int, []uint8, []uint8, Sockaddr, int) (int, error) -pkg syscall (netbsd-arm64), func Sendto(int, []uint8, int, Sockaddr) error -pkg syscall (netbsd-arm64), func SetBpf(int, []BpfInsn) error -pkg syscall (netbsd-arm64), func SetBpfBuflen(int, int) (int, error) -pkg syscall (netbsd-arm64), func SetBpfDatalink(int, int) (int, error) -pkg syscall (netbsd-arm64), func SetBpfHeadercmpl(int, int) error -pkg syscall (netbsd-arm64), func SetBpfImmediate(int, int) error -pkg syscall (netbsd-arm64), func SetBpfInterface(int, string) error -pkg syscall (netbsd-arm64), func SetBpfPromisc(int, int) error -pkg syscall (netbsd-arm64), func SetBpfTimeout(int, *Timeval) error -pkg syscall (netbsd-arm64), func SetKevent(*Kevent_t, int, int, int) -pkg syscall (netbsd-arm64), func SetNonblock(int, bool) error -pkg syscall (netbsd-arm64), func Setegid(int) error -pkg syscall (netbsd-arm64), func Seteuid(int) error -pkg syscall (netbsd-arm64), func Setgid(int) error -pkg syscall (netbsd-arm64), func Setgroups([]int) error -pkg syscall (netbsd-arm64), func Setpgid(int, int) error -pkg syscall (netbsd-arm64), func Setpriority(int, int, int) error -pkg syscall (netbsd-arm64), func Setregid(int, int) error -pkg syscall (netbsd-arm64), func Setreuid(int, int) error -pkg syscall (netbsd-arm64), func Setrlimit(int, *Rlimit) error -pkg syscall (netbsd-arm64), func Setsid() (int, error) -pkg syscall (netbsd-arm64), func SetsockoptByte(int, int, int, uint8) error -pkg syscall (netbsd-arm64), func SetsockoptICMPv6Filter(int, int, int, *ICMPv6Filter) error -pkg syscall (netbsd-arm64), func SetsockoptIPMreq(int, int, int, *IPMreq) error -pkg syscall (netbsd-arm64), func SetsockoptIPv6Mreq(int, int, int, *IPv6Mreq) error -pkg syscall (netbsd-arm64), func SetsockoptInet4Addr(int, int, int, [4]uint8) error -pkg syscall (netbsd-arm64), func SetsockoptInt(int, int, int, int) error -pkg syscall (netbsd-arm64), func SetsockoptLinger(int, int, int, *Linger) error -pkg syscall (netbsd-arm64), func SetsockoptString(int, int, int, string) error -pkg syscall (netbsd-arm64), func SetsockoptTimeval(int, int, int, *Timeval) error -pkg syscall (netbsd-arm64), func Settimeofday(*Timeval) error -pkg syscall (netbsd-arm64), func Setuid(int) error -pkg syscall (netbsd-arm64), func Shutdown(int, int) error -pkg syscall (netbsd-arm64), func SlicePtrFromStrings([]string) ([]*uint8, error) -pkg syscall (netbsd-arm64), func Socket(int, int, int) (int, error) -pkg syscall (netbsd-arm64), func Socketpair(int, int, int) ([2]int, error) -pkg syscall (netbsd-arm64), func Stat(string, *Stat_t) error -pkg syscall (netbsd-arm64), func StringSlicePtr([]string) []*uint8 -pkg syscall (netbsd-arm64), func Sync() error -pkg syscall (netbsd-arm64), func Syscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) -pkg syscall (netbsd-arm64), func Syscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) -pkg syscall (netbsd-arm64), func Syscall9(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) -pkg syscall (netbsd-arm64), func Sysctl(string) (string, error) -pkg syscall (netbsd-arm64), func SysctlUint32(string) (uint32, error) -pkg syscall (netbsd-arm64), func TimevalToNsec(Timeval) int64 -pkg syscall (netbsd-arm64), func Truncate(string, int64) error -pkg syscall (netbsd-arm64), func Umask(int) int -pkg syscall (netbsd-arm64), func UnixRights(...int) []uint8 -pkg syscall (netbsd-arm64), func Unmount(string, int) error -pkg syscall (netbsd-arm64), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) -pkg syscall (netbsd-arm64), func Write(int, []uint8) (int, error) -pkg syscall (netbsd-arm64), method (*Cmsghdr) SetLen(int) -pkg syscall (netbsd-arm64), method (*Iovec) SetLen(int) -pkg syscall (netbsd-arm64), method (*Msghdr) SetControllen(int) -pkg syscall (netbsd-arm64), type BpfHdr struct -pkg syscall (netbsd-arm64), type BpfHdr struct, Caplen uint32 -pkg syscall (netbsd-arm64), type BpfHdr struct, Datalen uint32 -pkg syscall (netbsd-arm64), type BpfHdr struct, Hdrlen uint16 -pkg syscall (netbsd-arm64), type BpfHdr struct, Pad_cgo_0 [6]uint8 -pkg syscall (netbsd-arm64), type BpfHdr struct, Tstamp BpfTimeval -pkg syscall (netbsd-arm64), type BpfInsn struct -pkg syscall (netbsd-arm64), type BpfInsn struct, Code uint16 -pkg syscall (netbsd-arm64), type BpfInsn struct, Jf uint8 -pkg syscall (netbsd-arm64), type BpfInsn struct, Jt uint8 -pkg syscall (netbsd-arm64), type BpfInsn struct, K uint32 -pkg syscall (netbsd-arm64), type BpfProgram struct -pkg syscall (netbsd-arm64), type BpfProgram struct, Insns *BpfInsn -pkg syscall (netbsd-arm64), type BpfProgram struct, Len uint32 -pkg syscall (netbsd-arm64), type BpfProgram struct, Pad_cgo_0 [4]uint8 -pkg syscall (netbsd-arm64), type BpfStat struct -pkg syscall (netbsd-arm64), type BpfStat struct, Capt uint64 -pkg syscall (netbsd-arm64), type BpfStat struct, Drop uint64 -pkg syscall (netbsd-arm64), type BpfStat struct, Padding [13]uint64 -pkg syscall (netbsd-arm64), type BpfStat struct, Recv uint64 -pkg syscall (netbsd-arm64), type BpfTimeval struct -pkg syscall (netbsd-arm64), type BpfTimeval struct, Sec int64 -pkg syscall (netbsd-arm64), type BpfTimeval struct, Usec int64 -pkg syscall (netbsd-arm64), type BpfVersion struct -pkg syscall (netbsd-arm64), type BpfVersion struct, Major uint16 -pkg syscall (netbsd-arm64), type BpfVersion struct, Minor uint16 -pkg syscall (netbsd-arm64), type Cmsghdr struct -pkg syscall (netbsd-arm64), type Cmsghdr struct, Len uint32 -pkg syscall (netbsd-arm64), type Cmsghdr struct, Level int32 -pkg syscall (netbsd-arm64), type Cmsghdr struct, Type int32 -pkg syscall (netbsd-arm64), type Credential struct -pkg syscall (netbsd-arm64), type Credential struct, Gid uint32 -pkg syscall (netbsd-arm64), type Credential struct, Groups []uint32 -pkg syscall (netbsd-arm64), type Credential struct, NoSetGroups bool -pkg syscall (netbsd-arm64), type Credential struct, Uid uint32 -pkg syscall (netbsd-arm64), type Dirent struct -pkg syscall (netbsd-arm64), type Dirent struct, Fileno uint64 -pkg syscall (netbsd-arm64), type Dirent struct, Name [512]int8 -pkg syscall (netbsd-arm64), type Dirent struct, Namlen uint16 -pkg syscall (netbsd-arm64), type Dirent struct, Pad_cgo_0 [3]uint8 -pkg syscall (netbsd-arm64), type Dirent struct, Reclen uint16 -pkg syscall (netbsd-arm64), type Dirent struct, Type uint8 -pkg syscall (netbsd-arm64), type FdSet struct -pkg syscall (netbsd-arm64), type FdSet struct, Bits [8]uint32 -pkg syscall (netbsd-arm64), type Flock_t struct -pkg syscall (netbsd-arm64), type Flock_t struct, Len int64 -pkg syscall (netbsd-arm64), type Flock_t struct, Pid int32 -pkg syscall (netbsd-arm64), type Flock_t struct, Start int64 -pkg syscall (netbsd-arm64), type Flock_t struct, Type int16 -pkg syscall (netbsd-arm64), type Flock_t struct, Whence int16 -pkg syscall (netbsd-arm64), type Fsid struct -pkg syscall (netbsd-arm64), type Fsid struct, X__fsid_val [2]int32 -pkg syscall (netbsd-arm64), type ICMPv6Filter struct -pkg syscall (netbsd-arm64), type ICMPv6Filter struct, Filt [8]uint32 -pkg syscall (netbsd-arm64), type IPv6MTUInfo struct -pkg syscall (netbsd-arm64), type IPv6MTUInfo struct, Addr RawSockaddrInet6 -pkg syscall (netbsd-arm64), type IPv6MTUInfo struct, Mtu uint32 -pkg syscall (netbsd-arm64), type IfAnnounceMsghdr struct -pkg syscall (netbsd-arm64), type IfAnnounceMsghdr struct, Index uint16 -pkg syscall (netbsd-arm64), type IfAnnounceMsghdr struct, Msglen uint16 -pkg syscall (netbsd-arm64), type IfAnnounceMsghdr struct, Name [16]int8 -pkg syscall (netbsd-arm64), type IfAnnounceMsghdr struct, Type uint8 -pkg syscall (netbsd-arm64), type IfAnnounceMsghdr struct, Version uint8 -pkg syscall (netbsd-arm64), type IfAnnounceMsghdr struct, What uint16 -pkg syscall (netbsd-arm64), type IfData struct -pkg syscall (netbsd-arm64), type IfData struct, Addrlen uint8 -pkg syscall (netbsd-arm64), type IfData struct, Baudrate uint64 -pkg syscall (netbsd-arm64), type IfData struct, Collisions uint64 -pkg syscall (netbsd-arm64), type IfData struct, Hdrlen uint8 -pkg syscall (netbsd-arm64), type IfData struct, Ibytes uint64 -pkg syscall (netbsd-arm64), type IfData struct, Ierrors uint64 -pkg syscall (netbsd-arm64), type IfData struct, Imcasts uint64 -pkg syscall (netbsd-arm64), type IfData struct, Ipackets uint64 -pkg syscall (netbsd-arm64), type IfData struct, Iqdrops uint64 -pkg syscall (netbsd-arm64), type IfData struct, Lastchange Timespec -pkg syscall (netbsd-arm64), type IfData struct, Link_state int32 -pkg syscall (netbsd-arm64), type IfData struct, Metric uint64 -pkg syscall (netbsd-arm64), type IfData struct, Mtu uint64 -pkg syscall (netbsd-arm64), type IfData struct, Noproto uint64 -pkg syscall (netbsd-arm64), type IfData struct, Obytes uint64 -pkg syscall (netbsd-arm64), type IfData struct, Oerrors uint64 -pkg syscall (netbsd-arm64), type IfData struct, Omcasts uint64 -pkg syscall (netbsd-arm64), type IfData struct, Opackets uint64 -pkg syscall (netbsd-arm64), type IfData struct, Pad_cgo_0 [1]uint8 -pkg syscall (netbsd-arm64), type IfData struct, Type uint8 -pkg syscall (netbsd-arm64), type IfMsghdr struct -pkg syscall (netbsd-arm64), type IfMsghdr struct, Addrs int32 -pkg syscall (netbsd-arm64), type IfMsghdr struct, Data IfData -pkg syscall (netbsd-arm64), type IfMsghdr struct, Flags int32 -pkg syscall (netbsd-arm64), type IfMsghdr struct, Index uint16 -pkg syscall (netbsd-arm64), type IfMsghdr struct, Msglen uint16 -pkg syscall (netbsd-arm64), type IfMsghdr struct, Pad_cgo_0 [2]uint8 -pkg syscall (netbsd-arm64), type IfMsghdr struct, Type uint8 -pkg syscall (netbsd-arm64), type IfMsghdr struct, Version uint8 -pkg syscall (netbsd-arm64), type IfaMsghdr struct -pkg syscall (netbsd-arm64), type IfaMsghdr struct, Addrs int32 -pkg syscall (netbsd-arm64), type IfaMsghdr struct, Flags int32 -pkg syscall (netbsd-arm64), type IfaMsghdr struct, Index uint16 -pkg syscall (netbsd-arm64), type IfaMsghdr struct, Metric int32 -pkg syscall (netbsd-arm64), type IfaMsghdr struct, Msglen uint16 -pkg syscall (netbsd-arm64), type IfaMsghdr struct, Pad_cgo_0 [6]uint8 -pkg syscall (netbsd-arm64), type IfaMsghdr struct, Type uint8 -pkg syscall (netbsd-arm64), type IfaMsghdr struct, Version uint8 -pkg syscall (netbsd-arm64), type Inet6Pktinfo struct -pkg syscall (netbsd-arm64), type Inet6Pktinfo struct, Addr [16]uint8 -pkg syscall (netbsd-arm64), type Inet6Pktinfo struct, Ifindex uint32 -pkg syscall (netbsd-arm64), type InterfaceAddrMessage struct -pkg syscall (netbsd-arm64), type InterfaceAddrMessage struct, Data []uint8 -pkg syscall (netbsd-arm64), type InterfaceAddrMessage struct, Header IfaMsghdr -pkg syscall (netbsd-arm64), type InterfaceAnnounceMessage struct -pkg syscall (netbsd-arm64), type InterfaceAnnounceMessage struct, Header IfAnnounceMsghdr -pkg syscall (netbsd-arm64), type InterfaceMessage struct -pkg syscall (netbsd-arm64), type InterfaceMessage struct, Data []uint8 -pkg syscall (netbsd-arm64), type InterfaceMessage struct, Header IfMsghdr -pkg syscall (netbsd-arm64), type Iovec struct -pkg syscall (netbsd-arm64), type Iovec struct, Base *uint8 -pkg syscall (netbsd-arm64), type Iovec struct, Len uint64 -pkg syscall (netbsd-arm64), type Kevent_t struct -pkg syscall (netbsd-arm64), type Kevent_t struct, Data int64 -pkg syscall (netbsd-arm64), type Kevent_t struct, Fflags uint32 -pkg syscall (netbsd-arm64), type Kevent_t struct, Filter uint32 -pkg syscall (netbsd-arm64), type Kevent_t struct, Flags uint32 -pkg syscall (netbsd-arm64), type Kevent_t struct, Ident uint64 -pkg syscall (netbsd-arm64), type Kevent_t struct, Pad_cgo_0 [4]uint8 -pkg syscall (netbsd-arm64), type Kevent_t struct, Udata int64 -pkg syscall (netbsd-arm64), type Mclpool [0]uint8 -pkg syscall (netbsd-arm64), type Msghdr struct -pkg syscall (netbsd-arm64), type Msghdr struct, Control *uint8 -pkg syscall (netbsd-arm64), type Msghdr struct, Controllen uint32 -pkg syscall (netbsd-arm64), type Msghdr struct, Flags int32 -pkg syscall (netbsd-arm64), type Msghdr struct, Iov *Iovec -pkg syscall (netbsd-arm64), type Msghdr struct, Iovlen int32 -pkg syscall (netbsd-arm64), type Msghdr struct, Name *uint8 -pkg syscall (netbsd-arm64), type Msghdr struct, Namelen uint32 -pkg syscall (netbsd-arm64), type Msghdr struct, Pad_cgo_0 [4]uint8 -pkg syscall (netbsd-arm64), type Msghdr struct, Pad_cgo_1 [4]uint8 -pkg syscall (netbsd-arm64), type RawSockaddr struct, Data [14]int8 -pkg syscall (netbsd-arm64), type RawSockaddr struct, Family uint8 -pkg syscall (netbsd-arm64), type RawSockaddr struct, Len uint8 -pkg syscall (netbsd-arm64), type RawSockaddrAny struct, Pad [92]int8 -pkg syscall (netbsd-arm64), type RawSockaddrDatalink struct -pkg syscall (netbsd-arm64), type RawSockaddrDatalink struct, Alen uint8 -pkg syscall (netbsd-arm64), type RawSockaddrDatalink struct, Data [12]int8 -pkg syscall (netbsd-arm64), type RawSockaddrDatalink struct, Family uint8 -pkg syscall (netbsd-arm64), type RawSockaddrDatalink struct, Index uint16 -pkg syscall (netbsd-arm64), type RawSockaddrDatalink struct, Len uint8 -pkg syscall (netbsd-arm64), type RawSockaddrDatalink struct, Nlen uint8 -pkg syscall (netbsd-arm64), type RawSockaddrDatalink struct, Slen uint8 -pkg syscall (netbsd-arm64), type RawSockaddrDatalink struct, Type uint8 -pkg syscall (netbsd-arm64), type RawSockaddrInet4 struct, Family uint8 -pkg syscall (netbsd-arm64), type RawSockaddrInet4 struct, Len uint8 -pkg syscall (netbsd-arm64), type RawSockaddrInet4 struct, Zero [8]int8 -pkg syscall (netbsd-arm64), type RawSockaddrInet6 struct, Family uint8 -pkg syscall (netbsd-arm64), type RawSockaddrInet6 struct, Len uint8 -pkg syscall (netbsd-arm64), type RawSockaddrUnix struct, Family uint8 -pkg syscall (netbsd-arm64), type RawSockaddrUnix struct, Len uint8 -pkg syscall (netbsd-arm64), type RawSockaddrUnix struct, Path [104]int8 -pkg syscall (netbsd-arm64), type Rlimit struct -pkg syscall (netbsd-arm64), type Rlimit struct, Cur uint64 -pkg syscall (netbsd-arm64), type Rlimit struct, Max uint64 -pkg syscall (netbsd-arm64), type RouteMessage struct -pkg syscall (netbsd-arm64), type RouteMessage struct, Data []uint8 -pkg syscall (netbsd-arm64), type RouteMessage struct, Header RtMsghdr -pkg syscall (netbsd-arm64), type RoutingMessage interface, unexported methods -pkg syscall (netbsd-arm64), type RtMetrics struct -pkg syscall (netbsd-arm64), type RtMetrics struct, Expire int64 -pkg syscall (netbsd-arm64), type RtMetrics struct, Hopcount uint64 -pkg syscall (netbsd-arm64), type RtMetrics struct, Locks uint64 -pkg syscall (netbsd-arm64), type RtMetrics struct, Mtu uint64 -pkg syscall (netbsd-arm64), type RtMetrics struct, Pksent int64 -pkg syscall (netbsd-arm64), type RtMetrics struct, Recvpipe uint64 -pkg syscall (netbsd-arm64), type RtMetrics struct, Rtt uint64 -pkg syscall (netbsd-arm64), type RtMetrics struct, Rttvar uint64 -pkg syscall (netbsd-arm64), type RtMetrics struct, Sendpipe uint64 -pkg syscall (netbsd-arm64), type RtMetrics struct, Ssthresh uint64 -pkg syscall (netbsd-arm64), type RtMsghdr struct -pkg syscall (netbsd-arm64), type RtMsghdr struct, Addrs int32 -pkg syscall (netbsd-arm64), type RtMsghdr struct, Errno int32 -pkg syscall (netbsd-arm64), type RtMsghdr struct, Flags int32 -pkg syscall (netbsd-arm64), type RtMsghdr struct, Index uint16 -pkg syscall (netbsd-arm64), type RtMsghdr struct, Inits int32 -pkg syscall (netbsd-arm64), type RtMsghdr struct, Msglen uint16 -pkg syscall (netbsd-arm64), type RtMsghdr struct, Pad_cgo_0 [2]uint8 -pkg syscall (netbsd-arm64), type RtMsghdr struct, Pad_cgo_1 [4]uint8 -pkg syscall (netbsd-arm64), type RtMsghdr struct, Pid int32 -pkg syscall (netbsd-arm64), type RtMsghdr struct, Rmx RtMetrics -pkg syscall (netbsd-arm64), type RtMsghdr struct, Seq int32 -pkg syscall (netbsd-arm64), type RtMsghdr struct, Type uint8 -pkg syscall (netbsd-arm64), type RtMsghdr struct, Use int32 -pkg syscall (netbsd-arm64), type RtMsghdr struct, Version uint8 -pkg syscall (netbsd-arm64), type Rusage struct, Idrss int64 -pkg syscall (netbsd-arm64), type Rusage struct, Inblock int64 -pkg syscall (netbsd-arm64), type Rusage struct, Isrss int64 -pkg syscall (netbsd-arm64), type Rusage struct, Ixrss int64 -pkg syscall (netbsd-arm64), type Rusage struct, Majflt int64 -pkg syscall (netbsd-arm64), type Rusage struct, Maxrss int64 -pkg syscall (netbsd-arm64), type Rusage struct, Minflt int64 -pkg syscall (netbsd-arm64), type Rusage struct, Msgrcv int64 -pkg syscall (netbsd-arm64), type Rusage struct, Msgsnd int64 -pkg syscall (netbsd-arm64), type Rusage struct, Nivcsw int64 -pkg syscall (netbsd-arm64), type Rusage struct, Nsignals int64 -pkg syscall (netbsd-arm64), type Rusage struct, Nswap int64 -pkg syscall (netbsd-arm64), type Rusage struct, Nvcsw int64 -pkg syscall (netbsd-arm64), type Rusage struct, Oublock int64 -pkg syscall (netbsd-arm64), type Rusage struct, Stime Timeval -pkg syscall (netbsd-arm64), type Rusage struct, Utime Timeval -pkg syscall (netbsd-arm64), type SockaddrDatalink struct -pkg syscall (netbsd-arm64), type SockaddrDatalink struct, Alen uint8 -pkg syscall (netbsd-arm64), type SockaddrDatalink struct, Data [12]int8 -pkg syscall (netbsd-arm64), type SockaddrDatalink struct, Family uint8 -pkg syscall (netbsd-arm64), type SockaddrDatalink struct, Index uint16 -pkg syscall (netbsd-arm64), type SockaddrDatalink struct, Len uint8 -pkg syscall (netbsd-arm64), type SockaddrDatalink struct, Nlen uint8 -pkg syscall (netbsd-arm64), type SockaddrDatalink struct, Slen uint8 -pkg syscall (netbsd-arm64), type SockaddrDatalink struct, Type uint8 -pkg syscall (netbsd-arm64), type SocketControlMessage struct -pkg syscall (netbsd-arm64), type SocketControlMessage struct, Data []uint8 -pkg syscall (netbsd-arm64), type SocketControlMessage struct, Header Cmsghdr -pkg syscall (netbsd-arm64), type Stat_t struct -pkg syscall (netbsd-arm64), type Stat_t struct, Atimespec Timespec -pkg syscall (netbsd-arm64), type Stat_t struct, Birthtimespec Timespec -pkg syscall (netbsd-arm64), type Stat_t struct, Blksize uint32 -pkg syscall (netbsd-arm64), type Stat_t struct, Blocks int64 -pkg syscall (netbsd-arm64), type Stat_t struct, Ctimespec Timespec -pkg syscall (netbsd-arm64), type Stat_t struct, Dev uint64 -pkg syscall (netbsd-arm64), type Stat_t struct, Flags uint32 -pkg syscall (netbsd-arm64), type Stat_t struct, Gen uint32 -pkg syscall (netbsd-arm64), type Stat_t struct, Gid uint32 -pkg syscall (netbsd-arm64), type Stat_t struct, Ino uint64 -pkg syscall (netbsd-arm64), type Stat_t struct, Mode uint32 -pkg syscall (netbsd-arm64), type Stat_t struct, Mtimespec Timespec -pkg syscall (netbsd-arm64), type Stat_t struct, Nlink uint32 -pkg syscall (netbsd-arm64), type Stat_t struct, Pad_cgo_0 [4]uint8 -pkg syscall (netbsd-arm64), type Stat_t struct, Pad_cgo_1 [4]uint8 -pkg syscall (netbsd-arm64), type Stat_t struct, Pad_cgo_2 [4]uint8 -pkg syscall (netbsd-arm64), type Stat_t struct, Rdev uint64 -pkg syscall (netbsd-arm64), type Stat_t struct, Size int64 -pkg syscall (netbsd-arm64), type Stat_t struct, Spare [2]uint32 -pkg syscall (netbsd-arm64), type Stat_t struct, Uid uint32 -pkg syscall (netbsd-arm64), type Statfs_t [0]uint8 -pkg syscall (netbsd-arm64), type SysProcAttr struct, Chroot string -pkg syscall (netbsd-arm64), type SysProcAttr struct, Credential *Credential -pkg syscall (netbsd-arm64), type SysProcAttr struct, Ctty int -pkg syscall (netbsd-arm64), type SysProcAttr struct, Foreground bool -pkg syscall (netbsd-arm64), type SysProcAttr struct, Noctty bool -pkg syscall (netbsd-arm64), type SysProcAttr struct, Pgid int -pkg syscall (netbsd-arm64), type SysProcAttr struct, Ptrace bool -pkg syscall (netbsd-arm64), type SysProcAttr struct, Setctty bool -pkg syscall (netbsd-arm64), type SysProcAttr struct, Setpgid bool -pkg syscall (netbsd-arm64), type SysProcAttr struct, Setsid bool -pkg syscall (netbsd-arm64), type Sysctlnode struct -pkg syscall (netbsd-arm64), type Sysctlnode struct, Flags uint32 -pkg syscall (netbsd-arm64), type Sysctlnode struct, Name [32]int8 -pkg syscall (netbsd-arm64), type Sysctlnode struct, Num int32 -pkg syscall (netbsd-arm64), type Sysctlnode struct, Un [16]uint8 -pkg syscall (netbsd-arm64), type Sysctlnode struct, Ver uint32 -pkg syscall (netbsd-arm64), type Sysctlnode struct, X__rsvd uint32 -pkg syscall (netbsd-arm64), type Sysctlnode struct, X_sysctl_desc [8]uint8 -pkg syscall (netbsd-arm64), type Sysctlnode struct, X_sysctl_func [8]uint8 -pkg syscall (netbsd-arm64), type Sysctlnode struct, X_sysctl_parent [8]uint8 -pkg syscall (netbsd-arm64), type Sysctlnode struct, X_sysctl_size [8]uint8 -pkg syscall (netbsd-arm64), type Termios struct -pkg syscall (netbsd-arm64), type Termios struct, Cc [20]uint8 -pkg syscall (netbsd-arm64), type Termios struct, Cflag uint32 -pkg syscall (netbsd-arm64), type Termios struct, Iflag uint32 -pkg syscall (netbsd-arm64), type Termios struct, Ispeed int32 -pkg syscall (netbsd-arm64), type Termios struct, Lflag uint32 -pkg syscall (netbsd-arm64), type Termios struct, Oflag uint32 -pkg syscall (netbsd-arm64), type Termios struct, Ospeed int32 -pkg syscall (netbsd-arm64), type Timespec struct, Nsec int64 -pkg syscall (netbsd-arm64), type Timespec struct, Sec int64 -pkg syscall (netbsd-arm64), type Timeval struct, Pad_cgo_0 [4]uint8 -pkg syscall (netbsd-arm64), type Timeval struct, Sec int64 -pkg syscall (netbsd-arm64), type Timeval struct, Usec int32 -pkg syscall (netbsd-arm64), type WaitStatus uint32 -pkg syscall (netbsd-arm64), var Stderr int -pkg syscall (netbsd-arm64), var Stdin int -pkg syscall (netbsd-arm64), var Stdout int -pkg syscall (netbsd-arm64-cgo), const AF_APPLETALK = 16 -pkg syscall (netbsd-arm64-cgo), const AF_APPLETALK ideal-int -pkg syscall (netbsd-arm64-cgo), const AF_ARP = 28 -pkg syscall (netbsd-arm64-cgo), const AF_ARP ideal-int -pkg syscall (netbsd-arm64-cgo), const AF_BLUETOOTH = 31 -pkg syscall (netbsd-arm64-cgo), const AF_BLUETOOTH ideal-int -pkg syscall (netbsd-arm64-cgo), const AF_CCITT = 10 -pkg syscall (netbsd-arm64-cgo), const AF_CCITT ideal-int -pkg syscall (netbsd-arm64-cgo), const AF_CHAOS = 5 -pkg syscall (netbsd-arm64-cgo), const AF_CHAOS ideal-int -pkg syscall (netbsd-arm64-cgo), const AF_CNT = 21 -pkg syscall (netbsd-arm64-cgo), const AF_CNT ideal-int -pkg syscall (netbsd-arm64-cgo), const AF_COIP = 20 -pkg syscall (netbsd-arm64-cgo), const AF_COIP ideal-int -pkg syscall (netbsd-arm64-cgo), const AF_DATAKIT = 9 -pkg syscall (netbsd-arm64-cgo), const AF_DATAKIT ideal-int -pkg syscall (netbsd-arm64-cgo), const AF_DECnet = 12 -pkg syscall (netbsd-arm64-cgo), const AF_DECnet ideal-int -pkg syscall (netbsd-arm64-cgo), const AF_DLI = 13 -pkg syscall (netbsd-arm64-cgo), const AF_DLI ideal-int -pkg syscall (netbsd-arm64-cgo), const AF_E164 = 26 -pkg syscall (netbsd-arm64-cgo), const AF_E164 ideal-int -pkg syscall (netbsd-arm64-cgo), const AF_ECMA = 8 -pkg syscall (netbsd-arm64-cgo), const AF_ECMA ideal-int -pkg syscall (netbsd-arm64-cgo), const AF_HYLINK = 15 -pkg syscall (netbsd-arm64-cgo), const AF_HYLINK ideal-int -pkg syscall (netbsd-arm64-cgo), const AF_IEEE80211 = 32 -pkg syscall (netbsd-arm64-cgo), const AF_IEEE80211 ideal-int -pkg syscall (netbsd-arm64-cgo), const AF_IMPLINK = 3 -pkg syscall (netbsd-arm64-cgo), const AF_IMPLINK ideal-int -pkg syscall (netbsd-arm64-cgo), const AF_INET6 = 24 -pkg syscall (netbsd-arm64-cgo), const AF_IPX = 23 -pkg syscall (netbsd-arm64-cgo), const AF_IPX ideal-int -pkg syscall (netbsd-arm64-cgo), const AF_ISDN = 26 -pkg syscall (netbsd-arm64-cgo), const AF_ISDN ideal-int -pkg syscall (netbsd-arm64-cgo), const AF_ISO = 7 -pkg syscall (netbsd-arm64-cgo), const AF_ISO ideal-int -pkg syscall (netbsd-arm64-cgo), const AF_LAT = 14 -pkg syscall (netbsd-arm64-cgo), const AF_LAT ideal-int -pkg syscall (netbsd-arm64-cgo), const AF_LINK = 18 -pkg syscall (netbsd-arm64-cgo), const AF_LINK ideal-int -pkg syscall (netbsd-arm64-cgo), const AF_LOCAL = 1 -pkg syscall (netbsd-arm64-cgo), const AF_LOCAL ideal-int -pkg syscall (netbsd-arm64-cgo), const AF_MAX = 35 -pkg syscall (netbsd-arm64-cgo), const AF_MAX ideal-int -pkg syscall (netbsd-arm64-cgo), const AF_MPLS = 33 -pkg syscall (netbsd-arm64-cgo), const AF_MPLS ideal-int -pkg syscall (netbsd-arm64-cgo), const AF_NATM = 27 -pkg syscall (netbsd-arm64-cgo), const AF_NATM ideal-int -pkg syscall (netbsd-arm64-cgo), const AF_NS = 6 -pkg syscall (netbsd-arm64-cgo), const AF_NS ideal-int -pkg syscall (netbsd-arm64-cgo), const AF_OROUTE = 17 -pkg syscall (netbsd-arm64-cgo), const AF_OROUTE ideal-int -pkg syscall (netbsd-arm64-cgo), const AF_OSI = 7 -pkg syscall (netbsd-arm64-cgo), const AF_OSI ideal-int -pkg syscall (netbsd-arm64-cgo), const AF_PUP = 4 -pkg syscall (netbsd-arm64-cgo), const AF_PUP ideal-int -pkg syscall (netbsd-arm64-cgo), const AF_ROUTE = 34 -pkg syscall (netbsd-arm64-cgo), const AF_ROUTE ideal-int -pkg syscall (netbsd-arm64-cgo), const AF_SNA = 11 -pkg syscall (netbsd-arm64-cgo), const AF_SNA ideal-int -pkg syscall (netbsd-arm64-cgo), const ARPHRD_ARCNET = 7 -pkg syscall (netbsd-arm64-cgo), const ARPHRD_ARCNET ideal-int -pkg syscall (netbsd-arm64-cgo), const ARPHRD_ETHER = 1 -pkg syscall (netbsd-arm64-cgo), const ARPHRD_ETHER ideal-int -pkg syscall (netbsd-arm64-cgo), const ARPHRD_FRELAY = 15 -pkg syscall (netbsd-arm64-cgo), const ARPHRD_FRELAY ideal-int -pkg syscall (netbsd-arm64-cgo), const ARPHRD_IEEE1394 = 24 -pkg syscall (netbsd-arm64-cgo), const ARPHRD_IEEE1394 ideal-int -pkg syscall (netbsd-arm64-cgo), const ARPHRD_IEEE802 = 6 -pkg syscall (netbsd-arm64-cgo), const ARPHRD_IEEE802 ideal-int -pkg syscall (netbsd-arm64-cgo), const ARPHRD_STRIP = 23 -pkg syscall (netbsd-arm64-cgo), const ARPHRD_STRIP ideal-int -pkg syscall (netbsd-arm64-cgo), const B0 = 0 -pkg syscall (netbsd-arm64-cgo), const B0 ideal-int -pkg syscall (netbsd-arm64-cgo), const B110 = 110 -pkg syscall (netbsd-arm64-cgo), const B110 ideal-int -pkg syscall (netbsd-arm64-cgo), const B115200 = 115200 -pkg syscall (netbsd-arm64-cgo), const B115200 ideal-int -pkg syscall (netbsd-arm64-cgo), const B1200 = 1200 -pkg syscall (netbsd-arm64-cgo), const B1200 ideal-int -pkg syscall (netbsd-arm64-cgo), const B134 = 134 -pkg syscall (netbsd-arm64-cgo), const B134 ideal-int -pkg syscall (netbsd-arm64-cgo), const B14400 = 14400 -pkg syscall (netbsd-arm64-cgo), const B14400 ideal-int -pkg syscall (netbsd-arm64-cgo), const B150 = 150 -pkg syscall (netbsd-arm64-cgo), const B150 ideal-int -pkg syscall (netbsd-arm64-cgo), const B1800 = 1800 -pkg syscall (netbsd-arm64-cgo), const B1800 ideal-int -pkg syscall (netbsd-arm64-cgo), const B19200 = 19200 -pkg syscall (netbsd-arm64-cgo), const B19200 ideal-int -pkg syscall (netbsd-arm64-cgo), const B200 = 200 -pkg syscall (netbsd-arm64-cgo), const B200 ideal-int -pkg syscall (netbsd-arm64-cgo), const B230400 = 230400 -pkg syscall (netbsd-arm64-cgo), const B230400 ideal-int -pkg syscall (netbsd-arm64-cgo), const B2400 = 2400 -pkg syscall (netbsd-arm64-cgo), const B2400 ideal-int -pkg syscall (netbsd-arm64-cgo), const B28800 = 28800 -pkg syscall (netbsd-arm64-cgo), const B28800 ideal-int -pkg syscall (netbsd-arm64-cgo), const B300 = 300 -pkg syscall (netbsd-arm64-cgo), const B300 ideal-int -pkg syscall (netbsd-arm64-cgo), const B38400 = 38400 -pkg syscall (netbsd-arm64-cgo), const B38400 ideal-int -pkg syscall (netbsd-arm64-cgo), const B460800 = 460800 -pkg syscall (netbsd-arm64-cgo), const B460800 ideal-int -pkg syscall (netbsd-arm64-cgo), const B4800 = 4800 -pkg syscall (netbsd-arm64-cgo), const B4800 ideal-int -pkg syscall (netbsd-arm64-cgo), const B50 = 50 -pkg syscall (netbsd-arm64-cgo), const B50 ideal-int -pkg syscall (netbsd-arm64-cgo), const B57600 = 57600 -pkg syscall (netbsd-arm64-cgo), const B57600 ideal-int -pkg syscall (netbsd-arm64-cgo), const B600 = 600 -pkg syscall (netbsd-arm64-cgo), const B600 ideal-int -pkg syscall (netbsd-arm64-cgo), const B7200 = 7200 -pkg syscall (netbsd-arm64-cgo), const B7200 ideal-int -pkg syscall (netbsd-arm64-cgo), const B75 = 75 -pkg syscall (netbsd-arm64-cgo), const B75 ideal-int -pkg syscall (netbsd-arm64-cgo), const B76800 = 76800 -pkg syscall (netbsd-arm64-cgo), const B76800 ideal-int -pkg syscall (netbsd-arm64-cgo), const B921600 = 921600 -pkg syscall (netbsd-arm64-cgo), const B921600 ideal-int -pkg syscall (netbsd-arm64-cgo), const B9600 = 9600 -pkg syscall (netbsd-arm64-cgo), const B9600 ideal-int -pkg syscall (netbsd-arm64-cgo), const BIOCFEEDBACK = 2147762813 -pkg syscall (netbsd-arm64-cgo), const BIOCFEEDBACK ideal-int -pkg syscall (netbsd-arm64-cgo), const BIOCFLUSH = 536887912 -pkg syscall (netbsd-arm64-cgo), const BIOCFLUSH ideal-int -pkg syscall (netbsd-arm64-cgo), const BIOCGBLEN = 1074020966 -pkg syscall (netbsd-arm64-cgo), const BIOCGBLEN ideal-int -pkg syscall (netbsd-arm64-cgo), const BIOCGDLT = 1074020970 -pkg syscall (netbsd-arm64-cgo), const BIOCGDLT ideal-int -pkg syscall (netbsd-arm64-cgo), const BIOCGDLTLIST = 3222291063 -pkg syscall (netbsd-arm64-cgo), const BIOCGDLTLIST ideal-int -pkg syscall (netbsd-arm64-cgo), const BIOCGETIF = 1083196011 -pkg syscall (netbsd-arm64-cgo), const BIOCGETIF ideal-int -pkg syscall (netbsd-arm64-cgo), const BIOCGFEEDBACK = 1074020988 -pkg syscall (netbsd-arm64-cgo), const BIOCGFEEDBACK ideal-int -pkg syscall (netbsd-arm64-cgo), const BIOCGHDRCMPLT = 1074020980 -pkg syscall (netbsd-arm64-cgo), const BIOCGHDRCMPLT ideal-int -pkg syscall (netbsd-arm64-cgo), const BIOCGRTIMEOUT = 1074807419 -pkg syscall (netbsd-arm64-cgo), const BIOCGRTIMEOUT ideal-int -pkg syscall (netbsd-arm64-cgo), const BIOCGSEESENT = 1074020984 -pkg syscall (netbsd-arm64-cgo), const BIOCGSEESENT ideal-int -pkg syscall (netbsd-arm64-cgo), const BIOCGSTATS = 1082147439 -pkg syscall (netbsd-arm64-cgo), const BIOCGSTATS ideal-int -pkg syscall (netbsd-arm64-cgo), const BIOCGSTATSOLD = 1074283119 -pkg syscall (netbsd-arm64-cgo), const BIOCGSTATSOLD ideal-int -pkg syscall (netbsd-arm64-cgo), const BIOCIMMEDIATE = 2147762800 -pkg syscall (netbsd-arm64-cgo), const BIOCIMMEDIATE ideal-int -pkg syscall (netbsd-arm64-cgo), const BIOCPROMISC = 536887913 -pkg syscall (netbsd-arm64-cgo), const BIOCPROMISC ideal-int -pkg syscall (netbsd-arm64-cgo), const BIOCSBLEN = 3221504614 -pkg syscall (netbsd-arm64-cgo), const BIOCSBLEN ideal-int -pkg syscall (netbsd-arm64-cgo), const BIOCSDLT = 2147762806 -pkg syscall (netbsd-arm64-cgo), const BIOCSDLT ideal-int -pkg syscall (netbsd-arm64-cgo), const BIOCSETF = 2148549223 -pkg syscall (netbsd-arm64-cgo), const BIOCSETF ideal-int -pkg syscall (netbsd-arm64-cgo), const BIOCSETIF = 2156937836 -pkg syscall (netbsd-arm64-cgo), const BIOCSETIF ideal-int -pkg syscall (netbsd-arm64-cgo), const BIOCSFEEDBACK = 2147762813 -pkg syscall (netbsd-arm64-cgo), const BIOCSFEEDBACK ideal-int -pkg syscall (netbsd-arm64-cgo), const BIOCSHDRCMPLT = 2147762805 -pkg syscall (netbsd-arm64-cgo), const BIOCSHDRCMPLT ideal-int -pkg syscall (netbsd-arm64-cgo), const BIOCSRTIMEOUT = 2148549242 -pkg syscall (netbsd-arm64-cgo), const BIOCSRTIMEOUT ideal-int -pkg syscall (netbsd-arm64-cgo), const BIOCSSEESENT = 2147762809 -pkg syscall (netbsd-arm64-cgo), const BIOCSSEESENT ideal-int -pkg syscall (netbsd-arm64-cgo), const BIOCSTCPF = 2148549234 -pkg syscall (netbsd-arm64-cgo), const BIOCSTCPF ideal-int -pkg syscall (netbsd-arm64-cgo), const BIOCSUDPF = 2148549235 -pkg syscall (netbsd-arm64-cgo), const BIOCSUDPF ideal-int -pkg syscall (netbsd-arm64-cgo), const BIOCVERSION = 1074020977 -pkg syscall (netbsd-arm64-cgo), const BIOCVERSION ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_A = 16 -pkg syscall (netbsd-arm64-cgo), const BPF_A ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_ABS = 32 -pkg syscall (netbsd-arm64-cgo), const BPF_ABS ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_ADD = 0 -pkg syscall (netbsd-arm64-cgo), const BPF_ADD ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_ALIGNMENT = 8 -pkg syscall (netbsd-arm64-cgo), const BPF_ALIGNMENT ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_ALIGNMENT32 = 4 -pkg syscall (netbsd-arm64-cgo), const BPF_ALIGNMENT32 ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_ALU = 4 -pkg syscall (netbsd-arm64-cgo), const BPF_ALU ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_AND = 80 -pkg syscall (netbsd-arm64-cgo), const BPF_AND ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_B = 16 -pkg syscall (netbsd-arm64-cgo), const BPF_B ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_DFLTBUFSIZE = 1048576 -pkg syscall (netbsd-arm64-cgo), const BPF_DFLTBUFSIZE ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_DIV = 48 -pkg syscall (netbsd-arm64-cgo), const BPF_DIV ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_H = 8 -pkg syscall (netbsd-arm64-cgo), const BPF_H ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_IMM = 0 -pkg syscall (netbsd-arm64-cgo), const BPF_IMM ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_IND = 64 -pkg syscall (netbsd-arm64-cgo), const BPF_IND ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_JA = 0 -pkg syscall (netbsd-arm64-cgo), const BPF_JA ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_JEQ = 16 -pkg syscall (netbsd-arm64-cgo), const BPF_JEQ ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_JGE = 48 -pkg syscall (netbsd-arm64-cgo), const BPF_JGE ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_JGT = 32 -pkg syscall (netbsd-arm64-cgo), const BPF_JGT ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_JMP = 5 -pkg syscall (netbsd-arm64-cgo), const BPF_JMP ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_JSET = 64 -pkg syscall (netbsd-arm64-cgo), const BPF_JSET ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_K = 0 -pkg syscall (netbsd-arm64-cgo), const BPF_K ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_LD = 0 -pkg syscall (netbsd-arm64-cgo), const BPF_LD ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_LDX = 1 -pkg syscall (netbsd-arm64-cgo), const BPF_LDX ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_LEN = 128 -pkg syscall (netbsd-arm64-cgo), const BPF_LEN ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_LSH = 96 -pkg syscall (netbsd-arm64-cgo), const BPF_LSH ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_MAJOR_VERSION = 1 -pkg syscall (netbsd-arm64-cgo), const BPF_MAJOR_VERSION ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_MAXBUFSIZE = 16777216 -pkg syscall (netbsd-arm64-cgo), const BPF_MAXBUFSIZE ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_MAXINSNS = 512 -pkg syscall (netbsd-arm64-cgo), const BPF_MAXINSNS ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_MEM = 96 -pkg syscall (netbsd-arm64-cgo), const BPF_MEM ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_MEMWORDS = 16 -pkg syscall (netbsd-arm64-cgo), const BPF_MEMWORDS ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_MINBUFSIZE = 32 -pkg syscall (netbsd-arm64-cgo), const BPF_MINBUFSIZE ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_MINOR_VERSION = 1 -pkg syscall (netbsd-arm64-cgo), const BPF_MINOR_VERSION ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_MISC = 7 -pkg syscall (netbsd-arm64-cgo), const BPF_MISC ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_MSH = 160 -pkg syscall (netbsd-arm64-cgo), const BPF_MSH ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_MUL = 32 -pkg syscall (netbsd-arm64-cgo), const BPF_MUL ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_NEG = 128 -pkg syscall (netbsd-arm64-cgo), const BPF_NEG ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_OR = 64 -pkg syscall (netbsd-arm64-cgo), const BPF_OR ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_RELEASE = 199606 -pkg syscall (netbsd-arm64-cgo), const BPF_RELEASE ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_RET = 6 -pkg syscall (netbsd-arm64-cgo), const BPF_RET ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_RSH = 112 -pkg syscall (netbsd-arm64-cgo), const BPF_RSH ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_ST = 2 -pkg syscall (netbsd-arm64-cgo), const BPF_ST ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_STX = 3 -pkg syscall (netbsd-arm64-cgo), const BPF_STX ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_SUB = 16 -pkg syscall (netbsd-arm64-cgo), const BPF_SUB ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_TAX = 0 -pkg syscall (netbsd-arm64-cgo), const BPF_TAX ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_TXA = 128 -pkg syscall (netbsd-arm64-cgo), const BPF_TXA ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_W = 0 -pkg syscall (netbsd-arm64-cgo), const BPF_W ideal-int -pkg syscall (netbsd-arm64-cgo), const BPF_X = 8 -pkg syscall (netbsd-arm64-cgo), const BPF_X ideal-int -pkg syscall (netbsd-arm64-cgo), const BRKINT = 2 -pkg syscall (netbsd-arm64-cgo), const BRKINT ideal-int -pkg syscall (netbsd-arm64-cgo), const CFLUSH = 15 -pkg syscall (netbsd-arm64-cgo), const CFLUSH ideal-int -pkg syscall (netbsd-arm64-cgo), const CLOCAL = 32768 -pkg syscall (netbsd-arm64-cgo), const CLOCAL ideal-int -pkg syscall (netbsd-arm64-cgo), const CLONE_CSIGNAL = 255 -pkg syscall (netbsd-arm64-cgo), const CLONE_CSIGNAL ideal-int -pkg syscall (netbsd-arm64-cgo), const CLONE_FILES = 1024 -pkg syscall (netbsd-arm64-cgo), const CLONE_FILES ideal-int -pkg syscall (netbsd-arm64-cgo), const CLONE_FS = 512 -pkg syscall (netbsd-arm64-cgo), const CLONE_FS ideal-int -pkg syscall (netbsd-arm64-cgo), const CLONE_PID = 4096 -pkg syscall (netbsd-arm64-cgo), const CLONE_PID ideal-int -pkg syscall (netbsd-arm64-cgo), const CLONE_PTRACE = 8192 -pkg syscall (netbsd-arm64-cgo), const CLONE_PTRACE ideal-int -pkg syscall (netbsd-arm64-cgo), const CLONE_SIGHAND = 2048 -pkg syscall (netbsd-arm64-cgo), const CLONE_SIGHAND ideal-int -pkg syscall (netbsd-arm64-cgo), const CLONE_VFORK = 16384 -pkg syscall (netbsd-arm64-cgo), const CLONE_VFORK ideal-int -pkg syscall (netbsd-arm64-cgo), const CLONE_VM = 256 -pkg syscall (netbsd-arm64-cgo), const CLONE_VM ideal-int -pkg syscall (netbsd-arm64-cgo), const CREAD = 2048 -pkg syscall (netbsd-arm64-cgo), const CREAD ideal-int -pkg syscall (netbsd-arm64-cgo), const CS5 = 0 -pkg syscall (netbsd-arm64-cgo), const CS5 ideal-int -pkg syscall (netbsd-arm64-cgo), const CS6 = 256 -pkg syscall (netbsd-arm64-cgo), const CS6 ideal-int -pkg syscall (netbsd-arm64-cgo), const CS7 = 512 -pkg syscall (netbsd-arm64-cgo), const CS7 ideal-int -pkg syscall (netbsd-arm64-cgo), const CS8 = 768 -pkg syscall (netbsd-arm64-cgo), const CS8 ideal-int -pkg syscall (netbsd-arm64-cgo), const CSIZE = 768 -pkg syscall (netbsd-arm64-cgo), const CSIZE ideal-int -pkg syscall (netbsd-arm64-cgo), const CSTART = 17 -pkg syscall (netbsd-arm64-cgo), const CSTART ideal-int -pkg syscall (netbsd-arm64-cgo), const CSTATUS = 20 -pkg syscall (netbsd-arm64-cgo), const CSTATUS ideal-int -pkg syscall (netbsd-arm64-cgo), const CSTOP = 19 -pkg syscall (netbsd-arm64-cgo), const CSTOP ideal-int -pkg syscall (netbsd-arm64-cgo), const CSTOPB = 1024 -pkg syscall (netbsd-arm64-cgo), const CSTOPB ideal-int -pkg syscall (netbsd-arm64-cgo), const CSUSP = 26 -pkg syscall (netbsd-arm64-cgo), const CSUSP ideal-int -pkg syscall (netbsd-arm64-cgo), const CTL_MAXNAME = 12 -pkg syscall (netbsd-arm64-cgo), const CTL_MAXNAME ideal-int -pkg syscall (netbsd-arm64-cgo), const CTL_NET = 4 -pkg syscall (netbsd-arm64-cgo), const CTL_NET ideal-int -pkg syscall (netbsd-arm64-cgo), const CTL_QUERY = -2 -pkg syscall (netbsd-arm64-cgo), const CTL_QUERY ideal-int -pkg syscall (netbsd-arm64-cgo), const DIOCBSFLUSH = 536896632 -pkg syscall (netbsd-arm64-cgo), const DIOCBSFLUSH ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_A429 = 184 -pkg syscall (netbsd-arm64-cgo), const DLT_A429 ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_A653_ICM = 185 -pkg syscall (netbsd-arm64-cgo), const DLT_A653_ICM ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_AIRONET_HEADER = 120 -pkg syscall (netbsd-arm64-cgo), const DLT_AIRONET_HEADER ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_AOS = 222 -pkg syscall (netbsd-arm64-cgo), const DLT_AOS ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_APPLE_IP_OVER_IEEE1394 = 138 -pkg syscall (netbsd-arm64-cgo), const DLT_APPLE_IP_OVER_IEEE1394 ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_ARCNET = 7 -pkg syscall (netbsd-arm64-cgo), const DLT_ARCNET ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_ARCNET_LINUX = 129 -pkg syscall (netbsd-arm64-cgo), const DLT_ARCNET_LINUX ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_ATM_CLIP = 19 -pkg syscall (netbsd-arm64-cgo), const DLT_ATM_CLIP ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_ATM_RFC1483 = 11 -pkg syscall (netbsd-arm64-cgo), const DLT_ATM_RFC1483 ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_AURORA = 126 -pkg syscall (netbsd-arm64-cgo), const DLT_AURORA ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_AX25 = 3 -pkg syscall (netbsd-arm64-cgo), const DLT_AX25 ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_AX25_KISS = 202 -pkg syscall (netbsd-arm64-cgo), const DLT_AX25_KISS ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_BACNET_MS_TP = 165 -pkg syscall (netbsd-arm64-cgo), const DLT_BACNET_MS_TP ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_BLUETOOTH_HCI_H4 = 187 -pkg syscall (netbsd-arm64-cgo), const DLT_BLUETOOTH_HCI_H4 ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 201 -pkg syscall (netbsd-arm64-cgo), const DLT_BLUETOOTH_HCI_H4_WITH_PHDR ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_CAN20B = 190 -pkg syscall (netbsd-arm64-cgo), const DLT_CAN20B ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_CAN_SOCKETCAN = 227 -pkg syscall (netbsd-arm64-cgo), const DLT_CAN_SOCKETCAN ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_CHAOS = 5 -pkg syscall (netbsd-arm64-cgo), const DLT_CHAOS ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_CISCO_IOS = 118 -pkg syscall (netbsd-arm64-cgo), const DLT_CISCO_IOS ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_C_HDLC = 104 -pkg syscall (netbsd-arm64-cgo), const DLT_C_HDLC ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_C_HDLC_WITH_DIR = 205 -pkg syscall (netbsd-arm64-cgo), const DLT_C_HDLC_WITH_DIR ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_DECT = 221 -pkg syscall (netbsd-arm64-cgo), const DLT_DECT ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_DOCSIS = 143 -pkg syscall (netbsd-arm64-cgo), const DLT_DOCSIS ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_ECONET = 115 -pkg syscall (netbsd-arm64-cgo), const DLT_ECONET ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_EN10MB = 1 -pkg syscall (netbsd-arm64-cgo), const DLT_EN10MB ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_EN3MB = 2 -pkg syscall (netbsd-arm64-cgo), const DLT_EN3MB ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_ENC = 109 -pkg syscall (netbsd-arm64-cgo), const DLT_ENC ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_ERF = 197 -pkg syscall (netbsd-arm64-cgo), const DLT_ERF ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_ERF_ETH = 175 -pkg syscall (netbsd-arm64-cgo), const DLT_ERF_ETH ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_ERF_POS = 176 -pkg syscall (netbsd-arm64-cgo), const DLT_ERF_POS ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_FC_2 = 224 -pkg syscall (netbsd-arm64-cgo), const DLT_FC_2 ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_FC_2_WITH_FRAME_DELIMS = 225 -pkg syscall (netbsd-arm64-cgo), const DLT_FC_2_WITH_FRAME_DELIMS ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_FDDI = 10 -pkg syscall (netbsd-arm64-cgo), const DLT_FDDI ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_FLEXRAY = 210 -pkg syscall (netbsd-arm64-cgo), const DLT_FLEXRAY ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_FRELAY = 107 -pkg syscall (netbsd-arm64-cgo), const DLT_FRELAY ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_FRELAY_WITH_DIR = 206 -pkg syscall (netbsd-arm64-cgo), const DLT_FRELAY_WITH_DIR ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_GCOM_SERIAL = 173 -pkg syscall (netbsd-arm64-cgo), const DLT_GCOM_SERIAL ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_GCOM_T1E1 = 172 -pkg syscall (netbsd-arm64-cgo), const DLT_GCOM_T1E1 ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_GPF_F = 171 -pkg syscall (netbsd-arm64-cgo), const DLT_GPF_F ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_GPF_T = 170 -pkg syscall (netbsd-arm64-cgo), const DLT_GPF_T ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_GPRS_LLC = 169 -pkg syscall (netbsd-arm64-cgo), const DLT_GPRS_LLC ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_GSMTAP_ABIS = 218 -pkg syscall (netbsd-arm64-cgo), const DLT_GSMTAP_ABIS ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_GSMTAP_UM = 217 -pkg syscall (netbsd-arm64-cgo), const DLT_GSMTAP_UM ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_HDLC = 16 -pkg syscall (netbsd-arm64-cgo), const DLT_HDLC ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_HHDLC = 121 -pkg syscall (netbsd-arm64-cgo), const DLT_HHDLC ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_HIPPI = 15 -pkg syscall (netbsd-arm64-cgo), const DLT_HIPPI ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_IBM_SN = 146 -pkg syscall (netbsd-arm64-cgo), const DLT_IBM_SN ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_IBM_SP = 145 -pkg syscall (netbsd-arm64-cgo), const DLT_IBM_SP ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802 = 6 -pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802 ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802_11 = 105 -pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802_11 ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802_11_RADIO = 127 -pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802_11_RADIO ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802_11_RADIO_AVS = 163 -pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802_11_RADIO_AVS ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802_15_4 = 195 -pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802_15_4 ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802_15_4_LINUX = 191 -pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802_15_4_LINUX ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802_15_4_NONASK_PHY = 215 -pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802_15_4_NONASK_PHY ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802_16_MAC_CPS = 188 -pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802_16_MAC_CPS ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802_16_MAC_CPS_RADIO = 193 -pkg syscall (netbsd-arm64-cgo), const DLT_IEEE802_16_MAC_CPS_RADIO ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_IPMB = 199 -pkg syscall (netbsd-arm64-cgo), const DLT_IPMB ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_IPMB_LINUX = 209 -pkg syscall (netbsd-arm64-cgo), const DLT_IPMB_LINUX ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_IPNET = 226 -pkg syscall (netbsd-arm64-cgo), const DLT_IPNET ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_IPV4 = 228 -pkg syscall (netbsd-arm64-cgo), const DLT_IPV4 ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_IPV6 = 229 -pkg syscall (netbsd-arm64-cgo), const DLT_IPV6 ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_IP_OVER_FC = 122 -pkg syscall (netbsd-arm64-cgo), const DLT_IP_OVER_FC ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_ATM1 = 137 -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_ATM1 ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_ATM2 = 135 -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_ATM2 ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_CHDLC = 181 -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_CHDLC ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_ES = 132 -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_ES ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_ETHER = 178 -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_ETHER ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_FRELAY = 180 -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_FRELAY ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_GGSN = 133 -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_GGSN ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_ISM = 194 -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_ISM ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_MFR = 134 -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_MFR ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_MLFR = 131 -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_MLFR ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_MLPPP = 130 -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_MLPPP ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_MONITOR = 164 -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_MONITOR ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_PIC_PEER = 174 -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_PIC_PEER ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_PPP = 179 -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_PPP ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_PPPOE = 167 -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_PPPOE ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_PPPOE_ATM = 168 -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_PPPOE_ATM ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_SERVICES = 136 -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_SERVICES ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_ST = 200 -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_ST ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_VP = 183 -pkg syscall (netbsd-arm64-cgo), const DLT_JUNIPER_VP ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_LAPB_WITH_DIR = 207 -pkg syscall (netbsd-arm64-cgo), const DLT_LAPB_WITH_DIR ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_LAPD = 203 -pkg syscall (netbsd-arm64-cgo), const DLT_LAPD ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_LIN = 212 -pkg syscall (netbsd-arm64-cgo), const DLT_LIN ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_LINUX_EVDEV = 216 -pkg syscall (netbsd-arm64-cgo), const DLT_LINUX_EVDEV ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_LINUX_IRDA = 144 -pkg syscall (netbsd-arm64-cgo), const DLT_LINUX_IRDA ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_LINUX_LAPD = 177 -pkg syscall (netbsd-arm64-cgo), const DLT_LINUX_LAPD ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_LINUX_SLL = 113 -pkg syscall (netbsd-arm64-cgo), const DLT_LINUX_SLL ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_LOOP = 108 -pkg syscall (netbsd-arm64-cgo), const DLT_LOOP ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_LTALK = 114 -pkg syscall (netbsd-arm64-cgo), const DLT_LTALK ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_MFR = 182 -pkg syscall (netbsd-arm64-cgo), const DLT_MFR ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_MOST = 211 -pkg syscall (netbsd-arm64-cgo), const DLT_MOST ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_MPLS = 219 -pkg syscall (netbsd-arm64-cgo), const DLT_MPLS ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_MTP2 = 140 -pkg syscall (netbsd-arm64-cgo), const DLT_MTP2 ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_MTP2_WITH_PHDR = 139 -pkg syscall (netbsd-arm64-cgo), const DLT_MTP2_WITH_PHDR ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_MTP3 = 141 -pkg syscall (netbsd-arm64-cgo), const DLT_MTP3 ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_NULL = 0 -pkg syscall (netbsd-arm64-cgo), const DLT_NULL ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_PCI_EXP = 125 -pkg syscall (netbsd-arm64-cgo), const DLT_PCI_EXP ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_PFLOG = 117 -pkg syscall (netbsd-arm64-cgo), const DLT_PFLOG ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_PFSYNC = 18 -pkg syscall (netbsd-arm64-cgo), const DLT_PFSYNC ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_PPI = 192 -pkg syscall (netbsd-arm64-cgo), const DLT_PPI ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_PPP = 9 -pkg syscall (netbsd-arm64-cgo), const DLT_PPP ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_PPP_BSDOS = 14 -pkg syscall (netbsd-arm64-cgo), const DLT_PPP_BSDOS ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_PPP_ETHER = 51 -pkg syscall (netbsd-arm64-cgo), const DLT_PPP_ETHER ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_PPP_PPPD = 166 -pkg syscall (netbsd-arm64-cgo), const DLT_PPP_PPPD ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_PPP_SERIAL = 50 -pkg syscall (netbsd-arm64-cgo), const DLT_PPP_SERIAL ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_PPP_WITH_DIR = 204 -pkg syscall (netbsd-arm64-cgo), const DLT_PPP_WITH_DIR ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_PRISM_HEADER = 119 -pkg syscall (netbsd-arm64-cgo), const DLT_PRISM_HEADER ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_PRONET = 4 -pkg syscall (netbsd-arm64-cgo), const DLT_PRONET ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_RAIF1 = 198 -pkg syscall (netbsd-arm64-cgo), const DLT_RAIF1 ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_RAW = 12 -pkg syscall (netbsd-arm64-cgo), const DLT_RAW ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_RAWAF_MASK = 35913728 -pkg syscall (netbsd-arm64-cgo), const DLT_RAWAF_MASK ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_RIO = 124 -pkg syscall (netbsd-arm64-cgo), const DLT_RIO ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_SCCP = 142 -pkg syscall (netbsd-arm64-cgo), const DLT_SCCP ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_SITA = 196 -pkg syscall (netbsd-arm64-cgo), const DLT_SITA ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_SLIP = 8 -pkg syscall (netbsd-arm64-cgo), const DLT_SLIP ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_SLIP_BSDOS = 13 -pkg syscall (netbsd-arm64-cgo), const DLT_SLIP_BSDOS ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_SUNATM = 123 -pkg syscall (netbsd-arm64-cgo), const DLT_SUNATM ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_SYMANTEC_FIREWALL = 99 -pkg syscall (netbsd-arm64-cgo), const DLT_SYMANTEC_FIREWALL ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_TZSP = 128 -pkg syscall (netbsd-arm64-cgo), const DLT_TZSP ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_USB = 186 -pkg syscall (netbsd-arm64-cgo), const DLT_USB ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_USB_LINUX = 189 -pkg syscall (netbsd-arm64-cgo), const DLT_USB_LINUX ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_USB_LINUX_MMAPPED = 220 -pkg syscall (netbsd-arm64-cgo), const DLT_USB_LINUX_MMAPPED ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_WIHART = 223 -pkg syscall (netbsd-arm64-cgo), const DLT_WIHART ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_X2E_SERIAL = 213 -pkg syscall (netbsd-arm64-cgo), const DLT_X2E_SERIAL ideal-int -pkg syscall (netbsd-arm64-cgo), const DLT_X2E_XORAYA = 214 -pkg syscall (netbsd-arm64-cgo), const DLT_X2E_XORAYA ideal-int -pkg syscall (netbsd-arm64-cgo), const DT_BLK = 6 -pkg syscall (netbsd-arm64-cgo), const DT_BLK ideal-int -pkg syscall (netbsd-arm64-cgo), const DT_CHR = 2 -pkg syscall (netbsd-arm64-cgo), const DT_CHR ideal-int -pkg syscall (netbsd-arm64-cgo), const DT_DIR = 4 -pkg syscall (netbsd-arm64-cgo), const DT_DIR ideal-int -pkg syscall (netbsd-arm64-cgo), const DT_FIFO = 1 -pkg syscall (netbsd-arm64-cgo), const DT_FIFO ideal-int -pkg syscall (netbsd-arm64-cgo), const DT_LNK = 10 -pkg syscall (netbsd-arm64-cgo), const DT_LNK ideal-int -pkg syscall (netbsd-arm64-cgo), const DT_REG = 8 -pkg syscall (netbsd-arm64-cgo), const DT_REG ideal-int -pkg syscall (netbsd-arm64-cgo), const DT_SOCK = 12 -pkg syscall (netbsd-arm64-cgo), const DT_SOCK ideal-int -pkg syscall (netbsd-arm64-cgo), const DT_UNKNOWN = 0 -pkg syscall (netbsd-arm64-cgo), const DT_UNKNOWN ideal-int -pkg syscall (netbsd-arm64-cgo), const DT_WHT = 14 -pkg syscall (netbsd-arm64-cgo), const DT_WHT ideal-int -pkg syscall (netbsd-arm64-cgo), const E2BIG = 7 -pkg syscall (netbsd-arm64-cgo), const EACCES = 13 -pkg syscall (netbsd-arm64-cgo), const EADDRINUSE = 48 -pkg syscall (netbsd-arm64-cgo), const EADDRNOTAVAIL = 49 -pkg syscall (netbsd-arm64-cgo), const EAFNOSUPPORT = 47 -pkg syscall (netbsd-arm64-cgo), const EAGAIN = 35 -pkg syscall (netbsd-arm64-cgo), const EALREADY = 37 -pkg syscall (netbsd-arm64-cgo), const EAUTH = 80 -pkg syscall (netbsd-arm64-cgo), const EAUTH Errno -pkg syscall (netbsd-arm64-cgo), const EBADF = 9 -pkg syscall (netbsd-arm64-cgo), const EBADMSG = 88 -pkg syscall (netbsd-arm64-cgo), const EBADMSG Errno -pkg syscall (netbsd-arm64-cgo), const EBADRPC = 72 -pkg syscall (netbsd-arm64-cgo), const EBADRPC Errno -pkg syscall (netbsd-arm64-cgo), const EBUSY = 16 -pkg syscall (netbsd-arm64-cgo), const ECANCELED = 87 -pkg syscall (netbsd-arm64-cgo), const ECHILD = 10 -pkg syscall (netbsd-arm64-cgo), const ECHO = 8 -pkg syscall (netbsd-arm64-cgo), const ECHO ideal-int -pkg syscall (netbsd-arm64-cgo), const ECHOCTL = 64 -pkg syscall (netbsd-arm64-cgo), const ECHOCTL ideal-int -pkg syscall (netbsd-arm64-cgo), const ECHOE = 2 -pkg syscall (netbsd-arm64-cgo), const ECHOE ideal-int -pkg syscall (netbsd-arm64-cgo), const ECHOK = 4 -pkg syscall (netbsd-arm64-cgo), const ECHOK ideal-int -pkg syscall (netbsd-arm64-cgo), const ECHOKE = 1 -pkg syscall (netbsd-arm64-cgo), const ECHOKE ideal-int -pkg syscall (netbsd-arm64-cgo), const ECHONL = 16 -pkg syscall (netbsd-arm64-cgo), const ECHONL ideal-int -pkg syscall (netbsd-arm64-cgo), const ECHOPRT = 32 -pkg syscall (netbsd-arm64-cgo), const ECHOPRT ideal-int -pkg syscall (netbsd-arm64-cgo), const ECONNABORTED = 53 -pkg syscall (netbsd-arm64-cgo), const ECONNREFUSED = 61 -pkg syscall (netbsd-arm64-cgo), const ECONNRESET = 54 -pkg syscall (netbsd-arm64-cgo), const EDEADLK = 11 -pkg syscall (netbsd-arm64-cgo), const EDESTADDRREQ = 39 -pkg syscall (netbsd-arm64-cgo), const EDOM = 33 -pkg syscall (netbsd-arm64-cgo), const EDQUOT = 69 -pkg syscall (netbsd-arm64-cgo), const EEXIST = 17 -pkg syscall (netbsd-arm64-cgo), const EFAULT = 14 -pkg syscall (netbsd-arm64-cgo), const EFBIG = 27 -pkg syscall (netbsd-arm64-cgo), const EFTYPE = 79 -pkg syscall (netbsd-arm64-cgo), const EFTYPE Errno -pkg syscall (netbsd-arm64-cgo), const EHOSTDOWN = 64 -pkg syscall (netbsd-arm64-cgo), const EHOSTUNREACH = 65 -pkg syscall (netbsd-arm64-cgo), const EIDRM = 82 -pkg syscall (netbsd-arm64-cgo), const EILSEQ = 85 -pkg syscall (netbsd-arm64-cgo), const EINPROGRESS = 36 -pkg syscall (netbsd-arm64-cgo), const EINTR = 4 -pkg syscall (netbsd-arm64-cgo), const EINVAL = 22 -pkg syscall (netbsd-arm64-cgo), const EIO = 5 -pkg syscall (netbsd-arm64-cgo), const EISCONN = 56 -pkg syscall (netbsd-arm64-cgo), const EISDIR = 21 -pkg syscall (netbsd-arm64-cgo), const ELAST = 96 -pkg syscall (netbsd-arm64-cgo), const ELAST Errno -pkg syscall (netbsd-arm64-cgo), const ELOOP = 62 -pkg syscall (netbsd-arm64-cgo), const EMFILE = 24 -pkg syscall (netbsd-arm64-cgo), const EMLINK = 31 -pkg syscall (netbsd-arm64-cgo), const EMSGSIZE = 40 -pkg syscall (netbsd-arm64-cgo), const EMULTIHOP = 94 -pkg syscall (netbsd-arm64-cgo), const EMULTIHOP Errno -pkg syscall (netbsd-arm64-cgo), const EMUL_LINUX = 1 -pkg syscall (netbsd-arm64-cgo), const EMUL_LINUX ideal-int -pkg syscall (netbsd-arm64-cgo), const EMUL_LINUX32 = 5 -pkg syscall (netbsd-arm64-cgo), const EMUL_LINUX32 ideal-int -pkg syscall (netbsd-arm64-cgo), const EMUL_MAXID = 6 -pkg syscall (netbsd-arm64-cgo), const EMUL_MAXID ideal-int -pkg syscall (netbsd-arm64-cgo), const ENAMETOOLONG = 63 -pkg syscall (netbsd-arm64-cgo), const ENEEDAUTH = 81 -pkg syscall (netbsd-arm64-cgo), const ENEEDAUTH Errno -pkg syscall (netbsd-arm64-cgo), const ENETDOWN = 50 -pkg syscall (netbsd-arm64-cgo), const ENETRESET = 52 -pkg syscall (netbsd-arm64-cgo), const ENETUNREACH = 51 -pkg syscall (netbsd-arm64-cgo), const ENFILE = 23 -pkg syscall (netbsd-arm64-cgo), const ENOATTR = 93 -pkg syscall (netbsd-arm64-cgo), const ENOATTR Errno -pkg syscall (netbsd-arm64-cgo), const ENOBUFS = 55 -pkg syscall (netbsd-arm64-cgo), const ENODATA = 89 -pkg syscall (netbsd-arm64-cgo), const ENODATA Errno -pkg syscall (netbsd-arm64-cgo), const ENODEV = 19 -pkg syscall (netbsd-arm64-cgo), const ENOEXEC = 8 -pkg syscall (netbsd-arm64-cgo), const ENOLCK = 77 -pkg syscall (netbsd-arm64-cgo), const ENOLINK = 95 -pkg syscall (netbsd-arm64-cgo), const ENOLINK Errno -pkg syscall (netbsd-arm64-cgo), const ENOMEM = 12 -pkg syscall (netbsd-arm64-cgo), const ENOMSG = 83 -pkg syscall (netbsd-arm64-cgo), const ENOPROTOOPT = 42 -pkg syscall (netbsd-arm64-cgo), const ENOSPC = 28 -pkg syscall (netbsd-arm64-cgo), const ENOSR = 90 -pkg syscall (netbsd-arm64-cgo), const ENOSR Errno -pkg syscall (netbsd-arm64-cgo), const ENOSTR = 91 -pkg syscall (netbsd-arm64-cgo), const ENOSTR Errno -pkg syscall (netbsd-arm64-cgo), const ENOSYS = 78 -pkg syscall (netbsd-arm64-cgo), const ENOTBLK = 15 -pkg syscall (netbsd-arm64-cgo), const ENOTCONN = 57 -pkg syscall (netbsd-arm64-cgo), const ENOTDIR = 20 -pkg syscall (netbsd-arm64-cgo), const ENOTEMPTY = 66 -pkg syscall (netbsd-arm64-cgo), const ENOTSOCK = 38 -pkg syscall (netbsd-arm64-cgo), const ENOTSUP = 86 -pkg syscall (netbsd-arm64-cgo), const ENOTTY = 25 -pkg syscall (netbsd-arm64-cgo), const ENXIO = 6 -pkg syscall (netbsd-arm64-cgo), const EOPNOTSUPP = 45 -pkg syscall (netbsd-arm64-cgo), const EOVERFLOW = 84 -pkg syscall (netbsd-arm64-cgo), const EPERM = 1 -pkg syscall (netbsd-arm64-cgo), const EPFNOSUPPORT = 46 -pkg syscall (netbsd-arm64-cgo), const EPIPE = 32 -pkg syscall (netbsd-arm64-cgo), const EPROCLIM = 67 -pkg syscall (netbsd-arm64-cgo), const EPROCLIM Errno -pkg syscall (netbsd-arm64-cgo), const EPROCUNAVAIL = 76 -pkg syscall (netbsd-arm64-cgo), const EPROCUNAVAIL Errno -pkg syscall (netbsd-arm64-cgo), const EPROGMISMATCH = 75 -pkg syscall (netbsd-arm64-cgo), const EPROGMISMATCH Errno -pkg syscall (netbsd-arm64-cgo), const EPROGUNAVAIL = 74 -pkg syscall (netbsd-arm64-cgo), const EPROGUNAVAIL Errno -pkg syscall (netbsd-arm64-cgo), const EPROTO = 96 -pkg syscall (netbsd-arm64-cgo), const EPROTO Errno -pkg syscall (netbsd-arm64-cgo), const EPROTONOSUPPORT = 43 -pkg syscall (netbsd-arm64-cgo), const EPROTOTYPE = 41 -pkg syscall (netbsd-arm64-cgo), const ERANGE = 34 -pkg syscall (netbsd-arm64-cgo), const EREMOTE = 71 -pkg syscall (netbsd-arm64-cgo), const EROFS = 30 -pkg syscall (netbsd-arm64-cgo), const ERPCMISMATCH = 73 -pkg syscall (netbsd-arm64-cgo), const ERPCMISMATCH Errno -pkg syscall (netbsd-arm64-cgo), const ESHUTDOWN = 58 -pkg syscall (netbsd-arm64-cgo), const ESOCKTNOSUPPORT = 44 -pkg syscall (netbsd-arm64-cgo), const ESPIPE = 29 -pkg syscall (netbsd-arm64-cgo), const ESRCH = 3 -pkg syscall (netbsd-arm64-cgo), const ESTALE = 70 -pkg syscall (netbsd-arm64-cgo), const ETHERCAP_JUMBO_MTU = 4 -pkg syscall (netbsd-arm64-cgo), const ETHERCAP_JUMBO_MTU ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERCAP_VLAN_HWTAGGING = 2 -pkg syscall (netbsd-arm64-cgo), const ETHERCAP_VLAN_HWTAGGING ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERCAP_VLAN_MTU = 1 -pkg syscall (netbsd-arm64-cgo), const ETHERCAP_VLAN_MTU ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERMIN = 46 -pkg syscall (netbsd-arm64-cgo), const ETHERMIN ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERMTU = 1500 -pkg syscall (netbsd-arm64-cgo), const ETHERMTU ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERMTU_JUMBO = 9000 -pkg syscall (netbsd-arm64-cgo), const ETHERMTU_JUMBO ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_8023 = 4 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_8023 ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_AARP = 33011 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_AARP ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ACCTON = 33680 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ACCTON ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_AEONIC = 32822 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_AEONIC ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ALPHA = 33098 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ALPHA ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_AMBER = 24584 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_AMBER ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_AMOEBA = 33093 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_AMOEBA ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_APOLLO = 33015 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_APOLLO ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_APOLLODOMAIN = 32793 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_APOLLODOMAIN ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_APPLETALK = 32923 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_APPLETALK ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_APPLITEK = 32967 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_APPLITEK ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ARGONAUT = 32826 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ARGONAUT ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ARP = 2054 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ARP ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_AT = 32923 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_AT ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ATALK = 32923 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ATALK ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ATOMIC = 34527 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ATOMIC ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ATT = 32873 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ATT ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ATTSTANFORD = 32776 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ATTSTANFORD ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_AUTOPHON = 32874 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_AUTOPHON ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_AXIS = 34902 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_AXIS ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_BCLOOP = 36867 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_BCLOOP ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_BOFL = 33026 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_BOFL ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_CABLETRON = 28724 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_CABLETRON ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_CHAOS = 2052 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_CHAOS ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_COMDESIGN = 32876 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_COMDESIGN ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_COMPUGRAPHIC = 32877 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_COMPUGRAPHIC ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_COUNTERPOINT = 32866 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_COUNTERPOINT ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_CRONUS = 32772 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_CRONUS ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_CRONUSVLN = 32771 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_CRONUSVLN ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DCA = 4660 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DCA ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DDE = 32891 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DDE ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DEBNI = 43690 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DEBNI ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECAM = 32840 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECAM ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECCUST = 24582 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECCUST ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECDIAG = 24581 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECDIAG ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECDNS = 32828 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECDNS ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECDTS = 32830 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECDTS ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECEXPER = 24576 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECEXPER ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECLAST = 32833 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECLAST ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECLTM = 32831 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECLTM ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECMUMPS = 24585 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECMUMPS ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECNETBIOS = 32832 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DECNETBIOS ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DELTACON = 34526 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DELTACON ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DIDDLE = 17185 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DIDDLE ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DLOG1 = 1632 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DLOG1 ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DLOG2 = 1633 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DLOG2 ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DN = 24579 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DN ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DOGFIGHT = 6537 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DOGFIGHT ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DSMD = 32825 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_DSMD ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ECMA = 2051 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ECMA ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ENCRYPT = 32829 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ENCRYPT ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ES = 32861 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_ES ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_EXCELAN = 32784 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_EXCELAN ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_EXPERDATA = 32841 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_EXPERDATA ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_FLIP = 33094 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_FLIP ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_FLOWCONTROL = 34824 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_FLOWCONTROL ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_FRARP = 2056 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_FRARP ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_GENDYN = 32872 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_GENDYN ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_HAYES = 33072 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_HAYES ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_HIPPI_FP = 33152 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_HIPPI_FP ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_HITACHI = 34848 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_HITACHI ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_HP = 32773 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_HP ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IEEEPUP = 2560 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IEEEPUP ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IEEEPUPAT = 2561 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IEEEPUPAT ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IMLBL = 19522 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IMLBL ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IMLBLDIAG = 16972 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IMLBLDIAG ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IP = 2048 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IP ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IPAS = 34668 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IPAS ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IPV6 = 34525 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IPV6 ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IPX = 33079 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IPX ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IPXNEW = 32823 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_IPXNEW ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_KALPANA = 34178 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_KALPANA ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_LANBRIDGE = 32824 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_LANBRIDGE ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_LANPROBE = 34952 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_LANPROBE ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_LAT = 24580 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_LAT ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_LBACK = 36864 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_LBACK ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_LITTLE = 32864 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_LITTLE ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_LOGICRAFT = 33096 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_LOGICRAFT ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_LOOPBACK = 36864 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_LOOPBACK ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MATRA = 32890 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MATRA ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MAX = 65535 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MAX ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MERIT = 32892 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MERIT ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MICP = 34618 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MICP ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MOPDL = 24577 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MOPDL ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MOPRC = 24578 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MOPRC ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MOTOROLA = 33165 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MOTOROLA ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MPLS = 34887 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MPLS ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MPLS_MCAST = 34888 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MPLS_MCAST ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MUMPS = 33087 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_MUMPS ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPCC = 15364 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPCC ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPCLAIM = 15369 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPCLAIM ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPCLREQ = 15365 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPCLREQ ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPCLRSP = 15366 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPCLRSP ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPCREQ = 15362 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPCREQ ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPCRSP = 15363 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPCRSP ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPDG = 15367 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPDG ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPDGB = 15368 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPDGB ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPDLTE = 15370 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPDLTE ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPRAR = 15372 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPRAR ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPRAS = 15371 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPRAS ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPRST = 15373 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPRST ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPSCD = 15361 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPSCD ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPVCD = 15360 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBPVCD ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBS = 2050 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NBS ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NCD = 33097 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NCD ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NESTAR = 32774 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NESTAR ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NETBEUI = 33169 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NETBEUI ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NOVELL = 33080 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NOVELL ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NS = 1536 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NS ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NSAT = 1537 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NSAT ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NSCOMPAT = 2055 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NSCOMPAT ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NTRAILER = 16 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_NTRAILER ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_OS9 = 28679 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_OS9 ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_OS9NET = 28681 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_OS9NET ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PACER = 32966 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PACER ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PAE = 34958 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PAE ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PCS = 16962 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PCS ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PLANNING = 32836 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PLANNING ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PPP = 34827 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PPP ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PPPOE = 34916 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PPPOE ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PPPOEDISC = 34915 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PPPOEDISC ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PRIMENTS = 28721 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PRIMENTS ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PUP = 512 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PUP ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PUPAT = 512 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_PUPAT ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_RACAL = 28720 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_RACAL ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_RATIONAL = 33104 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_RATIONAL ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_RAWFR = 25945 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_RAWFR ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_RCL = 6549 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_RCL ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_RDP = 34617 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_RDP ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_RETIX = 33010 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_RETIX ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_REVARP = 32821 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_REVARP ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SCA = 24583 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SCA ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SECTRA = 34523 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SECTRA ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SECUREDATA = 34669 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SECUREDATA ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SGITW = 33150 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SGITW ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SG_BOUNCE = 32790 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SG_BOUNCE ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SG_DIAG = 32787 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SG_DIAG ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SG_NETGAMES = 32788 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SG_NETGAMES ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SG_RESV = 32789 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SG_RESV ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SIMNET = 21000 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SIMNET ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SLOWPROTOCOLS = 34825 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SLOWPROTOCOLS ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SNA = 32981 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SNA ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SNMP = 33100 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SNMP ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SONIX = 64245 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SONIX ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SPIDER = 32927 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SPIDER ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SPRITE = 1280 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_SPRITE ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_STP = 33153 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_STP ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TALARIS = 33067 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TALARIS ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TALARISMC = 34091 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TALARISMC ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TCPCOMP = 34667 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TCPCOMP ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TCPSM = 36866 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TCPSM ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TEC = 33103 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TEC ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TIGAN = 32815 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TIGAN ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TRAIL = 4096 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TRAIL ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TRANSETHER = 25944 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TRANSETHER ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TYMSHARE = 32814 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_TYMSHARE ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_UBBST = 28677 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_UBBST ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_UBDEBUG = 2304 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_UBDEBUG ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_UBDIAGLOOP = 28674 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_UBDIAGLOOP ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_UBDL = 28672 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_UBDL ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_UBNIU = 28673 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_UBNIU ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_UBNMC = 28675 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_UBNMC ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VALID = 5632 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VALID ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VARIAN = 32989 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VARIAN ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VAXELN = 32827 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VAXELN ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VEECO = 32871 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VEECO ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VEXP = 32859 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VEXP ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VGLAB = 33073 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VGLAB ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VINES = 2989 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VINES ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VINESECHO = 2991 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VINESECHO ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VINESLOOP = 2990 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VINESLOOP ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VITAL = 65280 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VITAL ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VLAN = 33024 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VLAN ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VLTLMAN = 32896 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VLTLMAN ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VPROD = 32860 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VPROD ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VURESERVED = 33095 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_VURESERVED ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_WATERLOO = 33072 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_WATERLOO ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_WELLFLEET = 33027 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_WELLFLEET ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_X25 = 2053 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_X25 ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_X75 = 2049 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_X75 ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_XNSSM = 36865 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_XNSSM ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_XTP = 33149 -pkg syscall (netbsd-arm64-cgo), const ETHERTYPE_XTP ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHER_ADDR_LEN = 6 -pkg syscall (netbsd-arm64-cgo), const ETHER_ADDR_LEN ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHER_CRC_LEN = 4 -pkg syscall (netbsd-arm64-cgo), const ETHER_CRC_LEN ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHER_CRC_POLY_BE = 79764918 -pkg syscall (netbsd-arm64-cgo), const ETHER_CRC_POLY_BE ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHER_CRC_POLY_LE = 3988292384 -pkg syscall (netbsd-arm64-cgo), const ETHER_CRC_POLY_LE ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHER_HDR_LEN = 14 -pkg syscall (netbsd-arm64-cgo), const ETHER_HDR_LEN ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHER_MAX_LEN = 1518 -pkg syscall (netbsd-arm64-cgo), const ETHER_MAX_LEN ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHER_MAX_LEN_JUMBO = 9018 -pkg syscall (netbsd-arm64-cgo), const ETHER_MAX_LEN_JUMBO ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHER_MIN_LEN = 64 -pkg syscall (netbsd-arm64-cgo), const ETHER_MIN_LEN ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHER_PPPOE_ENCAP_LEN = 8 -pkg syscall (netbsd-arm64-cgo), const ETHER_PPPOE_ENCAP_LEN ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHER_TYPE_LEN = 2 -pkg syscall (netbsd-arm64-cgo), const ETHER_TYPE_LEN ideal-int -pkg syscall (netbsd-arm64-cgo), const ETHER_VLAN_ENCAP_LEN = 4 -pkg syscall (netbsd-arm64-cgo), const ETHER_VLAN_ENCAP_LEN ideal-int -pkg syscall (netbsd-arm64-cgo), const ETIME = 92 -pkg syscall (netbsd-arm64-cgo), const ETIME Errno -pkg syscall (netbsd-arm64-cgo), const ETIMEDOUT = 60 -pkg syscall (netbsd-arm64-cgo), const ETOOMANYREFS = 59 -pkg syscall (netbsd-arm64-cgo), const ETXTBSY = 26 -pkg syscall (netbsd-arm64-cgo), const EUSERS = 68 -pkg syscall (netbsd-arm64-cgo), const EVFILT_AIO = 2 -pkg syscall (netbsd-arm64-cgo), const EVFILT_AIO ideal-int -pkg syscall (netbsd-arm64-cgo), const EVFILT_PROC = 4 -pkg syscall (netbsd-arm64-cgo), const EVFILT_PROC ideal-int -pkg syscall (netbsd-arm64-cgo), const EVFILT_READ = 0 -pkg syscall (netbsd-arm64-cgo), const EVFILT_READ ideal-int -pkg syscall (netbsd-arm64-cgo), const EVFILT_SIGNAL = 5 -pkg syscall (netbsd-arm64-cgo), const EVFILT_SIGNAL ideal-int -pkg syscall (netbsd-arm64-cgo), const EVFILT_SYSCOUNT = 7 -pkg syscall (netbsd-arm64-cgo), const EVFILT_SYSCOUNT ideal-int -pkg syscall (netbsd-arm64-cgo), const EVFILT_TIMER = 6 -pkg syscall (netbsd-arm64-cgo), const EVFILT_TIMER ideal-int -pkg syscall (netbsd-arm64-cgo), const EVFILT_VNODE = 3 -pkg syscall (netbsd-arm64-cgo), const EVFILT_VNODE ideal-int -pkg syscall (netbsd-arm64-cgo), const EVFILT_WRITE = 1 -pkg syscall (netbsd-arm64-cgo), const EVFILT_WRITE ideal-int -pkg syscall (netbsd-arm64-cgo), const EV_ADD = 1 -pkg syscall (netbsd-arm64-cgo), const EV_ADD ideal-int -pkg syscall (netbsd-arm64-cgo), const EV_CLEAR = 32 -pkg syscall (netbsd-arm64-cgo), const EV_CLEAR ideal-int -pkg syscall (netbsd-arm64-cgo), const EV_DELETE = 2 -pkg syscall (netbsd-arm64-cgo), const EV_DELETE ideal-int -pkg syscall (netbsd-arm64-cgo), const EV_DISABLE = 8 -pkg syscall (netbsd-arm64-cgo), const EV_DISABLE ideal-int -pkg syscall (netbsd-arm64-cgo), const EV_ENABLE = 4 -pkg syscall (netbsd-arm64-cgo), const EV_ENABLE ideal-int -pkg syscall (netbsd-arm64-cgo), const EV_EOF = 32768 -pkg syscall (netbsd-arm64-cgo), const EV_EOF ideal-int -pkg syscall (netbsd-arm64-cgo), const EV_ERROR = 16384 -pkg syscall (netbsd-arm64-cgo), const EV_ERROR ideal-int -pkg syscall (netbsd-arm64-cgo), const EV_FLAG1 = 8192 -pkg syscall (netbsd-arm64-cgo), const EV_FLAG1 ideal-int -pkg syscall (netbsd-arm64-cgo), const EV_ONESHOT = 16 -pkg syscall (netbsd-arm64-cgo), const EV_ONESHOT ideal-int -pkg syscall (netbsd-arm64-cgo), const EV_SYSFLAGS = 61440 -pkg syscall (netbsd-arm64-cgo), const EV_SYSFLAGS ideal-int -pkg syscall (netbsd-arm64-cgo), const EWOULDBLOCK = 35 -pkg syscall (netbsd-arm64-cgo), const EXDEV = 18 -pkg syscall (netbsd-arm64-cgo), const EXTA = 19200 -pkg syscall (netbsd-arm64-cgo), const EXTA ideal-int -pkg syscall (netbsd-arm64-cgo), const EXTB = 38400 -pkg syscall (netbsd-arm64-cgo), const EXTB ideal-int -pkg syscall (netbsd-arm64-cgo), const EXTPROC = 2048 -pkg syscall (netbsd-arm64-cgo), const EXTPROC ideal-int -pkg syscall (netbsd-arm64-cgo), const FD_CLOEXEC = 1 -pkg syscall (netbsd-arm64-cgo), const FD_CLOEXEC ideal-int -pkg syscall (netbsd-arm64-cgo), const FD_SETSIZE = 256 -pkg syscall (netbsd-arm64-cgo), const FD_SETSIZE ideal-int -pkg syscall (netbsd-arm64-cgo), const FLUSHO = 8388608 -pkg syscall (netbsd-arm64-cgo), const FLUSHO ideal-int -pkg syscall (netbsd-arm64-cgo), const F_CLOSEM = 10 -pkg syscall (netbsd-arm64-cgo), const F_CLOSEM ideal-int -pkg syscall (netbsd-arm64-cgo), const F_DUPFD = 0 -pkg syscall (netbsd-arm64-cgo), const F_DUPFD ideal-int -pkg syscall (netbsd-arm64-cgo), const F_DUPFD_CLOEXEC = 12 -pkg syscall (netbsd-arm64-cgo), const F_DUPFD_CLOEXEC ideal-int -pkg syscall (netbsd-arm64-cgo), const F_FSCTL = -2147483648 -pkg syscall (netbsd-arm64-cgo), const F_FSCTL ideal-int -pkg syscall (netbsd-arm64-cgo), const F_FSDIRMASK = 1879048192 -pkg syscall (netbsd-arm64-cgo), const F_FSDIRMASK ideal-int -pkg syscall (netbsd-arm64-cgo), const F_FSIN = 268435456 -pkg syscall (netbsd-arm64-cgo), const F_FSIN ideal-int -pkg syscall (netbsd-arm64-cgo), const F_FSINOUT = 805306368 -pkg syscall (netbsd-arm64-cgo), const F_FSINOUT ideal-int -pkg syscall (netbsd-arm64-cgo), const F_FSOUT = 536870912 -pkg syscall (netbsd-arm64-cgo), const F_FSOUT ideal-int -pkg syscall (netbsd-arm64-cgo), const F_FSPRIV = 32768 -pkg syscall (netbsd-arm64-cgo), const F_FSPRIV ideal-int -pkg syscall (netbsd-arm64-cgo), const F_FSVOID = 1073741824 -pkg syscall (netbsd-arm64-cgo), const F_FSVOID ideal-int -pkg syscall (netbsd-arm64-cgo), const F_GETFD = 1 -pkg syscall (netbsd-arm64-cgo), const F_GETFD ideal-int -pkg syscall (netbsd-arm64-cgo), const F_GETFL = 3 -pkg syscall (netbsd-arm64-cgo), const F_GETFL ideal-int -pkg syscall (netbsd-arm64-cgo), const F_GETLK = 7 -pkg syscall (netbsd-arm64-cgo), const F_GETLK ideal-int -pkg syscall (netbsd-arm64-cgo), const F_GETNOSIGPIPE = 13 -pkg syscall (netbsd-arm64-cgo), const F_GETNOSIGPIPE ideal-int -pkg syscall (netbsd-arm64-cgo), const F_GETOWN = 5 -pkg syscall (netbsd-arm64-cgo), const F_GETOWN ideal-int -pkg syscall (netbsd-arm64-cgo), const F_MAXFD = 11 -pkg syscall (netbsd-arm64-cgo), const F_MAXFD ideal-int -pkg syscall (netbsd-arm64-cgo), const F_OK = 0 -pkg syscall (netbsd-arm64-cgo), const F_OK ideal-int -pkg syscall (netbsd-arm64-cgo), const F_PARAM_MASK = 4095 -pkg syscall (netbsd-arm64-cgo), const F_PARAM_MASK ideal-int -pkg syscall (netbsd-arm64-cgo), const F_PARAM_MAX = 4095 -pkg syscall (netbsd-arm64-cgo), const F_PARAM_MAX ideal-int -pkg syscall (netbsd-arm64-cgo), const F_RDLCK = 1 -pkg syscall (netbsd-arm64-cgo), const F_RDLCK ideal-int -pkg syscall (netbsd-arm64-cgo), const F_SETFD = 2 -pkg syscall (netbsd-arm64-cgo), const F_SETFD ideal-int -pkg syscall (netbsd-arm64-cgo), const F_SETFL = 4 -pkg syscall (netbsd-arm64-cgo), const F_SETFL ideal-int -pkg syscall (netbsd-arm64-cgo), const F_SETLK = 8 -pkg syscall (netbsd-arm64-cgo), const F_SETLK ideal-int -pkg syscall (netbsd-arm64-cgo), const F_SETLKW = 9 -pkg syscall (netbsd-arm64-cgo), const F_SETLKW ideal-int -pkg syscall (netbsd-arm64-cgo), const F_SETNOSIGPIPE = 14 -pkg syscall (netbsd-arm64-cgo), const F_SETNOSIGPIPE ideal-int -pkg syscall (netbsd-arm64-cgo), const F_SETOWN = 6 -pkg syscall (netbsd-arm64-cgo), const F_SETOWN ideal-int -pkg syscall (netbsd-arm64-cgo), const F_UNLCK = 2 -pkg syscall (netbsd-arm64-cgo), const F_UNLCK ideal-int -pkg syscall (netbsd-arm64-cgo), const F_WRLCK = 3 -pkg syscall (netbsd-arm64-cgo), const F_WRLCK ideal-int -pkg syscall (netbsd-arm64-cgo), const HUPCL = 16384 -pkg syscall (netbsd-arm64-cgo), const HUPCL ideal-int -pkg syscall (netbsd-arm64-cgo), const ICANON = 256 -pkg syscall (netbsd-arm64-cgo), const ICANON ideal-int -pkg syscall (netbsd-arm64-cgo), const ICMP6_FILTER = 18 -pkg syscall (netbsd-arm64-cgo), const ICMP6_FILTER ideal-int -pkg syscall (netbsd-arm64-cgo), const ICRNL = 256 -pkg syscall (netbsd-arm64-cgo), const ICRNL ideal-int -pkg syscall (netbsd-arm64-cgo), const IEXTEN = 1024 -pkg syscall (netbsd-arm64-cgo), const IEXTEN ideal-int -pkg syscall (netbsd-arm64-cgo), const IFAN_ARRIVAL = 0 -pkg syscall (netbsd-arm64-cgo), const IFAN_ARRIVAL ideal-int -pkg syscall (netbsd-arm64-cgo), const IFAN_DEPARTURE = 1 -pkg syscall (netbsd-arm64-cgo), const IFAN_DEPARTURE ideal-int -pkg syscall (netbsd-arm64-cgo), const IFA_ROUTE = 1 -pkg syscall (netbsd-arm64-cgo), const IFA_ROUTE ideal-int -pkg syscall (netbsd-arm64-cgo), const IFF_ALLMULTI = 512 -pkg syscall (netbsd-arm64-cgo), const IFF_ALLMULTI ideal-int -pkg syscall (netbsd-arm64-cgo), const IFF_CANTCHANGE = 36690 -pkg syscall (netbsd-arm64-cgo), const IFF_CANTCHANGE ideal-int -pkg syscall (netbsd-arm64-cgo), const IFF_DEBUG = 4 -pkg syscall (netbsd-arm64-cgo), const IFF_DEBUG ideal-int -pkg syscall (netbsd-arm64-cgo), const IFF_LINK0 = 4096 -pkg syscall (netbsd-arm64-cgo), const IFF_LINK0 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFF_LINK1 = 8192 -pkg syscall (netbsd-arm64-cgo), const IFF_LINK1 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFF_LINK2 = 16384 -pkg syscall (netbsd-arm64-cgo), const IFF_LINK2 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFF_LOOPBACK = 8 -pkg syscall (netbsd-arm64-cgo), const IFF_MULTICAST = 32768 -pkg syscall (netbsd-arm64-cgo), const IFF_NOARP = 128 -pkg syscall (netbsd-arm64-cgo), const IFF_NOARP ideal-int -pkg syscall (netbsd-arm64-cgo), const IFF_NOTRAILERS = 32 -pkg syscall (netbsd-arm64-cgo), const IFF_NOTRAILERS ideal-int -pkg syscall (netbsd-arm64-cgo), const IFF_OACTIVE = 1024 -pkg syscall (netbsd-arm64-cgo), const IFF_OACTIVE ideal-int -pkg syscall (netbsd-arm64-cgo), const IFF_POINTOPOINT = 16 -pkg syscall (netbsd-arm64-cgo), const IFF_POINTOPOINT ideal-int -pkg syscall (netbsd-arm64-cgo), const IFF_PROMISC = 256 -pkg syscall (netbsd-arm64-cgo), const IFF_PROMISC ideal-int -pkg syscall (netbsd-arm64-cgo), const IFF_RUNNING = 64 -pkg syscall (netbsd-arm64-cgo), const IFF_RUNNING ideal-int -pkg syscall (netbsd-arm64-cgo), const IFF_SIMPLEX = 2048 -pkg syscall (netbsd-arm64-cgo), const IFF_SIMPLEX ideal-int -pkg syscall (netbsd-arm64-cgo), const IFNAMSIZ = 16 -pkg syscall (netbsd-arm64-cgo), const IFNAMSIZ ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_1822 = 2 -pkg syscall (netbsd-arm64-cgo), const IFT_1822 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_A12MPPSWITCH = 130 -pkg syscall (netbsd-arm64-cgo), const IFT_A12MPPSWITCH ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_AAL2 = 187 -pkg syscall (netbsd-arm64-cgo), const IFT_AAL2 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_AAL5 = 49 -pkg syscall (netbsd-arm64-cgo), const IFT_AAL5 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_ADSL = 94 -pkg syscall (netbsd-arm64-cgo), const IFT_ADSL ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_AFLANE8023 = 59 -pkg syscall (netbsd-arm64-cgo), const IFT_AFLANE8023 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_AFLANE8025 = 60 -pkg syscall (netbsd-arm64-cgo), const IFT_AFLANE8025 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_ARAP = 88 -pkg syscall (netbsd-arm64-cgo), const IFT_ARAP ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_ARCNET = 35 -pkg syscall (netbsd-arm64-cgo), const IFT_ARCNET ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_ARCNETPLUS = 36 -pkg syscall (netbsd-arm64-cgo), const IFT_ARCNETPLUS ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_ASYNC = 84 -pkg syscall (netbsd-arm64-cgo), const IFT_ASYNC ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_ATM = 37 -pkg syscall (netbsd-arm64-cgo), const IFT_ATM ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_ATMDXI = 105 -pkg syscall (netbsd-arm64-cgo), const IFT_ATMDXI ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_ATMFUNI = 106 -pkg syscall (netbsd-arm64-cgo), const IFT_ATMFUNI ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_ATMIMA = 107 -pkg syscall (netbsd-arm64-cgo), const IFT_ATMIMA ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_ATMLOGICAL = 80 -pkg syscall (netbsd-arm64-cgo), const IFT_ATMLOGICAL ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_ATMRADIO = 189 -pkg syscall (netbsd-arm64-cgo), const IFT_ATMRADIO ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_ATMSUBINTERFACE = 134 -pkg syscall (netbsd-arm64-cgo), const IFT_ATMSUBINTERFACE ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_ATMVCIENDPT = 194 -pkg syscall (netbsd-arm64-cgo), const IFT_ATMVCIENDPT ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_ATMVIRTUAL = 149 -pkg syscall (netbsd-arm64-cgo), const IFT_ATMVIRTUAL ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_BGPPOLICYACCOUNTING = 162 -pkg syscall (netbsd-arm64-cgo), const IFT_BGPPOLICYACCOUNTING ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_BRIDGE = 209 -pkg syscall (netbsd-arm64-cgo), const IFT_BRIDGE ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_BSC = 83 -pkg syscall (netbsd-arm64-cgo), const IFT_BSC ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_CARP = 248 -pkg syscall (netbsd-arm64-cgo), const IFT_CARP ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_CCTEMUL = 61 -pkg syscall (netbsd-arm64-cgo), const IFT_CCTEMUL ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_CEPT = 19 -pkg syscall (netbsd-arm64-cgo), const IFT_CEPT ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_CES = 133 -pkg syscall (netbsd-arm64-cgo), const IFT_CES ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_CHANNEL = 70 -pkg syscall (netbsd-arm64-cgo), const IFT_CHANNEL ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_CNR = 85 -pkg syscall (netbsd-arm64-cgo), const IFT_CNR ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_COFFEE = 132 -pkg syscall (netbsd-arm64-cgo), const IFT_COFFEE ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_COMPOSITELINK = 155 -pkg syscall (netbsd-arm64-cgo), const IFT_COMPOSITELINK ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_DCN = 141 -pkg syscall (netbsd-arm64-cgo), const IFT_DCN ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_DIGITALPOWERLINE = 138 -pkg syscall (netbsd-arm64-cgo), const IFT_DIGITALPOWERLINE ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_DIGITALWRAPPEROVERHEADCHANNEL = 186 -pkg syscall (netbsd-arm64-cgo), const IFT_DIGITALWRAPPEROVERHEADCHANNEL ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_DLSW = 74 -pkg syscall (netbsd-arm64-cgo), const IFT_DLSW ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_DOCSCABLEDOWNSTREAM = 128 -pkg syscall (netbsd-arm64-cgo), const IFT_DOCSCABLEDOWNSTREAM ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_DOCSCABLEMACLAYER = 127 -pkg syscall (netbsd-arm64-cgo), const IFT_DOCSCABLEMACLAYER ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_DOCSCABLEUPSTREAM = 129 -pkg syscall (netbsd-arm64-cgo), const IFT_DOCSCABLEUPSTREAM ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_DOCSCABLEUPSTREAMCHANNEL = 205 -pkg syscall (netbsd-arm64-cgo), const IFT_DOCSCABLEUPSTREAMCHANNEL ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_DS0 = 81 -pkg syscall (netbsd-arm64-cgo), const IFT_DS0 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_DS0BUNDLE = 82 -pkg syscall (netbsd-arm64-cgo), const IFT_DS0BUNDLE ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_DS1FDL = 170 -pkg syscall (netbsd-arm64-cgo), const IFT_DS1FDL ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_DS3 = 30 -pkg syscall (netbsd-arm64-cgo), const IFT_DS3 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_DTM = 140 -pkg syscall (netbsd-arm64-cgo), const IFT_DTM ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_DVBASILN = 172 -pkg syscall (netbsd-arm64-cgo), const IFT_DVBASILN ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_DVBASIOUT = 173 -pkg syscall (netbsd-arm64-cgo), const IFT_DVBASIOUT ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_DVBRCCDOWNSTREAM = 147 -pkg syscall (netbsd-arm64-cgo), const IFT_DVBRCCDOWNSTREAM ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_DVBRCCMACLAYER = 146 -pkg syscall (netbsd-arm64-cgo), const IFT_DVBRCCMACLAYER ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_DVBRCCUPSTREAM = 148 -pkg syscall (netbsd-arm64-cgo), const IFT_DVBRCCUPSTREAM ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_ECONET = 206 -pkg syscall (netbsd-arm64-cgo), const IFT_ECONET ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_EON = 25 -pkg syscall (netbsd-arm64-cgo), const IFT_EON ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_EPLRS = 87 -pkg syscall (netbsd-arm64-cgo), const IFT_EPLRS ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_ESCON = 73 -pkg syscall (netbsd-arm64-cgo), const IFT_ESCON ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_ETHER = 6 -pkg syscall (netbsd-arm64-cgo), const IFT_ETHER ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_FAITH = 242 -pkg syscall (netbsd-arm64-cgo), const IFT_FAITH ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_FAST = 125 -pkg syscall (netbsd-arm64-cgo), const IFT_FAST ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_FASTETHER = 62 -pkg syscall (netbsd-arm64-cgo), const IFT_FASTETHER ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_FASTETHERFX = 69 -pkg syscall (netbsd-arm64-cgo), const IFT_FASTETHERFX ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_FDDI = 15 -pkg syscall (netbsd-arm64-cgo), const IFT_FDDI ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_FIBRECHANNEL = 56 -pkg syscall (netbsd-arm64-cgo), const IFT_FIBRECHANNEL ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_FRAMERELAYINTERCONNECT = 58 -pkg syscall (netbsd-arm64-cgo), const IFT_FRAMERELAYINTERCONNECT ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_FRAMERELAYMPI = 92 -pkg syscall (netbsd-arm64-cgo), const IFT_FRAMERELAYMPI ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_FRDLCIENDPT = 193 -pkg syscall (netbsd-arm64-cgo), const IFT_FRDLCIENDPT ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_FRELAY = 32 -pkg syscall (netbsd-arm64-cgo), const IFT_FRELAY ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_FRELAYDCE = 44 -pkg syscall (netbsd-arm64-cgo), const IFT_FRELAYDCE ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_FRF16MFRBUNDLE = 163 -pkg syscall (netbsd-arm64-cgo), const IFT_FRF16MFRBUNDLE ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_FRFORWARD = 158 -pkg syscall (netbsd-arm64-cgo), const IFT_FRFORWARD ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_G703AT2MB = 67 -pkg syscall (netbsd-arm64-cgo), const IFT_G703AT2MB ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_G703AT64K = 66 -pkg syscall (netbsd-arm64-cgo), const IFT_G703AT64K ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_GIF = 240 -pkg syscall (netbsd-arm64-cgo), const IFT_GIF ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_GIGABITETHERNET = 117 -pkg syscall (netbsd-arm64-cgo), const IFT_GIGABITETHERNET ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_GR303IDT = 178 -pkg syscall (netbsd-arm64-cgo), const IFT_GR303IDT ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_GR303RDT = 177 -pkg syscall (netbsd-arm64-cgo), const IFT_GR303RDT ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_H323GATEKEEPER = 164 -pkg syscall (netbsd-arm64-cgo), const IFT_H323GATEKEEPER ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_H323PROXY = 165 -pkg syscall (netbsd-arm64-cgo), const IFT_H323PROXY ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_HDH1822 = 3 -pkg syscall (netbsd-arm64-cgo), const IFT_HDH1822 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_HDLC = 118 -pkg syscall (netbsd-arm64-cgo), const IFT_HDLC ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_HDSL2 = 168 -pkg syscall (netbsd-arm64-cgo), const IFT_HDSL2 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_HIPERLAN2 = 183 -pkg syscall (netbsd-arm64-cgo), const IFT_HIPERLAN2 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_HIPPI = 47 -pkg syscall (netbsd-arm64-cgo), const IFT_HIPPI ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_HIPPIINTERFACE = 57 -pkg syscall (netbsd-arm64-cgo), const IFT_HIPPIINTERFACE ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_HOSTPAD = 90 -pkg syscall (netbsd-arm64-cgo), const IFT_HOSTPAD ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_HSSI = 46 -pkg syscall (netbsd-arm64-cgo), const IFT_HSSI ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_HY = 14 -pkg syscall (netbsd-arm64-cgo), const IFT_HY ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_IBM370PARCHAN = 72 -pkg syscall (netbsd-arm64-cgo), const IFT_IBM370PARCHAN ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_IDSL = 154 -pkg syscall (netbsd-arm64-cgo), const IFT_IDSL ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_IEEE1394 = 144 -pkg syscall (netbsd-arm64-cgo), const IFT_IEEE1394 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_IEEE80211 = 71 -pkg syscall (netbsd-arm64-cgo), const IFT_IEEE80211 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_IEEE80212 = 55 -pkg syscall (netbsd-arm64-cgo), const IFT_IEEE80212 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_IEEE8023ADLAG = 161 -pkg syscall (netbsd-arm64-cgo), const IFT_IEEE8023ADLAG ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_IFGSN = 145 -pkg syscall (netbsd-arm64-cgo), const IFT_IFGSN ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_IMT = 190 -pkg syscall (netbsd-arm64-cgo), const IFT_IMT ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_INFINIBAND = 199 -pkg syscall (netbsd-arm64-cgo), const IFT_INFINIBAND ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_INTERLEAVE = 124 -pkg syscall (netbsd-arm64-cgo), const IFT_INTERLEAVE ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_IP = 126 -pkg syscall (netbsd-arm64-cgo), const IFT_IP ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_IPFORWARD = 142 -pkg syscall (netbsd-arm64-cgo), const IFT_IPFORWARD ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_IPOVERATM = 114 -pkg syscall (netbsd-arm64-cgo), const IFT_IPOVERATM ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_IPOVERCDLC = 109 -pkg syscall (netbsd-arm64-cgo), const IFT_IPOVERCDLC ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_IPOVERCLAW = 110 -pkg syscall (netbsd-arm64-cgo), const IFT_IPOVERCLAW ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_IPSWITCH = 78 -pkg syscall (netbsd-arm64-cgo), const IFT_IPSWITCH ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_ISDN = 63 -pkg syscall (netbsd-arm64-cgo), const IFT_ISDN ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_ISDNBASIC = 20 -pkg syscall (netbsd-arm64-cgo), const IFT_ISDNBASIC ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_ISDNPRIMARY = 21 -pkg syscall (netbsd-arm64-cgo), const IFT_ISDNPRIMARY ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_ISDNS = 75 -pkg syscall (netbsd-arm64-cgo), const IFT_ISDNS ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_ISDNU = 76 -pkg syscall (netbsd-arm64-cgo), const IFT_ISDNU ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_ISO88022LLC = 41 -pkg syscall (netbsd-arm64-cgo), const IFT_ISO88022LLC ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_ISO88023 = 7 -pkg syscall (netbsd-arm64-cgo), const IFT_ISO88023 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_ISO88024 = 8 -pkg syscall (netbsd-arm64-cgo), const IFT_ISO88024 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_ISO88025 = 9 -pkg syscall (netbsd-arm64-cgo), const IFT_ISO88025 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_ISO88025CRFPINT = 98 -pkg syscall (netbsd-arm64-cgo), const IFT_ISO88025CRFPINT ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_ISO88025DTR = 86 -pkg syscall (netbsd-arm64-cgo), const IFT_ISO88025DTR ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_ISO88025FIBER = 115 -pkg syscall (netbsd-arm64-cgo), const IFT_ISO88025FIBER ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_ISO88026 = 10 -pkg syscall (netbsd-arm64-cgo), const IFT_ISO88026 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_ISUP = 179 -pkg syscall (netbsd-arm64-cgo), const IFT_ISUP ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_L2VLAN = 135 -pkg syscall (netbsd-arm64-cgo), const IFT_L2VLAN ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_L3IPVLAN = 136 -pkg syscall (netbsd-arm64-cgo), const IFT_L3IPVLAN ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_L3IPXVLAN = 137 -pkg syscall (netbsd-arm64-cgo), const IFT_L3IPXVLAN ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_LAPB = 16 -pkg syscall (netbsd-arm64-cgo), const IFT_LAPB ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_LAPD = 77 -pkg syscall (netbsd-arm64-cgo), const IFT_LAPD ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_LAPF = 119 -pkg syscall (netbsd-arm64-cgo), const IFT_LAPF ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_LINEGROUP = 210 -pkg syscall (netbsd-arm64-cgo), const IFT_LINEGROUP ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_LOCALTALK = 42 -pkg syscall (netbsd-arm64-cgo), const IFT_LOCALTALK ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_LOOP = 24 -pkg syscall (netbsd-arm64-cgo), const IFT_LOOP ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_MEDIAMAILOVERIP = 139 -pkg syscall (netbsd-arm64-cgo), const IFT_MEDIAMAILOVERIP ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_MFSIGLINK = 167 -pkg syscall (netbsd-arm64-cgo), const IFT_MFSIGLINK ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_MIOX25 = 38 -pkg syscall (netbsd-arm64-cgo), const IFT_MIOX25 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_MODEM = 48 -pkg syscall (netbsd-arm64-cgo), const IFT_MODEM ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_MPC = 113 -pkg syscall (netbsd-arm64-cgo), const IFT_MPC ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_MPLS = 166 -pkg syscall (netbsd-arm64-cgo), const IFT_MPLS ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_MPLSTUNNEL = 150 -pkg syscall (netbsd-arm64-cgo), const IFT_MPLSTUNNEL ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_MSDSL = 143 -pkg syscall (netbsd-arm64-cgo), const IFT_MSDSL ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_MVL = 191 -pkg syscall (netbsd-arm64-cgo), const IFT_MVL ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_MYRINET = 99 -pkg syscall (netbsd-arm64-cgo), const IFT_MYRINET ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_NFAS = 175 -pkg syscall (netbsd-arm64-cgo), const IFT_NFAS ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_NSIP = 27 -pkg syscall (netbsd-arm64-cgo), const IFT_NSIP ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_OPTICALCHANNEL = 195 -pkg syscall (netbsd-arm64-cgo), const IFT_OPTICALCHANNEL ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_OPTICALTRANSPORT = 196 -pkg syscall (netbsd-arm64-cgo), const IFT_OPTICALTRANSPORT ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_OTHER = 1 -pkg syscall (netbsd-arm64-cgo), const IFT_OTHER ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_P10 = 12 -pkg syscall (netbsd-arm64-cgo), const IFT_P10 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_P80 = 13 -pkg syscall (netbsd-arm64-cgo), const IFT_P80 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_PARA = 34 -pkg syscall (netbsd-arm64-cgo), const IFT_PARA ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_PFLOG = 245 -pkg syscall (netbsd-arm64-cgo), const IFT_PFLOG ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_PFSYNC = 246 -pkg syscall (netbsd-arm64-cgo), const IFT_PFSYNC ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_PLC = 174 -pkg syscall (netbsd-arm64-cgo), const IFT_PLC ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_PON155 = 207 -pkg syscall (netbsd-arm64-cgo), const IFT_PON155 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_PON622 = 208 -pkg syscall (netbsd-arm64-cgo), const IFT_PON622 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_POS = 171 -pkg syscall (netbsd-arm64-cgo), const IFT_POS ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_PPP = 23 -pkg syscall (netbsd-arm64-cgo), const IFT_PPP ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_PPPMULTILINKBUNDLE = 108 -pkg syscall (netbsd-arm64-cgo), const IFT_PPPMULTILINKBUNDLE ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_PROPATM = 197 -pkg syscall (netbsd-arm64-cgo), const IFT_PROPATM ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_PROPBWAP2MP = 184 -pkg syscall (netbsd-arm64-cgo), const IFT_PROPBWAP2MP ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_PROPCNLS = 89 -pkg syscall (netbsd-arm64-cgo), const IFT_PROPCNLS ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_PROPDOCSWIRELESSDOWNSTREAM = 181 -pkg syscall (netbsd-arm64-cgo), const IFT_PROPDOCSWIRELESSDOWNSTREAM ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_PROPDOCSWIRELESSMACLAYER = 180 -pkg syscall (netbsd-arm64-cgo), const IFT_PROPDOCSWIRELESSMACLAYER ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_PROPDOCSWIRELESSUPSTREAM = 182 -pkg syscall (netbsd-arm64-cgo), const IFT_PROPDOCSWIRELESSUPSTREAM ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_PROPMUX = 54 -pkg syscall (netbsd-arm64-cgo), const IFT_PROPMUX ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_PROPVIRTUAL = 53 -pkg syscall (netbsd-arm64-cgo), const IFT_PROPVIRTUAL ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_PROPWIRELESSP2P = 157 -pkg syscall (netbsd-arm64-cgo), const IFT_PROPWIRELESSP2P ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_PTPSERIAL = 22 -pkg syscall (netbsd-arm64-cgo), const IFT_PTPSERIAL ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_PVC = 241 -pkg syscall (netbsd-arm64-cgo), const IFT_PVC ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_Q2931 = 201 -pkg syscall (netbsd-arm64-cgo), const IFT_Q2931 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_QLLC = 68 -pkg syscall (netbsd-arm64-cgo), const IFT_QLLC ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_RADIOMAC = 188 -pkg syscall (netbsd-arm64-cgo), const IFT_RADIOMAC ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_RADSL = 95 -pkg syscall (netbsd-arm64-cgo), const IFT_RADSL ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_REACHDSL = 192 -pkg syscall (netbsd-arm64-cgo), const IFT_REACHDSL ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_RFC1483 = 159 -pkg syscall (netbsd-arm64-cgo), const IFT_RFC1483 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_RS232 = 33 -pkg syscall (netbsd-arm64-cgo), const IFT_RS232 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_RSRB = 79 -pkg syscall (netbsd-arm64-cgo), const IFT_RSRB ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_SDLC = 17 -pkg syscall (netbsd-arm64-cgo), const IFT_SDLC ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_SDSL = 96 -pkg syscall (netbsd-arm64-cgo), const IFT_SDSL ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_SHDSL = 169 -pkg syscall (netbsd-arm64-cgo), const IFT_SHDSL ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_SIP = 31 -pkg syscall (netbsd-arm64-cgo), const IFT_SIP ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_SIPSIG = 204 -pkg syscall (netbsd-arm64-cgo), const IFT_SIPSIG ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_SIPTG = 203 -pkg syscall (netbsd-arm64-cgo), const IFT_SIPTG ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_SLIP = 28 -pkg syscall (netbsd-arm64-cgo), const IFT_SLIP ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_SMDSDXI = 43 -pkg syscall (netbsd-arm64-cgo), const IFT_SMDSDXI ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_SMDSICIP = 52 -pkg syscall (netbsd-arm64-cgo), const IFT_SMDSICIP ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_SONET = 39 -pkg syscall (netbsd-arm64-cgo), const IFT_SONET ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_SONETOVERHEADCHANNEL = 185 -pkg syscall (netbsd-arm64-cgo), const IFT_SONETOVERHEADCHANNEL ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_SONETPATH = 50 -pkg syscall (netbsd-arm64-cgo), const IFT_SONETPATH ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_SONETVT = 51 -pkg syscall (netbsd-arm64-cgo), const IFT_SONETVT ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_SRP = 151 -pkg syscall (netbsd-arm64-cgo), const IFT_SRP ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_SS7SIGLINK = 156 -pkg syscall (netbsd-arm64-cgo), const IFT_SS7SIGLINK ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_STACKTOSTACK = 111 -pkg syscall (netbsd-arm64-cgo), const IFT_STACKTOSTACK ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_STARLAN = 11 -pkg syscall (netbsd-arm64-cgo), const IFT_STARLAN ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_STF = 215 -pkg syscall (netbsd-arm64-cgo), const IFT_STF ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_T1 = 18 -pkg syscall (netbsd-arm64-cgo), const IFT_T1 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_TDLC = 116 -pkg syscall (netbsd-arm64-cgo), const IFT_TDLC ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_TELINK = 200 -pkg syscall (netbsd-arm64-cgo), const IFT_TELINK ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_TERMPAD = 91 -pkg syscall (netbsd-arm64-cgo), const IFT_TERMPAD ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_TR008 = 176 -pkg syscall (netbsd-arm64-cgo), const IFT_TR008 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_TRANSPHDLC = 123 -pkg syscall (netbsd-arm64-cgo), const IFT_TRANSPHDLC ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_TUNNEL = 131 -pkg syscall (netbsd-arm64-cgo), const IFT_TUNNEL ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_ULTRA = 29 -pkg syscall (netbsd-arm64-cgo), const IFT_ULTRA ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_USB = 160 -pkg syscall (netbsd-arm64-cgo), const IFT_USB ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_V11 = 64 -pkg syscall (netbsd-arm64-cgo), const IFT_V11 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_V35 = 45 -pkg syscall (netbsd-arm64-cgo), const IFT_V35 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_V36 = 65 -pkg syscall (netbsd-arm64-cgo), const IFT_V36 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_V37 = 120 -pkg syscall (netbsd-arm64-cgo), const IFT_V37 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_VDSL = 97 -pkg syscall (netbsd-arm64-cgo), const IFT_VDSL ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_VIRTUALIPADDRESS = 112 -pkg syscall (netbsd-arm64-cgo), const IFT_VIRTUALIPADDRESS ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_VIRTUALTG = 202 -pkg syscall (netbsd-arm64-cgo), const IFT_VIRTUALTG ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_VOICEDID = 213 -pkg syscall (netbsd-arm64-cgo), const IFT_VOICEDID ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_VOICEEM = 100 -pkg syscall (netbsd-arm64-cgo), const IFT_VOICEEM ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_VOICEEMFGD = 211 -pkg syscall (netbsd-arm64-cgo), const IFT_VOICEEMFGD ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_VOICEENCAP = 103 -pkg syscall (netbsd-arm64-cgo), const IFT_VOICEENCAP ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_VOICEFGDEANA = 212 -pkg syscall (netbsd-arm64-cgo), const IFT_VOICEFGDEANA ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_VOICEFXO = 101 -pkg syscall (netbsd-arm64-cgo), const IFT_VOICEFXO ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_VOICEFXS = 102 -pkg syscall (netbsd-arm64-cgo), const IFT_VOICEFXS ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_VOICEOVERATM = 152 -pkg syscall (netbsd-arm64-cgo), const IFT_VOICEOVERATM ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_VOICEOVERCABLE = 198 -pkg syscall (netbsd-arm64-cgo), const IFT_VOICEOVERCABLE ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_VOICEOVERFRAMERELAY = 153 -pkg syscall (netbsd-arm64-cgo), const IFT_VOICEOVERFRAMERELAY ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_VOICEOVERIP = 104 -pkg syscall (netbsd-arm64-cgo), const IFT_VOICEOVERIP ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_X213 = 93 -pkg syscall (netbsd-arm64-cgo), const IFT_X213 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_X25 = 5 -pkg syscall (netbsd-arm64-cgo), const IFT_X25 ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_X25DDN = 4 -pkg syscall (netbsd-arm64-cgo), const IFT_X25DDN ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_X25HUNTGROUP = 122 -pkg syscall (netbsd-arm64-cgo), const IFT_X25HUNTGROUP ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_X25MLP = 121 -pkg syscall (netbsd-arm64-cgo), const IFT_X25MLP ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_X25PLE = 40 -pkg syscall (netbsd-arm64-cgo), const IFT_X25PLE ideal-int -pkg syscall (netbsd-arm64-cgo), const IFT_XETHER = 26 -pkg syscall (netbsd-arm64-cgo), const IFT_XETHER ideal-int -pkg syscall (netbsd-arm64-cgo), const IGNBRK = 1 -pkg syscall (netbsd-arm64-cgo), const IGNBRK ideal-int -pkg syscall (netbsd-arm64-cgo), const IGNCR = 128 -pkg syscall (netbsd-arm64-cgo), const IGNCR ideal-int -pkg syscall (netbsd-arm64-cgo), const IGNPAR = 4 -pkg syscall (netbsd-arm64-cgo), const IGNPAR ideal-int -pkg syscall (netbsd-arm64-cgo), const IMAXBEL = 8192 -pkg syscall (netbsd-arm64-cgo), const IMAXBEL ideal-int -pkg syscall (netbsd-arm64-cgo), const INLCR = 64 -pkg syscall (netbsd-arm64-cgo), const INLCR ideal-int -pkg syscall (netbsd-arm64-cgo), const INPCK = 16 -pkg syscall (netbsd-arm64-cgo), const INPCK ideal-int -pkg syscall (netbsd-arm64-cgo), const IN_CLASSA_HOST = 16777215 -pkg syscall (netbsd-arm64-cgo), const IN_CLASSA_HOST ideal-int -pkg syscall (netbsd-arm64-cgo), const IN_CLASSA_MAX = 128 -pkg syscall (netbsd-arm64-cgo), const IN_CLASSA_MAX ideal-int -pkg syscall (netbsd-arm64-cgo), const IN_CLASSA_NET = 4278190080 -pkg syscall (netbsd-arm64-cgo), const IN_CLASSA_NET ideal-int -pkg syscall (netbsd-arm64-cgo), const IN_CLASSA_NSHIFT = 24 -pkg syscall (netbsd-arm64-cgo), const IN_CLASSA_NSHIFT ideal-int -pkg syscall (netbsd-arm64-cgo), const IN_CLASSB_HOST = 65535 -pkg syscall (netbsd-arm64-cgo), const IN_CLASSB_HOST ideal-int -pkg syscall (netbsd-arm64-cgo), const IN_CLASSB_MAX = 65536 -pkg syscall (netbsd-arm64-cgo), const IN_CLASSB_MAX ideal-int -pkg syscall (netbsd-arm64-cgo), const IN_CLASSB_NET = 4294901760 -pkg syscall (netbsd-arm64-cgo), const IN_CLASSB_NET ideal-int -pkg syscall (netbsd-arm64-cgo), const IN_CLASSB_NSHIFT = 16 -pkg syscall (netbsd-arm64-cgo), const IN_CLASSB_NSHIFT ideal-int -pkg syscall (netbsd-arm64-cgo), const IN_CLASSC_HOST = 255 -pkg syscall (netbsd-arm64-cgo), const IN_CLASSC_HOST ideal-int -pkg syscall (netbsd-arm64-cgo), const IN_CLASSC_NET = 4294967040 -pkg syscall (netbsd-arm64-cgo), const IN_CLASSC_NET ideal-int -pkg syscall (netbsd-arm64-cgo), const IN_CLASSC_NSHIFT = 8 -pkg syscall (netbsd-arm64-cgo), const IN_CLASSC_NSHIFT ideal-int -pkg syscall (netbsd-arm64-cgo), const IN_CLASSD_HOST = 268435455 -pkg syscall (netbsd-arm64-cgo), const IN_CLASSD_HOST ideal-int -pkg syscall (netbsd-arm64-cgo), const IN_CLASSD_NET = 4026531840 -pkg syscall (netbsd-arm64-cgo), const IN_CLASSD_NET ideal-int -pkg syscall (netbsd-arm64-cgo), const IN_CLASSD_NSHIFT = 28 -pkg syscall (netbsd-arm64-cgo), const IN_CLASSD_NSHIFT ideal-int -pkg syscall (netbsd-arm64-cgo), const IN_LOOPBACKNET = 127 -pkg syscall (netbsd-arm64-cgo), const IN_LOOPBACKNET ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_AH = 51 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_AH ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_CARP = 112 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_CARP ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_DONE = 257 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_DONE ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_DSTOPTS = 60 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_DSTOPTS ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_EGP = 8 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_EGP ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_ENCAP = 98 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_ENCAP ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_EON = 80 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_EON ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_ESP = 50 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_ESP ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_ETHERIP = 97 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_ETHERIP ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_FRAGMENT = 44 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_FRAGMENT ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_GGP = 3 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_GGP ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_GRE = 47 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_GRE ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_HOPOPTS = 0 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_HOPOPTS ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_ICMP = 1 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_ICMP ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_ICMPV6 = 58 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_ICMPV6 ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_IDP = 22 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_IDP ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_IGMP = 2 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_IGMP ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_IPCOMP = 108 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_IPCOMP ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_IPIP = 4 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_IPIP ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_IPV4 = 4 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_IPV4 ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_IPV6_ICMP = 58 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_IPV6_ICMP ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_MAX = 256 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_MAX ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_MAXID = 52 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_MAXID ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_MOBILE = 55 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_MOBILE ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_NONE = 59 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_NONE ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_PFSYNC = 240 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_PFSYNC ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_PIM = 103 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_PIM ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_PUP = 12 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_PUP ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_RAW = 255 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_RAW ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_ROUTING = 43 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_ROUTING ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_RSVP = 46 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_RSVP ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_TP = 29 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_TP ideal-int -pkg syscall (netbsd-arm64-cgo), const IPPROTO_VRRP = 112 -pkg syscall (netbsd-arm64-cgo), const IPPROTO_VRRP ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_CHECKSUM = 26 -pkg syscall (netbsd-arm64-cgo), const IPV6_CHECKSUM ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_DEFAULT_MULTICAST_HOPS = 1 -pkg syscall (netbsd-arm64-cgo), const IPV6_DEFAULT_MULTICAST_HOPS ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_DEFAULT_MULTICAST_LOOP = 1 -pkg syscall (netbsd-arm64-cgo), const IPV6_DEFAULT_MULTICAST_LOOP ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_DEFHLIM = 64 -pkg syscall (netbsd-arm64-cgo), const IPV6_DEFHLIM ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_DONTFRAG = 62 -pkg syscall (netbsd-arm64-cgo), const IPV6_DONTFRAG ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_DSTOPTS = 50 -pkg syscall (netbsd-arm64-cgo), const IPV6_DSTOPTS ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_FAITH = 29 -pkg syscall (netbsd-arm64-cgo), const IPV6_FAITH ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_FLOWINFO_MASK = 4294967055 -pkg syscall (netbsd-arm64-cgo), const IPV6_FLOWINFO_MASK ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_FLOWLABEL_MASK = 4294905600 -pkg syscall (netbsd-arm64-cgo), const IPV6_FLOWLABEL_MASK ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_FRAGTTL = 120 -pkg syscall (netbsd-arm64-cgo), const IPV6_FRAGTTL ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_HLIMDEC = 1 -pkg syscall (netbsd-arm64-cgo), const IPV6_HLIMDEC ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_HOPLIMIT = 47 -pkg syscall (netbsd-arm64-cgo), const IPV6_HOPLIMIT ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_HOPOPTS = 49 -pkg syscall (netbsd-arm64-cgo), const IPV6_HOPOPTS ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_IPSEC_POLICY = 28 -pkg syscall (netbsd-arm64-cgo), const IPV6_IPSEC_POLICY ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_JOIN_GROUP = 12 -pkg syscall (netbsd-arm64-cgo), const IPV6_LEAVE_GROUP = 13 -pkg syscall (netbsd-arm64-cgo), const IPV6_MAXHLIM = 255 -pkg syscall (netbsd-arm64-cgo), const IPV6_MAXHLIM ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_MAXPACKET = 65535 -pkg syscall (netbsd-arm64-cgo), const IPV6_MAXPACKET ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_MMTU = 1280 -pkg syscall (netbsd-arm64-cgo), const IPV6_MMTU ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_MULTICAST_HOPS = 10 -pkg syscall (netbsd-arm64-cgo), const IPV6_MULTICAST_IF = 9 -pkg syscall (netbsd-arm64-cgo), const IPV6_MULTICAST_LOOP = 11 -pkg syscall (netbsd-arm64-cgo), const IPV6_NEXTHOP = 48 -pkg syscall (netbsd-arm64-cgo), const IPV6_NEXTHOP ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_PATHMTU = 44 -pkg syscall (netbsd-arm64-cgo), const IPV6_PATHMTU ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_PKTINFO = 46 -pkg syscall (netbsd-arm64-cgo), const IPV6_PKTINFO ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_PORTRANGE = 14 -pkg syscall (netbsd-arm64-cgo), const IPV6_PORTRANGE ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_PORTRANGE_DEFAULT = 0 -pkg syscall (netbsd-arm64-cgo), const IPV6_PORTRANGE_DEFAULT ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_PORTRANGE_HIGH = 1 -pkg syscall (netbsd-arm64-cgo), const IPV6_PORTRANGE_HIGH ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_PORTRANGE_LOW = 2 -pkg syscall (netbsd-arm64-cgo), const IPV6_PORTRANGE_LOW ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_RECVDSTOPTS = 40 -pkg syscall (netbsd-arm64-cgo), const IPV6_RECVDSTOPTS ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_RECVHOPLIMIT = 37 -pkg syscall (netbsd-arm64-cgo), const IPV6_RECVHOPLIMIT ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_RECVHOPOPTS = 39 -pkg syscall (netbsd-arm64-cgo), const IPV6_RECVHOPOPTS ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_RECVPATHMTU = 43 -pkg syscall (netbsd-arm64-cgo), const IPV6_RECVPATHMTU ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_RECVPKTINFO = 36 -pkg syscall (netbsd-arm64-cgo), const IPV6_RECVPKTINFO ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_RECVRTHDR = 38 -pkg syscall (netbsd-arm64-cgo), const IPV6_RECVRTHDR ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_RECVTCLASS = 57 -pkg syscall (netbsd-arm64-cgo), const IPV6_RECVTCLASS ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_RTHDR = 51 -pkg syscall (netbsd-arm64-cgo), const IPV6_RTHDR ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_RTHDRDSTOPTS = 35 -pkg syscall (netbsd-arm64-cgo), const IPV6_RTHDRDSTOPTS ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_RTHDR_LOOSE = 0 -pkg syscall (netbsd-arm64-cgo), const IPV6_RTHDR_LOOSE ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_RTHDR_STRICT = 1 -pkg syscall (netbsd-arm64-cgo), const IPV6_RTHDR_STRICT ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_RTHDR_TYPE_0 = 0 -pkg syscall (netbsd-arm64-cgo), const IPV6_RTHDR_TYPE_0 ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_SOCKOPT_RESERVED1 = 3 -pkg syscall (netbsd-arm64-cgo), const IPV6_SOCKOPT_RESERVED1 ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_TCLASS = 61 -pkg syscall (netbsd-arm64-cgo), const IPV6_TCLASS ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_UNICAST_HOPS = 4 -pkg syscall (netbsd-arm64-cgo), const IPV6_USE_MIN_MTU = 42 -pkg syscall (netbsd-arm64-cgo), const IPV6_USE_MIN_MTU ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_V6ONLY = 27 -pkg syscall (netbsd-arm64-cgo), const IPV6_VERSION = 96 -pkg syscall (netbsd-arm64-cgo), const IPV6_VERSION ideal-int -pkg syscall (netbsd-arm64-cgo), const IPV6_VERSION_MASK = 240 -pkg syscall (netbsd-arm64-cgo), const IPV6_VERSION_MASK ideal-int -pkg syscall (netbsd-arm64-cgo), const IP_ADD_MEMBERSHIP = 12 -pkg syscall (netbsd-arm64-cgo), const IP_DEFAULT_MULTICAST_LOOP = 1 -pkg syscall (netbsd-arm64-cgo), const IP_DEFAULT_MULTICAST_LOOP ideal-int -pkg syscall (netbsd-arm64-cgo), const IP_DEFAULT_MULTICAST_TTL = 1 -pkg syscall (netbsd-arm64-cgo), const IP_DEFAULT_MULTICAST_TTL ideal-int -pkg syscall (netbsd-arm64-cgo), const IP_DF = 16384 -pkg syscall (netbsd-arm64-cgo), const IP_DF ideal-int -pkg syscall (netbsd-arm64-cgo), const IP_DROP_MEMBERSHIP = 13 -pkg syscall (netbsd-arm64-cgo), const IP_EF = 32768 -pkg syscall (netbsd-arm64-cgo), const IP_EF ideal-int -pkg syscall (netbsd-arm64-cgo), const IP_ERRORMTU = 21 -pkg syscall (netbsd-arm64-cgo), const IP_ERRORMTU ideal-int -pkg syscall (netbsd-arm64-cgo), const IP_HDRINCL = 2 -pkg syscall (netbsd-arm64-cgo), const IP_HDRINCL ideal-int -pkg syscall (netbsd-arm64-cgo), const IP_IPSEC_POLICY = 22 -pkg syscall (netbsd-arm64-cgo), const IP_IPSEC_POLICY ideal-int -pkg syscall (netbsd-arm64-cgo), const IP_MAXPACKET = 65535 -pkg syscall (netbsd-arm64-cgo), const IP_MAXPACKET ideal-int -pkg syscall (netbsd-arm64-cgo), const IP_MAX_MEMBERSHIPS = 20 -pkg syscall (netbsd-arm64-cgo), const IP_MAX_MEMBERSHIPS ideal-int -pkg syscall (netbsd-arm64-cgo), const IP_MF = 8192 -pkg syscall (netbsd-arm64-cgo), const IP_MF ideal-int -pkg syscall (netbsd-arm64-cgo), const IP_MINFRAGSIZE = 69 -pkg syscall (netbsd-arm64-cgo), const IP_MINFRAGSIZE ideal-int -pkg syscall (netbsd-arm64-cgo), const IP_MINTTL = 24 -pkg syscall (netbsd-arm64-cgo), const IP_MINTTL ideal-int -pkg syscall (netbsd-arm64-cgo), const IP_MSS = 576 -pkg syscall (netbsd-arm64-cgo), const IP_MSS ideal-int -pkg syscall (netbsd-arm64-cgo), const IP_MULTICAST_IF = 9 -pkg syscall (netbsd-arm64-cgo), const IP_MULTICAST_LOOP = 11 -pkg syscall (netbsd-arm64-cgo), const IP_MULTICAST_TTL = 10 -pkg syscall (netbsd-arm64-cgo), const IP_OFFMASK = 8191 -pkg syscall (netbsd-arm64-cgo), const IP_OFFMASK ideal-int -pkg syscall (netbsd-arm64-cgo), const IP_OPTIONS = 1 -pkg syscall (netbsd-arm64-cgo), const IP_OPTIONS ideal-int -pkg syscall (netbsd-arm64-cgo), const IP_PORTRANGE = 19 -pkg syscall (netbsd-arm64-cgo), const IP_PORTRANGE ideal-int -pkg syscall (netbsd-arm64-cgo), const IP_PORTRANGE_DEFAULT = 0 -pkg syscall (netbsd-arm64-cgo), const IP_PORTRANGE_DEFAULT ideal-int -pkg syscall (netbsd-arm64-cgo), const IP_PORTRANGE_HIGH = 1 -pkg syscall (netbsd-arm64-cgo), const IP_PORTRANGE_HIGH ideal-int -pkg syscall (netbsd-arm64-cgo), const IP_PORTRANGE_LOW = 2 -pkg syscall (netbsd-arm64-cgo), const IP_PORTRANGE_LOW ideal-int -pkg syscall (netbsd-arm64-cgo), const IP_RECVDSTADDR = 7 -pkg syscall (netbsd-arm64-cgo), const IP_RECVDSTADDR ideal-int -pkg syscall (netbsd-arm64-cgo), const IP_RECVIF = 20 -pkg syscall (netbsd-arm64-cgo), const IP_RECVIF ideal-int -pkg syscall (netbsd-arm64-cgo), const IP_RECVOPTS = 5 -pkg syscall (netbsd-arm64-cgo), const IP_RECVOPTS ideal-int -pkg syscall (netbsd-arm64-cgo), const IP_RECVRETOPTS = 6 -pkg syscall (netbsd-arm64-cgo), const IP_RECVRETOPTS ideal-int -pkg syscall (netbsd-arm64-cgo), const IP_RECVTTL = 23 -pkg syscall (netbsd-arm64-cgo), const IP_RECVTTL ideal-int -pkg syscall (netbsd-arm64-cgo), const IP_RETOPTS = 8 -pkg syscall (netbsd-arm64-cgo), const IP_RETOPTS ideal-int -pkg syscall (netbsd-arm64-cgo), const IP_RF = 32768 -pkg syscall (netbsd-arm64-cgo), const IP_RF ideal-int -pkg syscall (netbsd-arm64-cgo), const IP_TOS = 3 -pkg syscall (netbsd-arm64-cgo), const IP_TTL = 4 -pkg syscall (netbsd-arm64-cgo), const ISIG = 128 -pkg syscall (netbsd-arm64-cgo), const ISIG ideal-int -pkg syscall (netbsd-arm64-cgo), const ISTRIP = 32 -pkg syscall (netbsd-arm64-cgo), const ISTRIP ideal-int -pkg syscall (netbsd-arm64-cgo), const IXANY = 2048 -pkg syscall (netbsd-arm64-cgo), const IXANY ideal-int -pkg syscall (netbsd-arm64-cgo), const IXOFF = 1024 -pkg syscall (netbsd-arm64-cgo), const IXOFF ideal-int -pkg syscall (netbsd-arm64-cgo), const IXON = 512 -pkg syscall (netbsd-arm64-cgo), const IXON ideal-int -pkg syscall (netbsd-arm64-cgo), const LOCK_EX = 2 -pkg syscall (netbsd-arm64-cgo), const LOCK_EX ideal-int -pkg syscall (netbsd-arm64-cgo), const LOCK_NB = 4 -pkg syscall (netbsd-arm64-cgo), const LOCK_NB ideal-int -pkg syscall (netbsd-arm64-cgo), const LOCK_SH = 1 -pkg syscall (netbsd-arm64-cgo), const LOCK_SH ideal-int -pkg syscall (netbsd-arm64-cgo), const LOCK_UN = 8 -pkg syscall (netbsd-arm64-cgo), const LOCK_UN ideal-int -pkg syscall (netbsd-arm64-cgo), const MADV_DONTNEED = 4 -pkg syscall (netbsd-arm64-cgo), const MADV_DONTNEED ideal-int -pkg syscall (netbsd-arm64-cgo), const MADV_FREE = 6 -pkg syscall (netbsd-arm64-cgo), const MADV_FREE ideal-int -pkg syscall (netbsd-arm64-cgo), const MADV_NORMAL = 0 -pkg syscall (netbsd-arm64-cgo), const MADV_NORMAL ideal-int -pkg syscall (netbsd-arm64-cgo), const MADV_RANDOM = 1 -pkg syscall (netbsd-arm64-cgo), const MADV_RANDOM ideal-int -pkg syscall (netbsd-arm64-cgo), const MADV_SEQUENTIAL = 2 -pkg syscall (netbsd-arm64-cgo), const MADV_SEQUENTIAL ideal-int -pkg syscall (netbsd-arm64-cgo), const MADV_SPACEAVAIL = 5 -pkg syscall (netbsd-arm64-cgo), const MADV_SPACEAVAIL ideal-int -pkg syscall (netbsd-arm64-cgo), const MADV_WILLNEED = 3 -pkg syscall (netbsd-arm64-cgo), const MADV_WILLNEED ideal-int -pkg syscall (netbsd-arm64-cgo), const MAP_ALIGNMENT_16MB = 402653184 -pkg syscall (netbsd-arm64-cgo), const MAP_ALIGNMENT_16MB ideal-int -pkg syscall (netbsd-arm64-cgo), const MAP_ALIGNMENT_1TB = 671088640 -pkg syscall (netbsd-arm64-cgo), const MAP_ALIGNMENT_1TB ideal-int -pkg syscall (netbsd-arm64-cgo), const MAP_ALIGNMENT_256TB = 805306368 -pkg syscall (netbsd-arm64-cgo), const MAP_ALIGNMENT_256TB ideal-int -pkg syscall (netbsd-arm64-cgo), const MAP_ALIGNMENT_4GB = 536870912 -pkg syscall (netbsd-arm64-cgo), const MAP_ALIGNMENT_4GB ideal-int -pkg syscall (netbsd-arm64-cgo), const MAP_ALIGNMENT_64KB = 268435456 -pkg syscall (netbsd-arm64-cgo), const MAP_ALIGNMENT_64KB ideal-int -pkg syscall (netbsd-arm64-cgo), const MAP_ALIGNMENT_64PB = 939524096 -pkg syscall (netbsd-arm64-cgo), const MAP_ALIGNMENT_64PB ideal-int -pkg syscall (netbsd-arm64-cgo), const MAP_ALIGNMENT_MASK = -16777216 -pkg syscall (netbsd-arm64-cgo), const MAP_ALIGNMENT_MASK ideal-int -pkg syscall (netbsd-arm64-cgo), const MAP_ALIGNMENT_SHIFT = 24 -pkg syscall (netbsd-arm64-cgo), const MAP_ALIGNMENT_SHIFT ideal-int -pkg syscall (netbsd-arm64-cgo), const MAP_ANON = 4096 -pkg syscall (netbsd-arm64-cgo), const MAP_ANON ideal-int -pkg syscall (netbsd-arm64-cgo), const MAP_FILE = 0 -pkg syscall (netbsd-arm64-cgo), const MAP_FILE ideal-int -pkg syscall (netbsd-arm64-cgo), const MAP_FIXED = 16 -pkg syscall (netbsd-arm64-cgo), const MAP_FIXED ideal-int -pkg syscall (netbsd-arm64-cgo), const MAP_HASSEMAPHORE = 512 -pkg syscall (netbsd-arm64-cgo), const MAP_HASSEMAPHORE ideal-int -pkg syscall (netbsd-arm64-cgo), const MAP_INHERIT = 128 -pkg syscall (netbsd-arm64-cgo), const MAP_INHERIT ideal-int -pkg syscall (netbsd-arm64-cgo), const MAP_INHERIT_COPY = 1 -pkg syscall (netbsd-arm64-cgo), const MAP_INHERIT_COPY ideal-int -pkg syscall (netbsd-arm64-cgo), const MAP_INHERIT_DEFAULT = 1 -pkg syscall (netbsd-arm64-cgo), const MAP_INHERIT_DEFAULT ideal-int -pkg syscall (netbsd-arm64-cgo), const MAP_INHERIT_DONATE_COPY = 3 -pkg syscall (netbsd-arm64-cgo), const MAP_INHERIT_DONATE_COPY ideal-int -pkg syscall (netbsd-arm64-cgo), const MAP_INHERIT_NONE = 2 -pkg syscall (netbsd-arm64-cgo), const MAP_INHERIT_NONE ideal-int -pkg syscall (netbsd-arm64-cgo), const MAP_INHERIT_SHARE = 0 -pkg syscall (netbsd-arm64-cgo), const MAP_INHERIT_SHARE ideal-int -pkg syscall (netbsd-arm64-cgo), const MAP_NORESERVE = 64 -pkg syscall (netbsd-arm64-cgo), const MAP_NORESERVE ideal-int -pkg syscall (netbsd-arm64-cgo), const MAP_PRIVATE = 2 -pkg syscall (netbsd-arm64-cgo), const MAP_PRIVATE ideal-int -pkg syscall (netbsd-arm64-cgo), const MAP_RENAME = 32 -pkg syscall (netbsd-arm64-cgo), const MAP_RENAME ideal-int -pkg syscall (netbsd-arm64-cgo), const MAP_SHARED = 1 -pkg syscall (netbsd-arm64-cgo), const MAP_SHARED ideal-int -pkg syscall (netbsd-arm64-cgo), const MAP_STACK = 8192 -pkg syscall (netbsd-arm64-cgo), const MAP_STACK ideal-int -pkg syscall (netbsd-arm64-cgo), const MAP_TRYFIXED = 1024 -pkg syscall (netbsd-arm64-cgo), const MAP_TRYFIXED ideal-int -pkg syscall (netbsd-arm64-cgo), const MAP_WIRED = 2048 -pkg syscall (netbsd-arm64-cgo), const MAP_WIRED ideal-int -pkg syscall (netbsd-arm64-cgo), const MCL_CURRENT = 1 -pkg syscall (netbsd-arm64-cgo), const MCL_CURRENT ideal-int -pkg syscall (netbsd-arm64-cgo), const MCL_FUTURE = 2 -pkg syscall (netbsd-arm64-cgo), const MCL_FUTURE ideal-int -pkg syscall (netbsd-arm64-cgo), const MSG_BCAST = 256 -pkg syscall (netbsd-arm64-cgo), const MSG_BCAST ideal-int -pkg syscall (netbsd-arm64-cgo), const MSG_CMSG_CLOEXEC = 2048 -pkg syscall (netbsd-arm64-cgo), const MSG_CMSG_CLOEXEC ideal-int -pkg syscall (netbsd-arm64-cgo), const MSG_CONTROLMBUF = 33554432 -pkg syscall (netbsd-arm64-cgo), const MSG_CONTROLMBUF ideal-int -pkg syscall (netbsd-arm64-cgo), const MSG_CTRUNC = 32 -pkg syscall (netbsd-arm64-cgo), const MSG_CTRUNC ideal-int -pkg syscall (netbsd-arm64-cgo), const MSG_DONTROUTE = 4 -pkg syscall (netbsd-arm64-cgo), const MSG_DONTROUTE ideal-int -pkg syscall (netbsd-arm64-cgo), const MSG_DONTWAIT = 128 -pkg syscall (netbsd-arm64-cgo), const MSG_DONTWAIT ideal-int -pkg syscall (netbsd-arm64-cgo), const MSG_EOR = 8 -pkg syscall (netbsd-arm64-cgo), const MSG_EOR ideal-int -pkg syscall (netbsd-arm64-cgo), const MSG_IOVUSRSPACE = 67108864 -pkg syscall (netbsd-arm64-cgo), const MSG_IOVUSRSPACE ideal-int -pkg syscall (netbsd-arm64-cgo), const MSG_LENUSRSPACE = 134217728 -pkg syscall (netbsd-arm64-cgo), const MSG_LENUSRSPACE ideal-int -pkg syscall (netbsd-arm64-cgo), const MSG_MCAST = 512 -pkg syscall (netbsd-arm64-cgo), const MSG_MCAST ideal-int -pkg syscall (netbsd-arm64-cgo), const MSG_NAMEMBUF = 16777216 -pkg syscall (netbsd-arm64-cgo), const MSG_NAMEMBUF ideal-int -pkg syscall (netbsd-arm64-cgo), const MSG_NBIO = 4096 -pkg syscall (netbsd-arm64-cgo), const MSG_NBIO ideal-int -pkg syscall (netbsd-arm64-cgo), const MSG_NOSIGNAL = 1024 -pkg syscall (netbsd-arm64-cgo), const MSG_NOSIGNAL ideal-int -pkg syscall (netbsd-arm64-cgo), const MSG_OOB = 1 -pkg syscall (netbsd-arm64-cgo), const MSG_OOB ideal-int -pkg syscall (netbsd-arm64-cgo), const MSG_PEEK = 2 -pkg syscall (netbsd-arm64-cgo), const MSG_PEEK ideal-int -pkg syscall (netbsd-arm64-cgo), const MSG_TRUNC = 16 -pkg syscall (netbsd-arm64-cgo), const MSG_TRUNC ideal-int -pkg syscall (netbsd-arm64-cgo), const MSG_USERFLAGS = 16777215 -pkg syscall (netbsd-arm64-cgo), const MSG_USERFLAGS ideal-int -pkg syscall (netbsd-arm64-cgo), const MSG_WAITALL = 64 -pkg syscall (netbsd-arm64-cgo), const MSG_WAITALL ideal-int -pkg syscall (netbsd-arm64-cgo), const MS_ASYNC = 1 -pkg syscall (netbsd-arm64-cgo), const MS_ASYNC ideal-int -pkg syscall (netbsd-arm64-cgo), const MS_INVALIDATE = 2 -pkg syscall (netbsd-arm64-cgo), const MS_INVALIDATE ideal-int -pkg syscall (netbsd-arm64-cgo), const MS_SYNC = 4 -pkg syscall (netbsd-arm64-cgo), const MS_SYNC ideal-int -pkg syscall (netbsd-arm64-cgo), const NAME_MAX = 511 -pkg syscall (netbsd-arm64-cgo), const NAME_MAX ideal-int -pkg syscall (netbsd-arm64-cgo), const NET_RT_DUMP = 1 -pkg syscall (netbsd-arm64-cgo), const NET_RT_DUMP ideal-int -pkg syscall (netbsd-arm64-cgo), const NET_RT_FLAGS = 2 -pkg syscall (netbsd-arm64-cgo), const NET_RT_FLAGS ideal-int -pkg syscall (netbsd-arm64-cgo), const NET_RT_IFLIST = 5 -pkg syscall (netbsd-arm64-cgo), const NET_RT_IFLIST ideal-int -pkg syscall (netbsd-arm64-cgo), const NET_RT_MAXID = 6 -pkg syscall (netbsd-arm64-cgo), const NET_RT_MAXID ideal-int -pkg syscall (netbsd-arm64-cgo), const NET_RT_OIFLIST = 4 -pkg syscall (netbsd-arm64-cgo), const NET_RT_OIFLIST ideal-int -pkg syscall (netbsd-arm64-cgo), const NET_RT_OOIFLIST = 3 -pkg syscall (netbsd-arm64-cgo), const NET_RT_OOIFLIST ideal-int -pkg syscall (netbsd-arm64-cgo), const NOFLSH = 2147483648 -pkg syscall (netbsd-arm64-cgo), const NOFLSH ideal-int -pkg syscall (netbsd-arm64-cgo), const NOTE_ATTRIB = 8 -pkg syscall (netbsd-arm64-cgo), const NOTE_ATTRIB ideal-int -pkg syscall (netbsd-arm64-cgo), const NOTE_CHILD = 4 -pkg syscall (netbsd-arm64-cgo), const NOTE_CHILD ideal-int -pkg syscall (netbsd-arm64-cgo), const NOTE_DELETE = 1 -pkg syscall (netbsd-arm64-cgo), const NOTE_DELETE ideal-int -pkg syscall (netbsd-arm64-cgo), const NOTE_EXEC = 536870912 -pkg syscall (netbsd-arm64-cgo), const NOTE_EXEC ideal-int -pkg syscall (netbsd-arm64-cgo), const NOTE_EXIT = 2147483648 -pkg syscall (netbsd-arm64-cgo), const NOTE_EXIT ideal-int -pkg syscall (netbsd-arm64-cgo), const NOTE_EXTEND = 4 -pkg syscall (netbsd-arm64-cgo), const NOTE_EXTEND ideal-int -pkg syscall (netbsd-arm64-cgo), const NOTE_FORK = 1073741824 -pkg syscall (netbsd-arm64-cgo), const NOTE_FORK ideal-int -pkg syscall (netbsd-arm64-cgo), const NOTE_LINK = 16 -pkg syscall (netbsd-arm64-cgo), const NOTE_LINK ideal-int -pkg syscall (netbsd-arm64-cgo), const NOTE_LOWAT = 1 -pkg syscall (netbsd-arm64-cgo), const NOTE_LOWAT ideal-int -pkg syscall (netbsd-arm64-cgo), const NOTE_PCTRLMASK = 4026531840 -pkg syscall (netbsd-arm64-cgo), const NOTE_PCTRLMASK ideal-int -pkg syscall (netbsd-arm64-cgo), const NOTE_PDATAMASK = 1048575 -pkg syscall (netbsd-arm64-cgo), const NOTE_PDATAMASK ideal-int -pkg syscall (netbsd-arm64-cgo), const NOTE_RENAME = 32 -pkg syscall (netbsd-arm64-cgo), const NOTE_RENAME ideal-int -pkg syscall (netbsd-arm64-cgo), const NOTE_REVOKE = 64 -pkg syscall (netbsd-arm64-cgo), const NOTE_REVOKE ideal-int -pkg syscall (netbsd-arm64-cgo), const NOTE_TRACK = 1 -pkg syscall (netbsd-arm64-cgo), const NOTE_TRACK ideal-int -pkg syscall (netbsd-arm64-cgo), const NOTE_TRACKERR = 2 -pkg syscall (netbsd-arm64-cgo), const NOTE_TRACKERR ideal-int -pkg syscall (netbsd-arm64-cgo), const NOTE_WRITE = 2 -pkg syscall (netbsd-arm64-cgo), const NOTE_WRITE ideal-int -pkg syscall (netbsd-arm64-cgo), const OCRNL = 16 -pkg syscall (netbsd-arm64-cgo), const OCRNL ideal-int -pkg syscall (netbsd-arm64-cgo), const OFIOGETBMAP = 3221513850 -pkg syscall (netbsd-arm64-cgo), const OFIOGETBMAP ideal-int -pkg syscall (netbsd-arm64-cgo), const ONLCR = 2 -pkg syscall (netbsd-arm64-cgo), const ONLCR ideal-int -pkg syscall (netbsd-arm64-cgo), const ONLRET = 64 -pkg syscall (netbsd-arm64-cgo), const ONLRET ideal-int -pkg syscall (netbsd-arm64-cgo), const ONOCR = 32 -pkg syscall (netbsd-arm64-cgo), const ONOCR ideal-int -pkg syscall (netbsd-arm64-cgo), const ONOEOT = 8 -pkg syscall (netbsd-arm64-cgo), const ONOEOT ideal-int -pkg syscall (netbsd-arm64-cgo), const OPOST = 1 -pkg syscall (netbsd-arm64-cgo), const OPOST ideal-int -pkg syscall (netbsd-arm64-cgo), const O_ACCMODE = 3 -pkg syscall (netbsd-arm64-cgo), const O_ACCMODE ideal-int -pkg syscall (netbsd-arm64-cgo), const O_ALT_IO = 262144 -pkg syscall (netbsd-arm64-cgo), const O_ALT_IO ideal-int -pkg syscall (netbsd-arm64-cgo), const O_APPEND = 8 -pkg syscall (netbsd-arm64-cgo), const O_ASYNC = 64 -pkg syscall (netbsd-arm64-cgo), const O_CLOEXEC = 4194304 -pkg syscall (netbsd-arm64-cgo), const O_CREAT = 512 -pkg syscall (netbsd-arm64-cgo), const O_DIRECT = 524288 -pkg syscall (netbsd-arm64-cgo), const O_DIRECT ideal-int -pkg syscall (netbsd-arm64-cgo), const O_DIRECTORY = 2097152 -pkg syscall (netbsd-arm64-cgo), const O_DIRECTORY ideal-int -pkg syscall (netbsd-arm64-cgo), const O_DSYNC = 65536 -pkg syscall (netbsd-arm64-cgo), const O_DSYNC ideal-int -pkg syscall (netbsd-arm64-cgo), const O_EXCL = 2048 -pkg syscall (netbsd-arm64-cgo), const O_EXLOCK = 32 -pkg syscall (netbsd-arm64-cgo), const O_EXLOCK ideal-int -pkg syscall (netbsd-arm64-cgo), const O_FSYNC = 128 -pkg syscall (netbsd-arm64-cgo), const O_FSYNC ideal-int -pkg syscall (netbsd-arm64-cgo), const O_NDELAY = 4 -pkg syscall (netbsd-arm64-cgo), const O_NDELAY ideal-int -pkg syscall (netbsd-arm64-cgo), const O_NOCTTY = 32768 -pkg syscall (netbsd-arm64-cgo), const O_NOFOLLOW = 256 -pkg syscall (netbsd-arm64-cgo), const O_NOFOLLOW ideal-int -pkg syscall (netbsd-arm64-cgo), const O_NONBLOCK = 4 -pkg syscall (netbsd-arm64-cgo), const O_NOSIGPIPE = 16777216 -pkg syscall (netbsd-arm64-cgo), const O_NOSIGPIPE ideal-int -pkg syscall (netbsd-arm64-cgo), const O_RSYNC = 131072 -pkg syscall (netbsd-arm64-cgo), const O_RSYNC ideal-int -pkg syscall (netbsd-arm64-cgo), const O_SHLOCK = 16 -pkg syscall (netbsd-arm64-cgo), const O_SHLOCK ideal-int -pkg syscall (netbsd-arm64-cgo), const O_SYNC = 128 -pkg syscall (netbsd-arm64-cgo), const O_TRUNC = 1024 -pkg syscall (netbsd-arm64-cgo), const PARENB = 4096 -pkg syscall (netbsd-arm64-cgo), const PARENB ideal-int -pkg syscall (netbsd-arm64-cgo), const PARMRK = 8 -pkg syscall (netbsd-arm64-cgo), const PARMRK ideal-int -pkg syscall (netbsd-arm64-cgo), const PARODD = 8192 -pkg syscall (netbsd-arm64-cgo), const PARODD ideal-int -pkg syscall (netbsd-arm64-cgo), const PENDIN = 536870912 -pkg syscall (netbsd-arm64-cgo), const PENDIN ideal-int -pkg syscall (netbsd-arm64-cgo), const PRIO_PGRP = 1 -pkg syscall (netbsd-arm64-cgo), const PRIO_PGRP ideal-int -pkg syscall (netbsd-arm64-cgo), const PRIO_PROCESS = 0 -pkg syscall (netbsd-arm64-cgo), const PRIO_PROCESS ideal-int -pkg syscall (netbsd-arm64-cgo), const PRIO_USER = 2 -pkg syscall (netbsd-arm64-cgo), const PRIO_USER ideal-int -pkg syscall (netbsd-arm64-cgo), const PRI_IOFLUSH = 124 -pkg syscall (netbsd-arm64-cgo), const PRI_IOFLUSH ideal-int -pkg syscall (netbsd-arm64-cgo), const PROT_EXEC = 4 -pkg syscall (netbsd-arm64-cgo), const PROT_EXEC ideal-int -pkg syscall (netbsd-arm64-cgo), const PROT_NONE = 0 -pkg syscall (netbsd-arm64-cgo), const PROT_NONE ideal-int -pkg syscall (netbsd-arm64-cgo), const PROT_READ = 1 -pkg syscall (netbsd-arm64-cgo), const PROT_READ ideal-int -pkg syscall (netbsd-arm64-cgo), const PROT_WRITE = 2 -pkg syscall (netbsd-arm64-cgo), const PROT_WRITE ideal-int -pkg syscall (netbsd-arm64-cgo), const PTRACE_CONT = 7 -pkg syscall (netbsd-arm64-cgo), const PTRACE_CONT ideal-int -pkg syscall (netbsd-arm64-cgo), const PTRACE_KILL = 8 -pkg syscall (netbsd-arm64-cgo), const PTRACE_KILL ideal-int -pkg syscall (netbsd-arm64-cgo), const PTRACE_TRACEME = 0 -pkg syscall (netbsd-arm64-cgo), const PTRACE_TRACEME ideal-int -pkg syscall (netbsd-arm64-cgo), const RLIMIT_AS = 10 -pkg syscall (netbsd-arm64-cgo), const RLIMIT_AS ideal-int -pkg syscall (netbsd-arm64-cgo), const RLIMIT_CORE = 4 -pkg syscall (netbsd-arm64-cgo), const RLIMIT_CORE ideal-int -pkg syscall (netbsd-arm64-cgo), const RLIMIT_CPU = 0 -pkg syscall (netbsd-arm64-cgo), const RLIMIT_CPU ideal-int -pkg syscall (netbsd-arm64-cgo), const RLIMIT_DATA = 2 -pkg syscall (netbsd-arm64-cgo), const RLIMIT_DATA ideal-int -pkg syscall (netbsd-arm64-cgo), const RLIMIT_FSIZE = 1 -pkg syscall (netbsd-arm64-cgo), const RLIMIT_FSIZE ideal-int -pkg syscall (netbsd-arm64-cgo), const RLIMIT_NOFILE = 8 -pkg syscall (netbsd-arm64-cgo), const RLIMIT_NOFILE ideal-int -pkg syscall (netbsd-arm64-cgo), const RLIMIT_STACK = 3 -pkg syscall (netbsd-arm64-cgo), const RLIMIT_STACK ideal-int -pkg syscall (netbsd-arm64-cgo), const RLIM_INFINITY = 9223372036854775807 -pkg syscall (netbsd-arm64-cgo), const RLIM_INFINITY ideal-int -pkg syscall (netbsd-arm64-cgo), const RTAX_AUTHOR = 6 -pkg syscall (netbsd-arm64-cgo), const RTAX_AUTHOR ideal-int -pkg syscall (netbsd-arm64-cgo), const RTAX_BRD = 7 -pkg syscall (netbsd-arm64-cgo), const RTAX_BRD ideal-int -pkg syscall (netbsd-arm64-cgo), const RTAX_DST = 0 -pkg syscall (netbsd-arm64-cgo), const RTAX_DST ideal-int -pkg syscall (netbsd-arm64-cgo), const RTAX_GATEWAY = 1 -pkg syscall (netbsd-arm64-cgo), const RTAX_GATEWAY ideal-int -pkg syscall (netbsd-arm64-cgo), const RTAX_GENMASK = 3 -pkg syscall (netbsd-arm64-cgo), const RTAX_GENMASK ideal-int -pkg syscall (netbsd-arm64-cgo), const RTAX_IFA = 5 -pkg syscall (netbsd-arm64-cgo), const RTAX_IFA ideal-int -pkg syscall (netbsd-arm64-cgo), const RTAX_IFP = 4 -pkg syscall (netbsd-arm64-cgo), const RTAX_IFP ideal-int -pkg syscall (netbsd-arm64-cgo), const RTAX_MAX = 9 -pkg syscall (netbsd-arm64-cgo), const RTAX_MAX ideal-int -pkg syscall (netbsd-arm64-cgo), const RTAX_NETMASK = 2 -pkg syscall (netbsd-arm64-cgo), const RTAX_NETMASK ideal-int -pkg syscall (netbsd-arm64-cgo), const RTAX_TAG = 8 -pkg syscall (netbsd-arm64-cgo), const RTAX_TAG ideal-int -pkg syscall (netbsd-arm64-cgo), const RTA_AUTHOR = 64 -pkg syscall (netbsd-arm64-cgo), const RTA_AUTHOR ideal-int -pkg syscall (netbsd-arm64-cgo), const RTA_BRD = 128 -pkg syscall (netbsd-arm64-cgo), const RTA_BRD ideal-int -pkg syscall (netbsd-arm64-cgo), const RTA_DST = 1 -pkg syscall (netbsd-arm64-cgo), const RTA_DST ideal-int -pkg syscall (netbsd-arm64-cgo), const RTA_GATEWAY = 2 -pkg syscall (netbsd-arm64-cgo), const RTA_GATEWAY ideal-int -pkg syscall (netbsd-arm64-cgo), const RTA_GENMASK = 8 -pkg syscall (netbsd-arm64-cgo), const RTA_GENMASK ideal-int -pkg syscall (netbsd-arm64-cgo), const RTA_IFA = 32 -pkg syscall (netbsd-arm64-cgo), const RTA_IFA ideal-int -pkg syscall (netbsd-arm64-cgo), const RTA_IFP = 16 -pkg syscall (netbsd-arm64-cgo), const RTA_IFP ideal-int -pkg syscall (netbsd-arm64-cgo), const RTA_NETMASK = 4 -pkg syscall (netbsd-arm64-cgo), const RTA_NETMASK ideal-int -pkg syscall (netbsd-arm64-cgo), const RTA_TAG = 256 -pkg syscall (netbsd-arm64-cgo), const RTA_TAG ideal-int -pkg syscall (netbsd-arm64-cgo), const RTF_ANNOUNCE = 131072 -pkg syscall (netbsd-arm64-cgo), const RTF_ANNOUNCE ideal-int -pkg syscall (netbsd-arm64-cgo), const RTF_BLACKHOLE = 4096 -pkg syscall (netbsd-arm64-cgo), const RTF_BLACKHOLE ideal-int -pkg syscall (netbsd-arm64-cgo), const RTF_CLONED = 8192 -pkg syscall (netbsd-arm64-cgo), const RTF_CLONED ideal-int -pkg syscall (netbsd-arm64-cgo), const RTF_CLONING = 256 -pkg syscall (netbsd-arm64-cgo), const RTF_CLONING ideal-int -pkg syscall (netbsd-arm64-cgo), const RTF_DONE = 64 -pkg syscall (netbsd-arm64-cgo), const RTF_DONE ideal-int -pkg syscall (netbsd-arm64-cgo), const RTF_DYNAMIC = 16 -pkg syscall (netbsd-arm64-cgo), const RTF_DYNAMIC ideal-int -pkg syscall (netbsd-arm64-cgo), const RTF_GATEWAY = 2 -pkg syscall (netbsd-arm64-cgo), const RTF_GATEWAY ideal-int -pkg syscall (netbsd-arm64-cgo), const RTF_HOST = 4 -pkg syscall (netbsd-arm64-cgo), const RTF_HOST ideal-int -pkg syscall (netbsd-arm64-cgo), const RTF_LLINFO = 1024 -pkg syscall (netbsd-arm64-cgo), const RTF_LLINFO ideal-int -pkg syscall (netbsd-arm64-cgo), const RTF_MASK = 128 -pkg syscall (netbsd-arm64-cgo), const RTF_MASK ideal-int -pkg syscall (netbsd-arm64-cgo), const RTF_MODIFIED = 32 -pkg syscall (netbsd-arm64-cgo), const RTF_MODIFIED ideal-int -pkg syscall (netbsd-arm64-cgo), const RTF_PROTO1 = 32768 -pkg syscall (netbsd-arm64-cgo), const RTF_PROTO1 ideal-int -pkg syscall (netbsd-arm64-cgo), const RTF_PROTO2 = 16384 -pkg syscall (netbsd-arm64-cgo), const RTF_PROTO2 ideal-int -pkg syscall (netbsd-arm64-cgo), const RTF_REJECT = 8 -pkg syscall (netbsd-arm64-cgo), const RTF_REJECT ideal-int -pkg syscall (netbsd-arm64-cgo), const RTF_SRC = 65536 -pkg syscall (netbsd-arm64-cgo), const RTF_SRC ideal-int -pkg syscall (netbsd-arm64-cgo), const RTF_STATIC = 2048 -pkg syscall (netbsd-arm64-cgo), const RTF_STATIC ideal-int -pkg syscall (netbsd-arm64-cgo), const RTF_UP = 1 -pkg syscall (netbsd-arm64-cgo), const RTF_UP ideal-int -pkg syscall (netbsd-arm64-cgo), const RTF_XRESOLVE = 512 -pkg syscall (netbsd-arm64-cgo), const RTF_XRESOLVE ideal-int -pkg syscall (netbsd-arm64-cgo), const RTM_ADD = 1 -pkg syscall (netbsd-arm64-cgo), const RTM_ADD ideal-int -pkg syscall (netbsd-arm64-cgo), const RTM_CHANGE = 3 -pkg syscall (netbsd-arm64-cgo), const RTM_CHANGE ideal-int -pkg syscall (netbsd-arm64-cgo), const RTM_CHGADDR = 21 -pkg syscall (netbsd-arm64-cgo), const RTM_CHGADDR ideal-int -pkg syscall (netbsd-arm64-cgo), const RTM_DELADDR = 13 -pkg syscall (netbsd-arm64-cgo), const RTM_DELADDR ideal-int -pkg syscall (netbsd-arm64-cgo), const RTM_DELETE = 2 -pkg syscall (netbsd-arm64-cgo), const RTM_DELETE ideal-int -pkg syscall (netbsd-arm64-cgo), const RTM_GET = 4 -pkg syscall (netbsd-arm64-cgo), const RTM_GET ideal-int -pkg syscall (netbsd-arm64-cgo), const RTM_IEEE80211 = 17 -pkg syscall (netbsd-arm64-cgo), const RTM_IEEE80211 ideal-int -pkg syscall (netbsd-arm64-cgo), const RTM_IFANNOUNCE = 16 -pkg syscall (netbsd-arm64-cgo), const RTM_IFANNOUNCE ideal-int -pkg syscall (netbsd-arm64-cgo), const RTM_IFINFO = 20 -pkg syscall (netbsd-arm64-cgo), const RTM_IFINFO ideal-int -pkg syscall (netbsd-arm64-cgo), const RTM_LLINFO_UPD = 19 -pkg syscall (netbsd-arm64-cgo), const RTM_LLINFO_UPD ideal-int -pkg syscall (netbsd-arm64-cgo), const RTM_LOCK = 8 -pkg syscall (netbsd-arm64-cgo), const RTM_LOCK ideal-int -pkg syscall (netbsd-arm64-cgo), const RTM_LOSING = 5 -pkg syscall (netbsd-arm64-cgo), const RTM_LOSING ideal-int -pkg syscall (netbsd-arm64-cgo), const RTM_MISS = 7 -pkg syscall (netbsd-arm64-cgo), const RTM_MISS ideal-int -pkg syscall (netbsd-arm64-cgo), const RTM_NEWADDR = 12 -pkg syscall (netbsd-arm64-cgo), const RTM_NEWADDR ideal-int -pkg syscall (netbsd-arm64-cgo), const RTM_OIFINFO = 15 -pkg syscall (netbsd-arm64-cgo), const RTM_OIFINFO ideal-int -pkg syscall (netbsd-arm64-cgo), const RTM_OLDADD = 9 -pkg syscall (netbsd-arm64-cgo), const RTM_OLDADD ideal-int -pkg syscall (netbsd-arm64-cgo), const RTM_OLDDEL = 10 -pkg syscall (netbsd-arm64-cgo), const RTM_OLDDEL ideal-int -pkg syscall (netbsd-arm64-cgo), const RTM_OOIFINFO = 14 -pkg syscall (netbsd-arm64-cgo), const RTM_OOIFINFO ideal-int -pkg syscall (netbsd-arm64-cgo), const RTM_REDIRECT = 6 -pkg syscall (netbsd-arm64-cgo), const RTM_REDIRECT ideal-int -pkg syscall (netbsd-arm64-cgo), const RTM_RESOLVE = 11 -pkg syscall (netbsd-arm64-cgo), const RTM_RESOLVE ideal-int -pkg syscall (netbsd-arm64-cgo), const RTM_RTTUNIT = 1000000 -pkg syscall (netbsd-arm64-cgo), const RTM_RTTUNIT ideal-int -pkg syscall (netbsd-arm64-cgo), const RTM_SETGATE = 18 -pkg syscall (netbsd-arm64-cgo), const RTM_SETGATE ideal-int -pkg syscall (netbsd-arm64-cgo), const RTM_VERSION = 4 -pkg syscall (netbsd-arm64-cgo), const RTM_VERSION ideal-int -pkg syscall (netbsd-arm64-cgo), const RTV_EXPIRE = 4 -pkg syscall (netbsd-arm64-cgo), const RTV_EXPIRE ideal-int -pkg syscall (netbsd-arm64-cgo), const RTV_HOPCOUNT = 2 -pkg syscall (netbsd-arm64-cgo), const RTV_HOPCOUNT ideal-int -pkg syscall (netbsd-arm64-cgo), const RTV_MTU = 1 -pkg syscall (netbsd-arm64-cgo), const RTV_MTU ideal-int -pkg syscall (netbsd-arm64-cgo), const RTV_RPIPE = 8 -pkg syscall (netbsd-arm64-cgo), const RTV_RPIPE ideal-int -pkg syscall (netbsd-arm64-cgo), const RTV_RTT = 64 -pkg syscall (netbsd-arm64-cgo), const RTV_RTT ideal-int -pkg syscall (netbsd-arm64-cgo), const RTV_RTTVAR = 128 -pkg syscall (netbsd-arm64-cgo), const RTV_RTTVAR ideal-int -pkg syscall (netbsd-arm64-cgo), const RTV_SPIPE = 16 -pkg syscall (netbsd-arm64-cgo), const RTV_SPIPE ideal-int -pkg syscall (netbsd-arm64-cgo), const RTV_SSTHRESH = 32 -pkg syscall (netbsd-arm64-cgo), const RTV_SSTHRESH ideal-int -pkg syscall (netbsd-arm64-cgo), const RUSAGE_CHILDREN = -1 -pkg syscall (netbsd-arm64-cgo), const RUSAGE_CHILDREN ideal-int -pkg syscall (netbsd-arm64-cgo), const RUSAGE_SELF = 0 -pkg syscall (netbsd-arm64-cgo), const RUSAGE_SELF ideal-int -pkg syscall (netbsd-arm64-cgo), const SCM_CREDS = 4 -pkg syscall (netbsd-arm64-cgo), const SCM_CREDS ideal-int -pkg syscall (netbsd-arm64-cgo), const SCM_RIGHTS = 1 -pkg syscall (netbsd-arm64-cgo), const SCM_RIGHTS ideal-int -pkg syscall (netbsd-arm64-cgo), const SCM_TIMESTAMP = 8 -pkg syscall (netbsd-arm64-cgo), const SCM_TIMESTAMP ideal-int -pkg syscall (netbsd-arm64-cgo), const SIGBUS = 10 -pkg syscall (netbsd-arm64-cgo), const SIGCHLD = 20 -pkg syscall (netbsd-arm64-cgo), const SIGCHLD Signal -pkg syscall (netbsd-arm64-cgo), const SIGCONT = 19 -pkg syscall (netbsd-arm64-cgo), const SIGCONT Signal -pkg syscall (netbsd-arm64-cgo), const SIGEMT = 7 -pkg syscall (netbsd-arm64-cgo), const SIGEMT Signal -pkg syscall (netbsd-arm64-cgo), const SIGINFO = 29 -pkg syscall (netbsd-arm64-cgo), const SIGINFO Signal -pkg syscall (netbsd-arm64-cgo), const SIGIO = 23 -pkg syscall (netbsd-arm64-cgo), const SIGIO Signal -pkg syscall (netbsd-arm64-cgo), const SIGIOT = 6 -pkg syscall (netbsd-arm64-cgo), const SIGIOT Signal -pkg syscall (netbsd-arm64-cgo), const SIGPROF = 27 -pkg syscall (netbsd-arm64-cgo), const SIGPROF Signal -pkg syscall (netbsd-arm64-cgo), const SIGPWR = 32 -pkg syscall (netbsd-arm64-cgo), const SIGPWR Signal -pkg syscall (netbsd-arm64-cgo), const SIGSTOP = 17 -pkg syscall (netbsd-arm64-cgo), const SIGSTOP Signal -pkg syscall (netbsd-arm64-cgo), const SIGSYS = 12 -pkg syscall (netbsd-arm64-cgo), const SIGSYS Signal -pkg syscall (netbsd-arm64-cgo), const SIGTSTP = 18 -pkg syscall (netbsd-arm64-cgo), const SIGTSTP Signal -pkg syscall (netbsd-arm64-cgo), const SIGTTIN = 21 -pkg syscall (netbsd-arm64-cgo), const SIGTTIN Signal -pkg syscall (netbsd-arm64-cgo), const SIGTTOU = 22 -pkg syscall (netbsd-arm64-cgo), const SIGTTOU Signal -pkg syscall (netbsd-arm64-cgo), const SIGURG = 16 -pkg syscall (netbsd-arm64-cgo), const SIGURG Signal -pkg syscall (netbsd-arm64-cgo), const SIGUSR1 = 30 -pkg syscall (netbsd-arm64-cgo), const SIGUSR1 Signal -pkg syscall (netbsd-arm64-cgo), const SIGUSR2 = 31 -pkg syscall (netbsd-arm64-cgo), const SIGUSR2 Signal -pkg syscall (netbsd-arm64-cgo), const SIGVTALRM = 26 -pkg syscall (netbsd-arm64-cgo), const SIGVTALRM Signal -pkg syscall (netbsd-arm64-cgo), const SIGWINCH = 28 -pkg syscall (netbsd-arm64-cgo), const SIGWINCH Signal -pkg syscall (netbsd-arm64-cgo), const SIGXCPU = 24 -pkg syscall (netbsd-arm64-cgo), const SIGXCPU Signal -pkg syscall (netbsd-arm64-cgo), const SIGXFSZ = 25 -pkg syscall (netbsd-arm64-cgo), const SIGXFSZ Signal -pkg syscall (netbsd-arm64-cgo), const SIOCADDMULTI = 2156947761 -pkg syscall (netbsd-arm64-cgo), const SIOCADDMULTI ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCADDRT = 2151182858 -pkg syscall (netbsd-arm64-cgo), const SIOCADDRT ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCAIFADDR = 2151704858 -pkg syscall (netbsd-arm64-cgo), const SIOCAIFADDR ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCALIFADDR = 2165860636 -pkg syscall (netbsd-arm64-cgo), const SIOCALIFADDR ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCATMARK = 1074033415 -pkg syscall (netbsd-arm64-cgo), const SIOCATMARK ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCDELMULTI = 2156947762 -pkg syscall (netbsd-arm64-cgo), const SIOCDELMULTI ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCDELRT = 2151182859 -pkg syscall (netbsd-arm64-cgo), const SIOCDELRT ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCDIFADDR = 2156947737 -pkg syscall (netbsd-arm64-cgo), const SIOCDIFADDR ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCDIFPHYADDR = 2156947785 -pkg syscall (netbsd-arm64-cgo), const SIOCDIFPHYADDR ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCDLIFADDR = 2165860638 -pkg syscall (netbsd-arm64-cgo), const SIOCDLIFADDR ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCGDRVSPEC = 3223873915 -pkg syscall (netbsd-arm64-cgo), const SIOCGDRVSPEC ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCGETPFSYNC = 3230689784 -pkg syscall (netbsd-arm64-cgo), const SIOCGETPFSYNC ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCGETSGCNT = 3223352628 -pkg syscall (netbsd-arm64-cgo), const SIOCGETSGCNT ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCGETVIFCNT = 3223876915 -pkg syscall (netbsd-arm64-cgo), const SIOCGETVIFCNT ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCGHIWAT = 1074033409 -pkg syscall (netbsd-arm64-cgo), const SIOCGHIWAT ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCGIFADDR = 3230689569 -pkg syscall (netbsd-arm64-cgo), const SIOCGIFADDR ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCGIFADDRPREF = 3231213856 -pkg syscall (netbsd-arm64-cgo), const SIOCGIFADDRPREF ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCGIFALIAS = 3225446683 -pkg syscall (netbsd-arm64-cgo), const SIOCGIFALIAS ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCGIFBRDADDR = 3230689571 -pkg syscall (netbsd-arm64-cgo), const SIOCGIFBRDADDR ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCGIFCAP = 3223349622 -pkg syscall (netbsd-arm64-cgo), const SIOCGIFCAP ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCGIFCONF = 3222300966 -pkg syscall (netbsd-arm64-cgo), const SIOCGIFCONF ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCGIFDATA = 3231213957 -pkg syscall (netbsd-arm64-cgo), const SIOCGIFDATA ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCGIFDLT = 3230689655 -pkg syscall (netbsd-arm64-cgo), const SIOCGIFDLT ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCGIFDSTADDR = 3230689570 -pkg syscall (netbsd-arm64-cgo), const SIOCGIFDSTADDR ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCGIFFLAGS = 3230689553 -pkg syscall (netbsd-arm64-cgo), const SIOCGIFFLAGS ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCGIFGENERIC = 3230689594 -pkg syscall (netbsd-arm64-cgo), const SIOCGIFGENERIC ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCGIFMEDIA = 3224398134 -pkg syscall (netbsd-arm64-cgo), const SIOCGIFMEDIA ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCGIFMETRIC = 3230689559 -pkg syscall (netbsd-arm64-cgo), const SIOCGIFMETRIC ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCGIFMTU = 3230689662 -pkg syscall (netbsd-arm64-cgo), const SIOCGIFMTU ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCGIFNETMASK = 3230689573 -pkg syscall (netbsd-arm64-cgo), const SIOCGIFNETMASK ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCGIFPDSTADDR = 3230689608 -pkg syscall (netbsd-arm64-cgo), const SIOCGIFPDSTADDR ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCGIFPSRCADDR = 3230689607 -pkg syscall (netbsd-arm64-cgo), const SIOCGIFPSRCADDR ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCGLIFADDR = 3239602461 -pkg syscall (netbsd-arm64-cgo), const SIOCGLIFADDR ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCGLIFPHYADDR = 3239602507 -pkg syscall (netbsd-arm64-cgo), const SIOCGLIFPHYADDR ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCGLINKSTR = 3223873927 -pkg syscall (netbsd-arm64-cgo), const SIOCGLINKSTR ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCGLOWAT = 1074033411 -pkg syscall (netbsd-arm64-cgo), const SIOCGLOWAT ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCGPGRP = 1074033417 -pkg syscall (netbsd-arm64-cgo), const SIOCGPGRP ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCGVH = 3230689667 -pkg syscall (netbsd-arm64-cgo), const SIOCGVH ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCIFCREATE = 2156947834 -pkg syscall (netbsd-arm64-cgo), const SIOCIFCREATE ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCIFDESTROY = 2156947833 -pkg syscall (netbsd-arm64-cgo), const SIOCIFDESTROY ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCIFGCLONERS = 3222301048 -pkg syscall (netbsd-arm64-cgo), const SIOCIFGCLONERS ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCINITIFADDR = 3228592516 -pkg syscall (netbsd-arm64-cgo), const SIOCINITIFADDR ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCSDRVSPEC = 2150132091 -pkg syscall (netbsd-arm64-cgo), const SIOCSDRVSPEC ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCSETPFSYNC = 2156947959 -pkg syscall (netbsd-arm64-cgo), const SIOCSETPFSYNC ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCSHIWAT = 2147775232 -pkg syscall (netbsd-arm64-cgo), const SIOCSHIWAT ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCSIFADDR = 2156947724 -pkg syscall (netbsd-arm64-cgo), const SIOCSIFADDR ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCSIFADDRPREF = 2157472031 -pkg syscall (netbsd-arm64-cgo), const SIOCSIFADDRPREF ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCSIFBRDADDR = 2156947731 -pkg syscall (netbsd-arm64-cgo), const SIOCSIFBRDADDR ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCSIFCAP = 2149607797 -pkg syscall (netbsd-arm64-cgo), const SIOCSIFCAP ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCSIFDSTADDR = 2156947726 -pkg syscall (netbsd-arm64-cgo), const SIOCSIFDSTADDR ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCSIFFLAGS = 2156947728 -pkg syscall (netbsd-arm64-cgo), const SIOCSIFFLAGS ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCSIFGENERIC = 2156947769 -pkg syscall (netbsd-arm64-cgo), const SIOCSIFGENERIC ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCSIFMEDIA = 3230689589 -pkg syscall (netbsd-arm64-cgo), const SIOCSIFMEDIA ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCSIFMETRIC = 2156947736 -pkg syscall (netbsd-arm64-cgo), const SIOCSIFMETRIC ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCSIFMTU = 2156947839 -pkg syscall (netbsd-arm64-cgo), const SIOCSIFMTU ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCSIFNETMASK = 2156947734 -pkg syscall (netbsd-arm64-cgo), const SIOCSIFNETMASK ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCSIFPHYADDR = 2151704902 -pkg syscall (netbsd-arm64-cgo), const SIOCSIFPHYADDR ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCSLIFPHYADDR = 2165860682 -pkg syscall (netbsd-arm64-cgo), const SIOCSLIFPHYADDR ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCSLINKSTR = 2150132104 -pkg syscall (netbsd-arm64-cgo), const SIOCSLINKSTR ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCSLOWAT = 2147775234 -pkg syscall (netbsd-arm64-cgo), const SIOCSLOWAT ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCSPGRP = 2147775240 -pkg syscall (netbsd-arm64-cgo), const SIOCSPGRP ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCSVH = 3230689666 -pkg syscall (netbsd-arm64-cgo), const SIOCSVH ideal-int -pkg syscall (netbsd-arm64-cgo), const SIOCZIFDATA = 3231213958 -pkg syscall (netbsd-arm64-cgo), const SIOCZIFDATA ideal-int -pkg syscall (netbsd-arm64-cgo), const SOCK_CLOEXEC = 268435456 -pkg syscall (netbsd-arm64-cgo), const SOCK_CLOEXEC ideal-int -pkg syscall (netbsd-arm64-cgo), const SOCK_FLAGS_MASK = 4026531840 -pkg syscall (netbsd-arm64-cgo), const SOCK_FLAGS_MASK ideal-int -pkg syscall (netbsd-arm64-cgo), const SOCK_NONBLOCK = 536870912 -pkg syscall (netbsd-arm64-cgo), const SOCK_NONBLOCK ideal-int -pkg syscall (netbsd-arm64-cgo), const SOCK_NOSIGPIPE = 1073741824 -pkg syscall (netbsd-arm64-cgo), const SOCK_NOSIGPIPE ideal-int -pkg syscall (netbsd-arm64-cgo), const SOCK_RDM = 4 -pkg syscall (netbsd-arm64-cgo), const SOCK_RDM ideal-int -pkg syscall (netbsd-arm64-cgo), const SOL_SOCKET = 65535 -pkg syscall (netbsd-arm64-cgo), const SOMAXCONN = 128 -pkg syscall (netbsd-arm64-cgo), const SO_ACCEPTCONN = 2 -pkg syscall (netbsd-arm64-cgo), const SO_ACCEPTCONN ideal-int -pkg syscall (netbsd-arm64-cgo), const SO_ACCEPTFILTER = 4096 -pkg syscall (netbsd-arm64-cgo), const SO_ACCEPTFILTER ideal-int -pkg syscall (netbsd-arm64-cgo), const SO_BROADCAST = 32 -pkg syscall (netbsd-arm64-cgo), const SO_DEBUG = 1 -pkg syscall (netbsd-arm64-cgo), const SO_DEBUG ideal-int -pkg syscall (netbsd-arm64-cgo), const SO_DONTROUTE = 16 -pkg syscall (netbsd-arm64-cgo), const SO_ERROR = 4103 -pkg syscall (netbsd-arm64-cgo), const SO_ERROR ideal-int -pkg syscall (netbsd-arm64-cgo), const SO_KEEPALIVE = 8 -pkg syscall (netbsd-arm64-cgo), const SO_LINGER = 128 -pkg syscall (netbsd-arm64-cgo), const SO_NOHEADER = 4106 -pkg syscall (netbsd-arm64-cgo), const SO_NOHEADER ideal-int -pkg syscall (netbsd-arm64-cgo), const SO_NOSIGPIPE = 2048 -pkg syscall (netbsd-arm64-cgo), const SO_NOSIGPIPE ideal-int -pkg syscall (netbsd-arm64-cgo), const SO_OOBINLINE = 256 -pkg syscall (netbsd-arm64-cgo), const SO_OOBINLINE ideal-int -pkg syscall (netbsd-arm64-cgo), const SO_OVERFLOWED = 4105 -pkg syscall (netbsd-arm64-cgo), const SO_OVERFLOWED ideal-int -pkg syscall (netbsd-arm64-cgo), const SO_RCVBUF = 4098 -pkg syscall (netbsd-arm64-cgo), const SO_RCVLOWAT = 4100 -pkg syscall (netbsd-arm64-cgo), const SO_RCVLOWAT ideal-int -pkg syscall (netbsd-arm64-cgo), const SO_RCVTIMEO = 4108 -pkg syscall (netbsd-arm64-cgo), const SO_RCVTIMEO ideal-int -pkg syscall (netbsd-arm64-cgo), const SO_REUSEADDR = 4 -pkg syscall (netbsd-arm64-cgo), const SO_REUSEPORT = 512 -pkg syscall (netbsd-arm64-cgo), const SO_REUSEPORT ideal-int -pkg syscall (netbsd-arm64-cgo), const SO_SNDBUF = 4097 -pkg syscall (netbsd-arm64-cgo), const SO_SNDLOWAT = 4099 -pkg syscall (netbsd-arm64-cgo), const SO_SNDLOWAT ideal-int -pkg syscall (netbsd-arm64-cgo), const SO_SNDTIMEO = 4107 -pkg syscall (netbsd-arm64-cgo), const SO_SNDTIMEO ideal-int -pkg syscall (netbsd-arm64-cgo), const SO_TIMESTAMP = 8192 -pkg syscall (netbsd-arm64-cgo), const SO_TIMESTAMP ideal-int -pkg syscall (netbsd-arm64-cgo), const SO_TYPE = 4104 -pkg syscall (netbsd-arm64-cgo), const SO_TYPE ideal-int -pkg syscall (netbsd-arm64-cgo), const SO_USELOOPBACK = 64 -pkg syscall (netbsd-arm64-cgo), const SO_USELOOPBACK ideal-int -pkg syscall (netbsd-arm64-cgo), const SYSCTL_VERSION = 16777216 -pkg syscall (netbsd-arm64-cgo), const SYSCTL_VERSION ideal-int -pkg syscall (netbsd-arm64-cgo), const SYSCTL_VERS_0 = 0 -pkg syscall (netbsd-arm64-cgo), const SYSCTL_VERS_0 ideal-int -pkg syscall (netbsd-arm64-cgo), const SYSCTL_VERS_1 = 16777216 -pkg syscall (netbsd-arm64-cgo), const SYSCTL_VERS_1 ideal-int -pkg syscall (netbsd-arm64-cgo), const SYSCTL_VERS_MASK = 4278190080 -pkg syscall (netbsd-arm64-cgo), const SYSCTL_VERS_MASK ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_ACCEPT = 30 -pkg syscall (netbsd-arm64-cgo), const SYS_ACCEPT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_ACCESS = 33 -pkg syscall (netbsd-arm64-cgo), const SYS_ACCESS ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_ACCT = 51 -pkg syscall (netbsd-arm64-cgo), const SYS_ACCT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_ADJTIME = 421 -pkg syscall (netbsd-arm64-cgo), const SYS_ADJTIME ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_BIND = 104 -pkg syscall (netbsd-arm64-cgo), const SYS_BIND ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_BREAK = 17 -pkg syscall (netbsd-arm64-cgo), const SYS_BREAK ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_CHDIR = 12 -pkg syscall (netbsd-arm64-cgo), const SYS_CHDIR ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_CHFLAGS = 34 -pkg syscall (netbsd-arm64-cgo), const SYS_CHFLAGS ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_CHMOD = 15 -pkg syscall (netbsd-arm64-cgo), const SYS_CHMOD ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_CHOWN = 16 -pkg syscall (netbsd-arm64-cgo), const SYS_CHOWN ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_CHROOT = 61 -pkg syscall (netbsd-arm64-cgo), const SYS_CHROOT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_CLOCK_GETRES = 429 -pkg syscall (netbsd-arm64-cgo), const SYS_CLOCK_GETRES ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_CLOCK_GETTIME = 427 -pkg syscall (netbsd-arm64-cgo), const SYS_CLOCK_GETTIME ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_CLOCK_SETTIME = 428 -pkg syscall (netbsd-arm64-cgo), const SYS_CLOCK_SETTIME ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_CLOSE = 6 -pkg syscall (netbsd-arm64-cgo), const SYS_CLOSE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_CONNECT = 98 -pkg syscall (netbsd-arm64-cgo), const SYS_CONNECT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_DUP = 41 -pkg syscall (netbsd-arm64-cgo), const SYS_DUP ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_DUP2 = 90 -pkg syscall (netbsd-arm64-cgo), const SYS_DUP2 ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_DUP3 = 454 -pkg syscall (netbsd-arm64-cgo), const SYS_DUP3 ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_EXECVE = 59 -pkg syscall (netbsd-arm64-cgo), const SYS_EXECVE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_EXIT = 1 -pkg syscall (netbsd-arm64-cgo), const SYS_EXIT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTRCTL = 360 -pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTRCTL ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_DELETE_FD = 366 -pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_DELETE_FD ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_DELETE_FILE = 363 -pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_DELETE_FILE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_DELETE_LINK = 369 -pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_DELETE_LINK ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_GET_FD = 365 -pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_GET_FD ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_GET_FILE = 362 -pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_GET_FILE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_GET_LINK = 368 -pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_GET_LINK ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_LIST_FD = 370 -pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_LIST_FD ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_LIST_FILE = 371 -pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_LIST_FILE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_LIST_LINK = 372 -pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_LIST_LINK ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_SET_FD = 364 -pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_SET_FD ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_SET_FILE = 361 -pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_SET_FILE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_SET_LINK = 367 -pkg syscall (netbsd-arm64-cgo), const SYS_EXTATTR_SET_LINK ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_FACCESSAT = 462 -pkg syscall (netbsd-arm64-cgo), const SYS_FACCESSAT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_FCHDIR = 13 -pkg syscall (netbsd-arm64-cgo), const SYS_FCHDIR ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_FCHFLAGS = 35 -pkg syscall (netbsd-arm64-cgo), const SYS_FCHFLAGS ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_FCHMOD = 124 -pkg syscall (netbsd-arm64-cgo), const SYS_FCHMOD ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_FCHMODAT = 463 -pkg syscall (netbsd-arm64-cgo), const SYS_FCHMODAT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_FCHOWN = 123 -pkg syscall (netbsd-arm64-cgo), const SYS_FCHOWN ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_FCHOWNAT = 464 -pkg syscall (netbsd-arm64-cgo), const SYS_FCHOWNAT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_FCHROOT = 297 -pkg syscall (netbsd-arm64-cgo), const SYS_FCHROOT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_FCNTL = 92 -pkg syscall (netbsd-arm64-cgo), const SYS_FCNTL ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_FDATASYNC = 241 -pkg syscall (netbsd-arm64-cgo), const SYS_FDATASYNC ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_FEXECVE = 465 -pkg syscall (netbsd-arm64-cgo), const SYS_FEXECVE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_FGETXATTR = 380 -pkg syscall (netbsd-arm64-cgo), const SYS_FGETXATTR ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_FHSTAT = 451 -pkg syscall (netbsd-arm64-cgo), const SYS_FHSTAT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_FKTRACE = 288 -pkg syscall (netbsd-arm64-cgo), const SYS_FKTRACE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_FLISTXATTR = 383 -pkg syscall (netbsd-arm64-cgo), const SYS_FLISTXATTR ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_FLOCK = 131 -pkg syscall (netbsd-arm64-cgo), const SYS_FLOCK ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_FORK = 2 -pkg syscall (netbsd-arm64-cgo), const SYS_FORK ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_FPATHCONF = 192 -pkg syscall (netbsd-arm64-cgo), const SYS_FPATHCONF ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_FREMOVEXATTR = 386 -pkg syscall (netbsd-arm64-cgo), const SYS_FREMOVEXATTR ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_FSETXATTR = 377 -pkg syscall (netbsd-arm64-cgo), const SYS_FSETXATTR ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_FSTAT = 440 -pkg syscall (netbsd-arm64-cgo), const SYS_FSTAT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_FSTATAT = 466 -pkg syscall (netbsd-arm64-cgo), const SYS_FSTATAT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_FSTATVFS1 = 358 -pkg syscall (netbsd-arm64-cgo), const SYS_FSTATVFS1 ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_FSYNC = 95 -pkg syscall (netbsd-arm64-cgo), const SYS_FSYNC ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_FSYNC_RANGE = 354 -pkg syscall (netbsd-arm64-cgo), const SYS_FSYNC_RANGE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_FTRUNCATE = 201 -pkg syscall (netbsd-arm64-cgo), const SYS_FTRUNCATE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_FUTIMENS = 472 -pkg syscall (netbsd-arm64-cgo), const SYS_FUTIMENS ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_FUTIMES = 423 -pkg syscall (netbsd-arm64-cgo), const SYS_FUTIMES ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_GETCONTEXT = 307 -pkg syscall (netbsd-arm64-cgo), const SYS_GETCONTEXT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_GETDENTS = 390 -pkg syscall (netbsd-arm64-cgo), const SYS_GETDENTS ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_GETEGID = 43 -pkg syscall (netbsd-arm64-cgo), const SYS_GETEGID ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_GETEUID = 25 -pkg syscall (netbsd-arm64-cgo), const SYS_GETEUID ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_GETFH = 395 -pkg syscall (netbsd-arm64-cgo), const SYS_GETFH ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_GETGID = 47 -pkg syscall (netbsd-arm64-cgo), const SYS_GETGID ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_GETGROUPS = 79 -pkg syscall (netbsd-arm64-cgo), const SYS_GETGROUPS ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_GETITIMER = 426 -pkg syscall (netbsd-arm64-cgo), const SYS_GETITIMER ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_GETPEERNAME = 31 -pkg syscall (netbsd-arm64-cgo), const SYS_GETPEERNAME ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_GETPGID = 207 -pkg syscall (netbsd-arm64-cgo), const SYS_GETPGID ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_GETPGRP = 81 -pkg syscall (netbsd-arm64-cgo), const SYS_GETPGRP ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_GETPID = 20 -pkg syscall (netbsd-arm64-cgo), const SYS_GETPID ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_GETPPID = 39 -pkg syscall (netbsd-arm64-cgo), const SYS_GETPPID ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_GETPRIORITY = 100 -pkg syscall (netbsd-arm64-cgo), const SYS_GETPRIORITY ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_GETRLIMIT = 194 -pkg syscall (netbsd-arm64-cgo), const SYS_GETRLIMIT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_GETRUSAGE = 445 -pkg syscall (netbsd-arm64-cgo), const SYS_GETRUSAGE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_GETSID = 286 -pkg syscall (netbsd-arm64-cgo), const SYS_GETSID ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_GETSOCKNAME = 32 -pkg syscall (netbsd-arm64-cgo), const SYS_GETSOCKNAME ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_GETSOCKOPT = 118 -pkg syscall (netbsd-arm64-cgo), const SYS_GETSOCKOPT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_GETTIMEOFDAY = 418 -pkg syscall (netbsd-arm64-cgo), const SYS_GETTIMEOFDAY ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_GETUID = 24 -pkg syscall (netbsd-arm64-cgo), const SYS_GETUID ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_GETVFSSTAT = 356 -pkg syscall (netbsd-arm64-cgo), const SYS_GETVFSSTAT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_GETXATTR = 378 -pkg syscall (netbsd-arm64-cgo), const SYS_GETXATTR ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_IOCTL = 54 -pkg syscall (netbsd-arm64-cgo), const SYS_IOCTL ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_ISSETUGID = 305 -pkg syscall (netbsd-arm64-cgo), const SYS_ISSETUGID ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_KEVENT = 435 -pkg syscall (netbsd-arm64-cgo), const SYS_KEVENT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_KILL = 37 -pkg syscall (netbsd-arm64-cgo), const SYS_KILL ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_KQUEUE = 344 -pkg syscall (netbsd-arm64-cgo), const SYS_KQUEUE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_KQUEUE1 = 455 -pkg syscall (netbsd-arm64-cgo), const SYS_KQUEUE1 ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_KTRACE = 45 -pkg syscall (netbsd-arm64-cgo), const SYS_KTRACE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_LCHFLAGS = 304 -pkg syscall (netbsd-arm64-cgo), const SYS_LCHFLAGS ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_LCHMOD = 274 -pkg syscall (netbsd-arm64-cgo), const SYS_LCHMOD ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_LCHOWN = 275 -pkg syscall (netbsd-arm64-cgo), const SYS_LCHOWN ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_LGETXATTR = 379 -pkg syscall (netbsd-arm64-cgo), const SYS_LGETXATTR ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_LINK = 9 -pkg syscall (netbsd-arm64-cgo), const SYS_LINK ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_LINKAT = 457 -pkg syscall (netbsd-arm64-cgo), const SYS_LINKAT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_LISTEN = 106 -pkg syscall (netbsd-arm64-cgo), const SYS_LISTEN ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_LISTXATTR = 381 -pkg syscall (netbsd-arm64-cgo), const SYS_LISTXATTR ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_LLISTXATTR = 382 -pkg syscall (netbsd-arm64-cgo), const SYS_LLISTXATTR ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_LREMOVEXATTR = 385 -pkg syscall (netbsd-arm64-cgo), const SYS_LREMOVEXATTR ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_LSEEK = 199 -pkg syscall (netbsd-arm64-cgo), const SYS_LSEEK ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_LSETXATTR = 376 -pkg syscall (netbsd-arm64-cgo), const SYS_LSETXATTR ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_LSTAT = 441 -pkg syscall (netbsd-arm64-cgo), const SYS_LSTAT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_LUTIMES = 424 -pkg syscall (netbsd-arm64-cgo), const SYS_LUTIMES ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_MADVISE = 75 -pkg syscall (netbsd-arm64-cgo), const SYS_MADVISE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_MINCORE = 78 -pkg syscall (netbsd-arm64-cgo), const SYS_MINCORE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_MINHERIT = 273 -pkg syscall (netbsd-arm64-cgo), const SYS_MINHERIT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_MKDIR = 136 -pkg syscall (netbsd-arm64-cgo), const SYS_MKDIR ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_MKDIRAT = 461 -pkg syscall (netbsd-arm64-cgo), const SYS_MKDIRAT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_MKFIFO = 132 -pkg syscall (netbsd-arm64-cgo), const SYS_MKFIFO ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_MKFIFOAT = 459 -pkg syscall (netbsd-arm64-cgo), const SYS_MKFIFOAT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_MKNOD = 450 -pkg syscall (netbsd-arm64-cgo), const SYS_MKNOD ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_MKNODAT = 460 -pkg syscall (netbsd-arm64-cgo), const SYS_MKNODAT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_MLOCK = 203 -pkg syscall (netbsd-arm64-cgo), const SYS_MLOCK ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_MLOCKALL = 242 -pkg syscall (netbsd-arm64-cgo), const SYS_MLOCKALL ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_MMAP = 197 -pkg syscall (netbsd-arm64-cgo), const SYS_MMAP ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_MODCTL = 246 -pkg syscall (netbsd-arm64-cgo), const SYS_MODCTL ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_MOUNT = 410 -pkg syscall (netbsd-arm64-cgo), const SYS_MOUNT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_MPROTECT = 74 -pkg syscall (netbsd-arm64-cgo), const SYS_MPROTECT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_MREMAP = 411 -pkg syscall (netbsd-arm64-cgo), const SYS_MREMAP ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_MSGCTL = 444 -pkg syscall (netbsd-arm64-cgo), const SYS_MSGCTL ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_MSGGET = 225 -pkg syscall (netbsd-arm64-cgo), const SYS_MSGGET ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_MSGRCV = 227 -pkg syscall (netbsd-arm64-cgo), const SYS_MSGRCV ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_MSGSND = 226 -pkg syscall (netbsd-arm64-cgo), const SYS_MSGSND ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_MUNLOCK = 204 -pkg syscall (netbsd-arm64-cgo), const SYS_MUNLOCK ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_MUNLOCKALL = 243 -pkg syscall (netbsd-arm64-cgo), const SYS_MUNLOCKALL ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_MUNMAP = 73 -pkg syscall (netbsd-arm64-cgo), const SYS_MUNMAP ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_NANOSLEEP = 430 -pkg syscall (netbsd-arm64-cgo), const SYS_NANOSLEEP ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_NTP_ADJTIME = 176 -pkg syscall (netbsd-arm64-cgo), const SYS_NTP_ADJTIME ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_NTP_GETTIME = 448 -pkg syscall (netbsd-arm64-cgo), const SYS_NTP_GETTIME ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_OPEN = 5 -pkg syscall (netbsd-arm64-cgo), const SYS_OPEN ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_OPENAT = 468 -pkg syscall (netbsd-arm64-cgo), const SYS_OPENAT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_PACCEPT = 456 -pkg syscall (netbsd-arm64-cgo), const SYS_PACCEPT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_PATHCONF = 191 -pkg syscall (netbsd-arm64-cgo), const SYS_PATHCONF ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_PIPE = 42 -pkg syscall (netbsd-arm64-cgo), const SYS_PIPE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_PIPE2 = 453 -pkg syscall (netbsd-arm64-cgo), const SYS_PIPE2 ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_PMC_CONTROL = 342 -pkg syscall (netbsd-arm64-cgo), const SYS_PMC_CONTROL ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_PMC_GET_INFO = 341 -pkg syscall (netbsd-arm64-cgo), const SYS_PMC_GET_INFO ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_POLL = 209 -pkg syscall (netbsd-arm64-cgo), const SYS_POLL ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_POLLTS = 437 -pkg syscall (netbsd-arm64-cgo), const SYS_POLLTS ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_POSIX_FADVISE = 416 -pkg syscall (netbsd-arm64-cgo), const SYS_POSIX_FADVISE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_POSIX_SPAWN = 474 -pkg syscall (netbsd-arm64-cgo), const SYS_POSIX_SPAWN ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_PREAD = 173 -pkg syscall (netbsd-arm64-cgo), const SYS_PREAD ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_PREADV = 289 -pkg syscall (netbsd-arm64-cgo), const SYS_PREADV ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_PROFIL = 44 -pkg syscall (netbsd-arm64-cgo), const SYS_PROFIL ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_PSELECT = 436 -pkg syscall (netbsd-arm64-cgo), const SYS_PSELECT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_PSET_ASSIGN = 414 -pkg syscall (netbsd-arm64-cgo), const SYS_PSET_ASSIGN ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_PSET_CREATE = 412 -pkg syscall (netbsd-arm64-cgo), const SYS_PSET_CREATE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_PSET_DESTROY = 413 -pkg syscall (netbsd-arm64-cgo), const SYS_PSET_DESTROY ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_PTRACE = 26 -pkg syscall (netbsd-arm64-cgo), const SYS_PTRACE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_PWRITE = 174 -pkg syscall (netbsd-arm64-cgo), const SYS_PWRITE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_PWRITEV = 290 -pkg syscall (netbsd-arm64-cgo), const SYS_PWRITEV ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_RASCTL = 343 -pkg syscall (netbsd-arm64-cgo), const SYS_RASCTL ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_READ = 3 -pkg syscall (netbsd-arm64-cgo), const SYS_READ ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_READLINK = 58 -pkg syscall (netbsd-arm64-cgo), const SYS_READLINK ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_READLINKAT = 469 -pkg syscall (netbsd-arm64-cgo), const SYS_READLINKAT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_READV = 120 -pkg syscall (netbsd-arm64-cgo), const SYS_READV ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_REBOOT = 208 -pkg syscall (netbsd-arm64-cgo), const SYS_REBOOT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_RECVFROM = 29 -pkg syscall (netbsd-arm64-cgo), const SYS_RECVFROM ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_RECVMMSG = 475 -pkg syscall (netbsd-arm64-cgo), const SYS_RECVMMSG ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_RECVMSG = 27 -pkg syscall (netbsd-arm64-cgo), const SYS_RECVMSG ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_REMOVEXATTR = 384 -pkg syscall (netbsd-arm64-cgo), const SYS_REMOVEXATTR ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_RENAME = 128 -pkg syscall (netbsd-arm64-cgo), const SYS_RENAME ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_RENAMEAT = 458 -pkg syscall (netbsd-arm64-cgo), const SYS_RENAMEAT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_REVOKE = 56 -pkg syscall (netbsd-arm64-cgo), const SYS_REVOKE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_RMDIR = 137 -pkg syscall (netbsd-arm64-cgo), const SYS_RMDIR ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SBRK = 69 -pkg syscall (netbsd-arm64-cgo), const SYS_SBRK ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SCHED_YIELD = 350 -pkg syscall (netbsd-arm64-cgo), const SYS_SCHED_YIELD ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SELECT = 417 -pkg syscall (netbsd-arm64-cgo), const SYS_SELECT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SEMCONFIG = 223 -pkg syscall (netbsd-arm64-cgo), const SYS_SEMCONFIG ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SEMGET = 221 -pkg syscall (netbsd-arm64-cgo), const SYS_SEMGET ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SEMOP = 222 -pkg syscall (netbsd-arm64-cgo), const SYS_SEMOP ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SENDMMSG = 476 -pkg syscall (netbsd-arm64-cgo), const SYS_SENDMMSG ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SENDMSG = 28 -pkg syscall (netbsd-arm64-cgo), const SYS_SENDMSG ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SENDTO = 133 -pkg syscall (netbsd-arm64-cgo), const SYS_SENDTO ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SETCONTEXT = 308 -pkg syscall (netbsd-arm64-cgo), const SYS_SETCONTEXT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SETEGID = 182 -pkg syscall (netbsd-arm64-cgo), const SYS_SETEGID ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SETEUID = 183 -pkg syscall (netbsd-arm64-cgo), const SYS_SETEUID ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SETGID = 181 -pkg syscall (netbsd-arm64-cgo), const SYS_SETGID ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SETGROUPS = 80 -pkg syscall (netbsd-arm64-cgo), const SYS_SETGROUPS ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SETITIMER = 425 -pkg syscall (netbsd-arm64-cgo), const SYS_SETITIMER ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SETPGID = 82 -pkg syscall (netbsd-arm64-cgo), const SYS_SETPGID ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SETPRIORITY = 96 -pkg syscall (netbsd-arm64-cgo), const SYS_SETPRIORITY ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SETREGID = 127 -pkg syscall (netbsd-arm64-cgo), const SYS_SETREGID ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SETREUID = 126 -pkg syscall (netbsd-arm64-cgo), const SYS_SETREUID ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SETRLIMIT = 195 -pkg syscall (netbsd-arm64-cgo), const SYS_SETRLIMIT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SETSID = 147 -pkg syscall (netbsd-arm64-cgo), const SYS_SETSID ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SETSOCKOPT = 105 -pkg syscall (netbsd-arm64-cgo), const SYS_SETSOCKOPT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SETTIMEOFDAY = 419 -pkg syscall (netbsd-arm64-cgo), const SYS_SETTIMEOFDAY ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SETUID = 23 -pkg syscall (netbsd-arm64-cgo), const SYS_SETUID ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SETXATTR = 375 -pkg syscall (netbsd-arm64-cgo), const SYS_SETXATTR ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SHMAT = 228 -pkg syscall (netbsd-arm64-cgo), const SYS_SHMAT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SHMCTL = 443 -pkg syscall (netbsd-arm64-cgo), const SYS_SHMCTL ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SHMDT = 230 -pkg syscall (netbsd-arm64-cgo), const SYS_SHMDT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SHMGET = 231 -pkg syscall (netbsd-arm64-cgo), const SYS_SHMGET ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SHUTDOWN = 134 -pkg syscall (netbsd-arm64-cgo), const SYS_SHUTDOWN ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SIGQUEUEINFO = 245 -pkg syscall (netbsd-arm64-cgo), const SYS_SIGQUEUEINFO ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SOCKET = 394 -pkg syscall (netbsd-arm64-cgo), const SYS_SOCKET ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SOCKETPAIR = 135 -pkg syscall (netbsd-arm64-cgo), const SYS_SOCKETPAIR ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SSTK = 70 -pkg syscall (netbsd-arm64-cgo), const SYS_SSTK ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_STAT = 439 -pkg syscall (netbsd-arm64-cgo), const SYS_STAT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_STATVFS1 = 357 -pkg syscall (netbsd-arm64-cgo), const SYS_STATVFS1 ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SWAPCTL = 271 -pkg syscall (netbsd-arm64-cgo), const SYS_SWAPCTL ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SYMLINK = 57 -pkg syscall (netbsd-arm64-cgo), const SYS_SYMLINK ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SYMLINKAT = 470 -pkg syscall (netbsd-arm64-cgo), const SYS_SYMLINKAT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SYNC = 36 -pkg syscall (netbsd-arm64-cgo), const SYS_SYNC ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_SYSARCH = 165 -pkg syscall (netbsd-arm64-cgo), const SYS_SYSARCH ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_TIMER_CREATE = 235 -pkg syscall (netbsd-arm64-cgo), const SYS_TIMER_CREATE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_TIMER_DELETE = 236 -pkg syscall (netbsd-arm64-cgo), const SYS_TIMER_DELETE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_TIMER_GETOVERRUN = 239 -pkg syscall (netbsd-arm64-cgo), const SYS_TIMER_GETOVERRUN ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_TIMER_GETTIME = 447 -pkg syscall (netbsd-arm64-cgo), const SYS_TIMER_GETTIME ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_TIMER_SETTIME = 446 -pkg syscall (netbsd-arm64-cgo), const SYS_TIMER_SETTIME ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_TRUNCATE = 200 -pkg syscall (netbsd-arm64-cgo), const SYS_TRUNCATE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_UMASK = 60 -pkg syscall (netbsd-arm64-cgo), const SYS_UMASK ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_UNDELETE = 205 -pkg syscall (netbsd-arm64-cgo), const SYS_UNDELETE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_UNLINK = 10 -pkg syscall (netbsd-arm64-cgo), const SYS_UNLINK ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_UNLINKAT = 471 -pkg syscall (netbsd-arm64-cgo), const SYS_UNLINKAT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_UNMOUNT = 22 -pkg syscall (netbsd-arm64-cgo), const SYS_UNMOUNT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_UTIMENSAT = 467 -pkg syscall (netbsd-arm64-cgo), const SYS_UTIMENSAT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_UTIMES = 420 -pkg syscall (netbsd-arm64-cgo), const SYS_UTIMES ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_UTRACE = 306 -pkg syscall (netbsd-arm64-cgo), const SYS_UTRACE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_UUIDGEN = 355 -pkg syscall (netbsd-arm64-cgo), const SYS_UUIDGEN ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_VADVISE = 72 -pkg syscall (netbsd-arm64-cgo), const SYS_VADVISE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_VFORK = 66 -pkg syscall (netbsd-arm64-cgo), const SYS_VFORK ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_WAIT4 = 449 -pkg syscall (netbsd-arm64-cgo), const SYS_WAIT4 ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_WRITE = 4 -pkg syscall (netbsd-arm64-cgo), const SYS_WRITE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS_WRITEV = 121 -pkg syscall (netbsd-arm64-cgo), const SYS_WRITEV ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_CONTINUE = 314 -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_CONTINUE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_CREATE = 309 -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_CREATE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_CTL = 325 -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_CTL ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_DETACH = 319 -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_DETACH ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_EXIT = 310 -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_EXIT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_GETNAME = 324 -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_GETNAME ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_GETPRIVATE = 316 -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_GETPRIVATE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_KILL = 318 -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_KILL ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_PARK = 434 -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_PARK ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_SELF = 311 -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_SELF ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_SETNAME = 323 -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_SETNAME ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_SETPRIVATE = 317 -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_SETPRIVATE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_SUSPEND = 313 -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_SUSPEND ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_UNPARK = 321 -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_UNPARK ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_UNPARK_ALL = 322 -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_UNPARK_ALL ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_WAIT = 312 -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_WAIT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_WAKEUP = 315 -pkg syscall (netbsd-arm64-cgo), const SYS__LWP_WAKEUP ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS__PSET_BIND = 415 -pkg syscall (netbsd-arm64-cgo), const SYS__PSET_BIND ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS__SCHED_GETAFFINITY = 349 -pkg syscall (netbsd-arm64-cgo), const SYS__SCHED_GETAFFINITY ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS__SCHED_GETPARAM = 347 -pkg syscall (netbsd-arm64-cgo), const SYS__SCHED_GETPARAM ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS__SCHED_SETAFFINITY = 348 -pkg syscall (netbsd-arm64-cgo), const SYS__SCHED_SETAFFINITY ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS__SCHED_SETPARAM = 346 -pkg syscall (netbsd-arm64-cgo), const SYS__SCHED_SETPARAM ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS___CLONE = 287 -pkg syscall (netbsd-arm64-cgo), const SYS___CLONE ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS___GETCWD = 296 -pkg syscall (netbsd-arm64-cgo), const SYS___GETCWD ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS___GETLOGIN = 49 -pkg syscall (netbsd-arm64-cgo), const SYS___GETLOGIN ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS___POSIX_CHOWN = 283 -pkg syscall (netbsd-arm64-cgo), const SYS___POSIX_CHOWN ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS___POSIX_FCHOWN = 284 -pkg syscall (netbsd-arm64-cgo), const SYS___POSIX_FCHOWN ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS___POSIX_LCHOWN = 285 -pkg syscall (netbsd-arm64-cgo), const SYS___POSIX_LCHOWN ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS___POSIX_RENAME = 270 -pkg syscall (netbsd-arm64-cgo), const SYS___POSIX_RENAME ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS___QUOTACTL = 473 -pkg syscall (netbsd-arm64-cgo), const SYS___QUOTACTL ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS___SEMCTL = 442 -pkg syscall (netbsd-arm64-cgo), const SYS___SEMCTL ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS___SETLOGIN = 50 -pkg syscall (netbsd-arm64-cgo), const SYS___SETLOGIN ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS___SIGACTION_SIGTRAMP = 340 -pkg syscall (netbsd-arm64-cgo), const SYS___SIGACTION_SIGTRAMP ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS___SIGTIMEDWAIT = 431 -pkg syscall (netbsd-arm64-cgo), const SYS___SIGTIMEDWAIT ideal-int -pkg syscall (netbsd-arm64-cgo), const SYS___SYSCTL = 202 -pkg syscall (netbsd-arm64-cgo), const SYS___SYSCTL ideal-int -pkg syscall (netbsd-arm64-cgo), const S_ARCH1 = 65536 -pkg syscall (netbsd-arm64-cgo), const S_ARCH1 ideal-int -pkg syscall (netbsd-arm64-cgo), const S_ARCH2 = 131072 -pkg syscall (netbsd-arm64-cgo), const S_ARCH2 ideal-int -pkg syscall (netbsd-arm64-cgo), const S_BLKSIZE = 512 -pkg syscall (netbsd-arm64-cgo), const S_BLKSIZE ideal-int -pkg syscall (netbsd-arm64-cgo), const S_IEXEC = 64 -pkg syscall (netbsd-arm64-cgo), const S_IEXEC ideal-int -pkg syscall (netbsd-arm64-cgo), const S_IFMT = 61440 -pkg syscall (netbsd-arm64-cgo), const S_IFWHT = 57344 -pkg syscall (netbsd-arm64-cgo), const S_IFWHT ideal-int -pkg syscall (netbsd-arm64-cgo), const S_IREAD = 256 -pkg syscall (netbsd-arm64-cgo), const S_IREAD ideal-int -pkg syscall (netbsd-arm64-cgo), const S_IRGRP = 32 -pkg syscall (netbsd-arm64-cgo), const S_IRGRP ideal-int -pkg syscall (netbsd-arm64-cgo), const S_IROTH = 4 -pkg syscall (netbsd-arm64-cgo), const S_IROTH ideal-int -pkg syscall (netbsd-arm64-cgo), const S_IRWXG = 56 -pkg syscall (netbsd-arm64-cgo), const S_IRWXG ideal-int -pkg syscall (netbsd-arm64-cgo), const S_IRWXO = 7 -pkg syscall (netbsd-arm64-cgo), const S_IRWXO ideal-int -pkg syscall (netbsd-arm64-cgo), const S_IRWXU = 448 -pkg syscall (netbsd-arm64-cgo), const S_IRWXU ideal-int -pkg syscall (netbsd-arm64-cgo), const S_ISTXT = 512 -pkg syscall (netbsd-arm64-cgo), const S_ISTXT ideal-int -pkg syscall (netbsd-arm64-cgo), const S_IWGRP = 16 -pkg syscall (netbsd-arm64-cgo), const S_IWGRP ideal-int -pkg syscall (netbsd-arm64-cgo), const S_IWOTH = 2 -pkg syscall (netbsd-arm64-cgo), const S_IWOTH ideal-int -pkg syscall (netbsd-arm64-cgo), const S_IWRITE = 128 -pkg syscall (netbsd-arm64-cgo), const S_IWRITE ideal-int -pkg syscall (netbsd-arm64-cgo), const S_IXGRP = 8 -pkg syscall (netbsd-arm64-cgo), const S_IXGRP ideal-int -pkg syscall (netbsd-arm64-cgo), const S_IXOTH = 1 -pkg syscall (netbsd-arm64-cgo), const S_IXOTH ideal-int -pkg syscall (netbsd-arm64-cgo), const S_LOGIN_SET = 1 -pkg syscall (netbsd-arm64-cgo), const S_LOGIN_SET ideal-int -pkg syscall (netbsd-arm64-cgo), const SizeofBpfHdr = 32 -pkg syscall (netbsd-arm64-cgo), const SizeofBpfHdr ideal-int -pkg syscall (netbsd-arm64-cgo), const SizeofBpfInsn = 8 -pkg syscall (netbsd-arm64-cgo), const SizeofBpfInsn ideal-int -pkg syscall (netbsd-arm64-cgo), const SizeofBpfProgram = 16 -pkg syscall (netbsd-arm64-cgo), const SizeofBpfProgram ideal-int -pkg syscall (netbsd-arm64-cgo), const SizeofBpfStat = 128 -pkg syscall (netbsd-arm64-cgo), const SizeofBpfStat ideal-int -pkg syscall (netbsd-arm64-cgo), const SizeofBpfVersion = 4 -pkg syscall (netbsd-arm64-cgo), const SizeofBpfVersion ideal-int -pkg syscall (netbsd-arm64-cgo), const SizeofCmsghdr = 12 -pkg syscall (netbsd-arm64-cgo), const SizeofCmsghdr ideal-int -pkg syscall (netbsd-arm64-cgo), const SizeofICMPv6Filter = 32 -pkg syscall (netbsd-arm64-cgo), const SizeofICMPv6Filter ideal-int -pkg syscall (netbsd-arm64-cgo), const SizeofIPMreq = 8 -pkg syscall (netbsd-arm64-cgo), const SizeofIPMreq ideal-int -pkg syscall (netbsd-arm64-cgo), const SizeofIPv6MTUInfo = 32 -pkg syscall (netbsd-arm64-cgo), const SizeofIPv6MTUInfo ideal-int -pkg syscall (netbsd-arm64-cgo), const SizeofIPv6Mreq = 20 -pkg syscall (netbsd-arm64-cgo), const SizeofIPv6Mreq ideal-int -pkg syscall (netbsd-arm64-cgo), const SizeofIfAnnounceMsghdr = 24 -pkg syscall (netbsd-arm64-cgo), const SizeofIfAnnounceMsghdr ideal-int -pkg syscall (netbsd-arm64-cgo), const SizeofIfData = 136 -pkg syscall (netbsd-arm64-cgo), const SizeofIfData ideal-int -pkg syscall (netbsd-arm64-cgo), const SizeofIfMsghdr = 152 -pkg syscall (netbsd-arm64-cgo), const SizeofIfMsghdr ideal-int -pkg syscall (netbsd-arm64-cgo), const SizeofIfaMsghdr = 24 -pkg syscall (netbsd-arm64-cgo), const SizeofIfaMsghdr ideal-int -pkg syscall (netbsd-arm64-cgo), const SizeofInet6Pktinfo = 20 -pkg syscall (netbsd-arm64-cgo), const SizeofInet6Pktinfo ideal-int -pkg syscall (netbsd-arm64-cgo), const SizeofLinger = 8 -pkg syscall (netbsd-arm64-cgo), const SizeofLinger ideal-int -pkg syscall (netbsd-arm64-cgo), const SizeofMsghdr = 48 -pkg syscall (netbsd-arm64-cgo), const SizeofMsghdr ideal-int -pkg syscall (netbsd-arm64-cgo), const SizeofRtMetrics = 80 -pkg syscall (netbsd-arm64-cgo), const SizeofRtMetrics ideal-int -pkg syscall (netbsd-arm64-cgo), const SizeofRtMsghdr = 120 -pkg syscall (netbsd-arm64-cgo), const SizeofRtMsghdr ideal-int -pkg syscall (netbsd-arm64-cgo), const SizeofSockaddrAny = 108 -pkg syscall (netbsd-arm64-cgo), const SizeofSockaddrAny ideal-int -pkg syscall (netbsd-arm64-cgo), const SizeofSockaddrDatalink = 20 -pkg syscall (netbsd-arm64-cgo), const SizeofSockaddrDatalink ideal-int -pkg syscall (netbsd-arm64-cgo), const SizeofSockaddrInet4 = 16 -pkg syscall (netbsd-arm64-cgo), const SizeofSockaddrInet4 ideal-int -pkg syscall (netbsd-arm64-cgo), const SizeofSockaddrInet6 = 28 -pkg syscall (netbsd-arm64-cgo), const SizeofSockaddrInet6 ideal-int -pkg syscall (netbsd-arm64-cgo), const SizeofSockaddrUnix = 106 -pkg syscall (netbsd-arm64-cgo), const SizeofSockaddrUnix ideal-int -pkg syscall (netbsd-arm64-cgo), const TCIFLUSH = 1 -pkg syscall (netbsd-arm64-cgo), const TCIFLUSH ideal-int -pkg syscall (netbsd-arm64-cgo), const TCIOFLUSH = 3 -pkg syscall (netbsd-arm64-cgo), const TCIOFLUSH ideal-int -pkg syscall (netbsd-arm64-cgo), const TCOFLUSH = 2 -pkg syscall (netbsd-arm64-cgo), const TCOFLUSH ideal-int -pkg syscall (netbsd-arm64-cgo), const TCP_CONGCTL = 32 -pkg syscall (netbsd-arm64-cgo), const TCP_CONGCTL ideal-int -pkg syscall (netbsd-arm64-cgo), const TCP_KEEPCNT = 6 -pkg syscall (netbsd-arm64-cgo), const TCP_KEEPCNT ideal-int -pkg syscall (netbsd-arm64-cgo), const TCP_KEEPIDLE = 3 -pkg syscall (netbsd-arm64-cgo), const TCP_KEEPIDLE ideal-int -pkg syscall (netbsd-arm64-cgo), const TCP_KEEPINIT = 7 -pkg syscall (netbsd-arm64-cgo), const TCP_KEEPINIT ideal-int -pkg syscall (netbsd-arm64-cgo), const TCP_KEEPINTVL = 5 -pkg syscall (netbsd-arm64-cgo), const TCP_KEEPINTVL ideal-int -pkg syscall (netbsd-arm64-cgo), const TCP_MAXBURST = 4 -pkg syscall (netbsd-arm64-cgo), const TCP_MAXBURST ideal-int -pkg syscall (netbsd-arm64-cgo), const TCP_MAXSEG = 2 -pkg syscall (netbsd-arm64-cgo), const TCP_MAXSEG ideal-int -pkg syscall (netbsd-arm64-cgo), const TCP_MAXWIN = 65535 -pkg syscall (netbsd-arm64-cgo), const TCP_MAXWIN ideal-int -pkg syscall (netbsd-arm64-cgo), const TCP_MAX_WINSHIFT = 14 -pkg syscall (netbsd-arm64-cgo), const TCP_MAX_WINSHIFT ideal-int -pkg syscall (netbsd-arm64-cgo), const TCP_MD5SIG = 16 -pkg syscall (netbsd-arm64-cgo), const TCP_MD5SIG ideal-int -pkg syscall (netbsd-arm64-cgo), const TCP_MINMSS = 216 -pkg syscall (netbsd-arm64-cgo), const TCP_MINMSS ideal-int -pkg syscall (netbsd-arm64-cgo), const TCP_MSS = 536 -pkg syscall (netbsd-arm64-cgo), const TCP_MSS ideal-int -pkg syscall (netbsd-arm64-cgo), const TCSAFLUSH = 2 -pkg syscall (netbsd-arm64-cgo), const TCSAFLUSH ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCCBRK = 536900730 -pkg syscall (netbsd-arm64-cgo), const TIOCCBRK ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCCDTR = 536900728 -pkg syscall (netbsd-arm64-cgo), const TIOCCDTR ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCCONS = 2147775586 -pkg syscall (netbsd-arm64-cgo), const TIOCCONS ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCDCDTIMESTAMP = 1074820184 -pkg syscall (netbsd-arm64-cgo), const TIOCDCDTIMESTAMP ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCDRAIN = 536900702 -pkg syscall (netbsd-arm64-cgo), const TIOCDRAIN ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCEXCL = 536900621 -pkg syscall (netbsd-arm64-cgo), const TIOCEXCL ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCEXT = 2147775584 -pkg syscall (netbsd-arm64-cgo), const TIOCEXT ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCFLAG_CDTRCTS = 16 -pkg syscall (netbsd-arm64-cgo), const TIOCFLAG_CDTRCTS ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCFLAG_CLOCAL = 2 -pkg syscall (netbsd-arm64-cgo), const TIOCFLAG_CLOCAL ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCFLAG_CRTSCTS = 4 -pkg syscall (netbsd-arm64-cgo), const TIOCFLAG_CRTSCTS ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCFLAG_MDMBUF = 8 -pkg syscall (netbsd-arm64-cgo), const TIOCFLAG_MDMBUF ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCFLAG_SOFTCAR = 1 -pkg syscall (netbsd-arm64-cgo), const TIOCFLAG_SOFTCAR ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCFLUSH = 2147775504 -pkg syscall (netbsd-arm64-cgo), const TIOCFLUSH ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCGETA = 1076655123 -pkg syscall (netbsd-arm64-cgo), const TIOCGETA ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCGETD = 1074033690 -pkg syscall (netbsd-arm64-cgo), const TIOCGETD ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCGFLAGS = 1074033757 -pkg syscall (netbsd-arm64-cgo), const TIOCGFLAGS ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCGLINED = 1075868738 -pkg syscall (netbsd-arm64-cgo), const TIOCGLINED ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCGPGRP = 1074033783 -pkg syscall (netbsd-arm64-cgo), const TIOCGPGRP ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCGQSIZE = 1074033793 -pkg syscall (netbsd-arm64-cgo), const TIOCGQSIZE ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCGRANTPT = 536900679 -pkg syscall (netbsd-arm64-cgo), const TIOCGRANTPT ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCGSID = 1074033763 -pkg syscall (netbsd-arm64-cgo), const TIOCGSID ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCGSIZE = 1074295912 -pkg syscall (netbsd-arm64-cgo), const TIOCGSIZE ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCGWINSZ = 1074295912 -pkg syscall (netbsd-arm64-cgo), const TIOCGWINSZ ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCMBIC = 2147775595 -pkg syscall (netbsd-arm64-cgo), const TIOCMBIC ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCMBIS = 2147775596 -pkg syscall (netbsd-arm64-cgo), const TIOCMBIS ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCMGET = 1074033770 -pkg syscall (netbsd-arm64-cgo), const TIOCMGET ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCMSET = 2147775597 -pkg syscall (netbsd-arm64-cgo), const TIOCMSET ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCM_CAR = 64 -pkg syscall (netbsd-arm64-cgo), const TIOCM_CAR ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCM_CD = 64 -pkg syscall (netbsd-arm64-cgo), const TIOCM_CD ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCM_CTS = 32 -pkg syscall (netbsd-arm64-cgo), const TIOCM_CTS ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCM_DSR = 256 -pkg syscall (netbsd-arm64-cgo), const TIOCM_DSR ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCM_DTR = 2 -pkg syscall (netbsd-arm64-cgo), const TIOCM_DTR ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCM_LE = 1 -pkg syscall (netbsd-arm64-cgo), const TIOCM_LE ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCM_RI = 128 -pkg syscall (netbsd-arm64-cgo), const TIOCM_RI ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCM_RNG = 128 -pkg syscall (netbsd-arm64-cgo), const TIOCM_RNG ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCM_RTS = 4 -pkg syscall (netbsd-arm64-cgo), const TIOCM_RTS ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCM_SR = 16 -pkg syscall (netbsd-arm64-cgo), const TIOCM_SR ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCM_ST = 8 -pkg syscall (netbsd-arm64-cgo), const TIOCM_ST ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCNOTTY = 536900721 -pkg syscall (netbsd-arm64-cgo), const TIOCNOTTY ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCNXCL = 536900622 -pkg syscall (netbsd-arm64-cgo), const TIOCNXCL ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCOUTQ = 1074033779 -pkg syscall (netbsd-arm64-cgo), const TIOCOUTQ ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCPKT = 2147775600 -pkg syscall (netbsd-arm64-cgo), const TIOCPKT ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCPKT_DATA = 0 -pkg syscall (netbsd-arm64-cgo), const TIOCPKT_DATA ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCPKT_DOSTOP = 32 -pkg syscall (netbsd-arm64-cgo), const TIOCPKT_DOSTOP ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCPKT_FLUSHREAD = 1 -pkg syscall (netbsd-arm64-cgo), const TIOCPKT_FLUSHREAD ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCPKT_FLUSHWRITE = 2 -pkg syscall (netbsd-arm64-cgo), const TIOCPKT_FLUSHWRITE ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCPKT_IOCTL = 64 -pkg syscall (netbsd-arm64-cgo), const TIOCPKT_IOCTL ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCPKT_NOSTOP = 16 -pkg syscall (netbsd-arm64-cgo), const TIOCPKT_NOSTOP ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCPKT_START = 8 -pkg syscall (netbsd-arm64-cgo), const TIOCPKT_START ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCPKT_STOP = 4 -pkg syscall (netbsd-arm64-cgo), const TIOCPKT_STOP ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCPTMGET = 1076393030 -pkg syscall (netbsd-arm64-cgo), const TIOCPTMGET ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCPTSNAME = 1076393032 -pkg syscall (netbsd-arm64-cgo), const TIOCPTSNAME ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCRCVFRAME = 2148037701 -pkg syscall (netbsd-arm64-cgo), const TIOCRCVFRAME ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCREMOTE = 2147775593 -pkg syscall (netbsd-arm64-cgo), const TIOCREMOTE ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCSBRK = 536900731 -pkg syscall (netbsd-arm64-cgo), const TIOCSBRK ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCSCTTY = 536900705 -pkg syscall (netbsd-arm64-cgo), const TIOCSCTTY ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCSDTR = 536900729 -pkg syscall (netbsd-arm64-cgo), const TIOCSDTR ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCSETA = 2150396948 -pkg syscall (netbsd-arm64-cgo), const TIOCSETA ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCSETAF = 2150396950 -pkg syscall (netbsd-arm64-cgo), const TIOCSETAF ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCSETAW = 2150396949 -pkg syscall (netbsd-arm64-cgo), const TIOCSETAW ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCSETD = 2147775515 -pkg syscall (netbsd-arm64-cgo), const TIOCSETD ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCSFLAGS = 2147775580 -pkg syscall (netbsd-arm64-cgo), const TIOCSFLAGS ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCSIG = 536900703 -pkg syscall (netbsd-arm64-cgo), const TIOCSIG ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCSLINED = 2149610563 -pkg syscall (netbsd-arm64-cgo), const TIOCSLINED ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCSPGRP = 2147775606 -pkg syscall (netbsd-arm64-cgo), const TIOCSPGRP ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCSQSIZE = 2147775616 -pkg syscall (netbsd-arm64-cgo), const TIOCSQSIZE ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCSSIZE = 2148037735 -pkg syscall (netbsd-arm64-cgo), const TIOCSSIZE ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCSTART = 536900718 -pkg syscall (netbsd-arm64-cgo), const TIOCSTART ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCSTAT = 2147775589 -pkg syscall (netbsd-arm64-cgo), const TIOCSTAT ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCSTI = 2147578994 -pkg syscall (netbsd-arm64-cgo), const TIOCSTI ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCSTOP = 536900719 -pkg syscall (netbsd-arm64-cgo), const TIOCSTOP ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCSWINSZ = 2148037735 -pkg syscall (netbsd-arm64-cgo), const TIOCSWINSZ ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCUCNTL = 2147775590 -pkg syscall (netbsd-arm64-cgo), const TIOCUCNTL ideal-int -pkg syscall (netbsd-arm64-cgo), const TIOCXMTFRAME = 2148037700 -pkg syscall (netbsd-arm64-cgo), const TIOCXMTFRAME ideal-int -pkg syscall (netbsd-arm64-cgo), const TOSTOP = 4194304 -pkg syscall (netbsd-arm64-cgo), const TOSTOP ideal-int -pkg syscall (netbsd-arm64-cgo), const VDISCARD = 15 -pkg syscall (netbsd-arm64-cgo), const VDISCARD ideal-int -pkg syscall (netbsd-arm64-cgo), const VDSUSP = 11 -pkg syscall (netbsd-arm64-cgo), const VDSUSP ideal-int -pkg syscall (netbsd-arm64-cgo), const VEOF = 0 -pkg syscall (netbsd-arm64-cgo), const VEOF ideal-int -pkg syscall (netbsd-arm64-cgo), const VEOL = 1 -pkg syscall (netbsd-arm64-cgo), const VEOL ideal-int -pkg syscall (netbsd-arm64-cgo), const VEOL2 = 2 -pkg syscall (netbsd-arm64-cgo), const VEOL2 ideal-int -pkg syscall (netbsd-arm64-cgo), const VERASE = 3 -pkg syscall (netbsd-arm64-cgo), const VERASE ideal-int -pkg syscall (netbsd-arm64-cgo), const VINTR = 8 -pkg syscall (netbsd-arm64-cgo), const VINTR ideal-int -pkg syscall (netbsd-arm64-cgo), const VKILL = 5 -pkg syscall (netbsd-arm64-cgo), const VKILL ideal-int -pkg syscall (netbsd-arm64-cgo), const VLNEXT = 14 -pkg syscall (netbsd-arm64-cgo), const VLNEXT ideal-int -pkg syscall (netbsd-arm64-cgo), const VMIN = 16 -pkg syscall (netbsd-arm64-cgo), const VMIN ideal-int -pkg syscall (netbsd-arm64-cgo), const VQUIT = 9 -pkg syscall (netbsd-arm64-cgo), const VQUIT ideal-int -pkg syscall (netbsd-arm64-cgo), const VREPRINT = 6 -pkg syscall (netbsd-arm64-cgo), const VREPRINT ideal-int -pkg syscall (netbsd-arm64-cgo), const VSTART = 12 -pkg syscall (netbsd-arm64-cgo), const VSTART ideal-int -pkg syscall (netbsd-arm64-cgo), const VSTATUS = 18 -pkg syscall (netbsd-arm64-cgo), const VSTATUS ideal-int -pkg syscall (netbsd-arm64-cgo), const VSTOP = 13 -pkg syscall (netbsd-arm64-cgo), const VSTOP ideal-int -pkg syscall (netbsd-arm64-cgo), const VSUSP = 10 -pkg syscall (netbsd-arm64-cgo), const VSUSP ideal-int -pkg syscall (netbsd-arm64-cgo), const VTIME = 17 -pkg syscall (netbsd-arm64-cgo), const VTIME ideal-int -pkg syscall (netbsd-arm64-cgo), const VWERASE = 4 -pkg syscall (netbsd-arm64-cgo), const VWERASE ideal-int -pkg syscall (netbsd-arm64-cgo), const WALL = 8 -pkg syscall (netbsd-arm64-cgo), const WALL ideal-int -pkg syscall (netbsd-arm64-cgo), const WALLSIG = 8 -pkg syscall (netbsd-arm64-cgo), const WALLSIG ideal-int -pkg syscall (netbsd-arm64-cgo), const WALTSIG = 4 -pkg syscall (netbsd-arm64-cgo), const WALTSIG ideal-int -pkg syscall (netbsd-arm64-cgo), const WCLONE = 4 -pkg syscall (netbsd-arm64-cgo), const WCLONE ideal-int -pkg syscall (netbsd-arm64-cgo), const WCOREFLAG = 128 -pkg syscall (netbsd-arm64-cgo), const WCOREFLAG ideal-int -pkg syscall (netbsd-arm64-cgo), const WNOHANG = 1 -pkg syscall (netbsd-arm64-cgo), const WNOHANG ideal-int -pkg syscall (netbsd-arm64-cgo), const WNOWAIT = 65536 -pkg syscall (netbsd-arm64-cgo), const WNOWAIT ideal-int -pkg syscall (netbsd-arm64-cgo), const WNOZOMBIE = 131072 -pkg syscall (netbsd-arm64-cgo), const WNOZOMBIE ideal-int -pkg syscall (netbsd-arm64-cgo), const WOPTSCHECKED = 262144 -pkg syscall (netbsd-arm64-cgo), const WOPTSCHECKED ideal-int -pkg syscall (netbsd-arm64-cgo), const WSTOPPED = 127 -pkg syscall (netbsd-arm64-cgo), const WSTOPPED ideal-int -pkg syscall (netbsd-arm64-cgo), const WUNTRACED = 2 -pkg syscall (netbsd-arm64-cgo), const WUNTRACED ideal-int -pkg syscall (netbsd-arm64-cgo), func Accept(int) (int, Sockaddr, error) -pkg syscall (netbsd-arm64-cgo), func Accept4(int, int) (int, Sockaddr, error) -pkg syscall (netbsd-arm64-cgo), func Access(string, uint32) error -pkg syscall (netbsd-arm64-cgo), func Adjtime(*Timeval, *Timeval) error -pkg syscall (netbsd-arm64-cgo), func Bind(int, Sockaddr) error -pkg syscall (netbsd-arm64-cgo), func BpfBuflen(int) (int, error) -pkg syscall (netbsd-arm64-cgo), func BpfDatalink(int) (int, error) -pkg syscall (netbsd-arm64-cgo), func BpfHeadercmpl(int) (int, error) -pkg syscall (netbsd-arm64-cgo), func BpfInterface(int, string) (string, error) -pkg syscall (netbsd-arm64-cgo), func BpfJump(int, int, int, int) *BpfInsn -pkg syscall (netbsd-arm64-cgo), func BpfStats(int) (*BpfStat, error) -pkg syscall (netbsd-arm64-cgo), func BpfStmt(int, int) *BpfInsn -pkg syscall (netbsd-arm64-cgo), func BpfTimeout(int) (*Timeval, error) -pkg syscall (netbsd-arm64-cgo), func CheckBpfVersion(int) error -pkg syscall (netbsd-arm64-cgo), func Chflags(string, int) error -pkg syscall (netbsd-arm64-cgo), func Chroot(string) error -pkg syscall (netbsd-arm64-cgo), func Close(int) error -pkg syscall (netbsd-arm64-cgo), func CloseOnExec(int) -pkg syscall (netbsd-arm64-cgo), func CmsgLen(int) int -pkg syscall (netbsd-arm64-cgo), func CmsgSpace(int) int -pkg syscall (netbsd-arm64-cgo), func Connect(int, Sockaddr) error -pkg syscall (netbsd-arm64-cgo), func Dup(int) (int, error) -pkg syscall (netbsd-arm64-cgo), func Dup2(int, int) error -pkg syscall (netbsd-arm64-cgo), func Fchdir(int) error -pkg syscall (netbsd-arm64-cgo), func Fchflags(int, int) error -pkg syscall (netbsd-arm64-cgo), func Fchmod(int, uint32) error -pkg syscall (netbsd-arm64-cgo), func Fchown(int, int, int) error -pkg syscall (netbsd-arm64-cgo), func FcntlFlock(uintptr, int, *Flock_t) error -pkg syscall (netbsd-arm64-cgo), func Flock(int, int) error -pkg syscall (netbsd-arm64-cgo), func FlushBpf(int) error -pkg syscall (netbsd-arm64-cgo), func ForkExec(string, []string, *ProcAttr) (int, error) -pkg syscall (netbsd-arm64-cgo), func Fpathconf(int, int) (int, error) -pkg syscall (netbsd-arm64-cgo), func Fstat(int, *Stat_t) error -pkg syscall (netbsd-arm64-cgo), func Fsync(int) error -pkg syscall (netbsd-arm64-cgo), func Ftruncate(int, int64) error -pkg syscall (netbsd-arm64-cgo), func Futimes(int, []Timeval) error -pkg syscall (netbsd-arm64-cgo), func Getdirentries(int, []uint8, *uintptr) (int, error) -pkg syscall (netbsd-arm64-cgo), func Getpeername(int) (Sockaddr, error) -pkg syscall (netbsd-arm64-cgo), func Getpgid(int) (int, error) -pkg syscall (netbsd-arm64-cgo), func Getpgrp() int -pkg syscall (netbsd-arm64-cgo), func Getpriority(int, int) (int, error) -pkg syscall (netbsd-arm64-cgo), func Getrlimit(int, *Rlimit) error -pkg syscall (netbsd-arm64-cgo), func Getrusage(int, *Rusage) error -pkg syscall (netbsd-arm64-cgo), func Getsid(int) (int, error) -pkg syscall (netbsd-arm64-cgo), func Getsockname(int) (Sockaddr, error) -pkg syscall (netbsd-arm64-cgo), func GetsockoptByte(int, int, int) (uint8, error) -pkg syscall (netbsd-arm64-cgo), func GetsockoptICMPv6Filter(int, int, int) (*ICMPv6Filter, error) -pkg syscall (netbsd-arm64-cgo), func GetsockoptIPMreq(int, int, int) (*IPMreq, error) -pkg syscall (netbsd-arm64-cgo), func GetsockoptIPv6MTUInfo(int, int, int) (*IPv6MTUInfo, error) -pkg syscall (netbsd-arm64-cgo), func GetsockoptIPv6Mreq(int, int, int) (*IPv6Mreq, error) -pkg syscall (netbsd-arm64-cgo), func GetsockoptInet4Addr(int, int, int) ([4]uint8, error) -pkg syscall (netbsd-arm64-cgo), func GetsockoptInt(int, int, int) (int, error) -pkg syscall (netbsd-arm64-cgo), func Issetugid() bool -pkg syscall (netbsd-arm64-cgo), func Kevent(int, []Kevent_t, []Kevent_t, *Timespec) (int, error) -pkg syscall (netbsd-arm64-cgo), func Kill(int, Signal) error -pkg syscall (netbsd-arm64-cgo), func Kqueue() (int, error) -pkg syscall (netbsd-arm64-cgo), func Listen(int, int) error -pkg syscall (netbsd-arm64-cgo), func Lstat(string, *Stat_t) error -pkg syscall (netbsd-arm64-cgo), func Mkfifo(string, uint32) error -pkg syscall (netbsd-arm64-cgo), func Mknod(string, uint32, int) error -pkg syscall (netbsd-arm64-cgo), func Mmap(int, int64, int, int, int) ([]uint8, error) -pkg syscall (netbsd-arm64-cgo), func Munmap([]uint8) error -pkg syscall (netbsd-arm64-cgo), func Nanosleep(*Timespec, *Timespec) error -pkg syscall (netbsd-arm64-cgo), func Open(string, int, uint32) (int, error) -pkg syscall (netbsd-arm64-cgo), func ParseDirent([]uint8, int, []string) (int, int, []string) -pkg syscall (netbsd-arm64-cgo), func ParseRoutingMessage([]uint8) ([]RoutingMessage, error) -pkg syscall (netbsd-arm64-cgo), func ParseRoutingSockaddr(RoutingMessage) ([]Sockaddr, error) -pkg syscall (netbsd-arm64-cgo), func ParseSocketControlMessage([]uint8) ([]SocketControlMessage, error) -pkg syscall (netbsd-arm64-cgo), func ParseUnixRights(*SocketControlMessage) ([]int, error) -pkg syscall (netbsd-arm64-cgo), func Pathconf(string, int) (int, error) -pkg syscall (netbsd-arm64-cgo), func Pipe([]int) error -pkg syscall (netbsd-arm64-cgo), func Pipe2([]int, int) error -pkg syscall (netbsd-arm64-cgo), func Pread(int, []uint8, int64) (int, error) -pkg syscall (netbsd-arm64-cgo), func Pwrite(int, []uint8, int64) (int, error) -pkg syscall (netbsd-arm64-cgo), func RawSyscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) -pkg syscall (netbsd-arm64-cgo), func RawSyscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) -pkg syscall (netbsd-arm64-cgo), func Read(int, []uint8) (int, error) -pkg syscall (netbsd-arm64-cgo), func ReadDirent(int, []uint8) (int, error) -pkg syscall (netbsd-arm64-cgo), func Recvfrom(int, []uint8, int) (int, Sockaddr, error) -pkg syscall (netbsd-arm64-cgo), func Recvmsg(int, []uint8, []uint8, int) (int, int, int, Sockaddr, error) -pkg syscall (netbsd-arm64-cgo), func Revoke(string) error -pkg syscall (netbsd-arm64-cgo), func RouteRIB(int, int) ([]uint8, error) -pkg syscall (netbsd-arm64-cgo), func Seek(int, int64, int) (int64, error) -pkg syscall (netbsd-arm64-cgo), func Select(int, *FdSet, *FdSet, *FdSet, *Timeval) error -pkg syscall (netbsd-arm64-cgo), func Sendfile(int, int, *int64, int) (int, error) -pkg syscall (netbsd-arm64-cgo), func Sendmsg(int, []uint8, []uint8, Sockaddr, int) error -pkg syscall (netbsd-arm64-cgo), func SendmsgN(int, []uint8, []uint8, Sockaddr, int) (int, error) -pkg syscall (netbsd-arm64-cgo), func Sendto(int, []uint8, int, Sockaddr) error -pkg syscall (netbsd-arm64-cgo), func SetBpf(int, []BpfInsn) error -pkg syscall (netbsd-arm64-cgo), func SetBpfBuflen(int, int) (int, error) -pkg syscall (netbsd-arm64-cgo), func SetBpfDatalink(int, int) (int, error) -pkg syscall (netbsd-arm64-cgo), func SetBpfHeadercmpl(int, int) error -pkg syscall (netbsd-arm64-cgo), func SetBpfImmediate(int, int) error -pkg syscall (netbsd-arm64-cgo), func SetBpfInterface(int, string) error -pkg syscall (netbsd-arm64-cgo), func SetBpfPromisc(int, int) error -pkg syscall (netbsd-arm64-cgo), func SetBpfTimeout(int, *Timeval) error -pkg syscall (netbsd-arm64-cgo), func SetKevent(*Kevent_t, int, int, int) -pkg syscall (netbsd-arm64-cgo), func SetNonblock(int, bool) error -pkg syscall (netbsd-arm64-cgo), func Setegid(int) error -pkg syscall (netbsd-arm64-cgo), func Seteuid(int) error -pkg syscall (netbsd-arm64-cgo), func Setgid(int) error -pkg syscall (netbsd-arm64-cgo), func Setgroups([]int) error -pkg syscall (netbsd-arm64-cgo), func Setpgid(int, int) error -pkg syscall (netbsd-arm64-cgo), func Setpriority(int, int, int) error -pkg syscall (netbsd-arm64-cgo), func Setregid(int, int) error -pkg syscall (netbsd-arm64-cgo), func Setreuid(int, int) error -pkg syscall (netbsd-arm64-cgo), func Setrlimit(int, *Rlimit) error -pkg syscall (netbsd-arm64-cgo), func Setsid() (int, error) -pkg syscall (netbsd-arm64-cgo), func SetsockoptByte(int, int, int, uint8) error -pkg syscall (netbsd-arm64-cgo), func SetsockoptICMPv6Filter(int, int, int, *ICMPv6Filter) error -pkg syscall (netbsd-arm64-cgo), func SetsockoptIPMreq(int, int, int, *IPMreq) error -pkg syscall (netbsd-arm64-cgo), func SetsockoptIPv6Mreq(int, int, int, *IPv6Mreq) error -pkg syscall (netbsd-arm64-cgo), func SetsockoptInet4Addr(int, int, int, [4]uint8) error -pkg syscall (netbsd-arm64-cgo), func SetsockoptInt(int, int, int, int) error -pkg syscall (netbsd-arm64-cgo), func SetsockoptLinger(int, int, int, *Linger) error -pkg syscall (netbsd-arm64-cgo), func SetsockoptString(int, int, int, string) error -pkg syscall (netbsd-arm64-cgo), func SetsockoptTimeval(int, int, int, *Timeval) error -pkg syscall (netbsd-arm64-cgo), func Settimeofday(*Timeval) error -pkg syscall (netbsd-arm64-cgo), func Setuid(int) error -pkg syscall (netbsd-arm64-cgo), func Shutdown(int, int) error -pkg syscall (netbsd-arm64-cgo), func SlicePtrFromStrings([]string) ([]*uint8, error) -pkg syscall (netbsd-arm64-cgo), func Socket(int, int, int) (int, error) -pkg syscall (netbsd-arm64-cgo), func Socketpair(int, int, int) ([2]int, error) -pkg syscall (netbsd-arm64-cgo), func Stat(string, *Stat_t) error -pkg syscall (netbsd-arm64-cgo), func StringSlicePtr([]string) []*uint8 -pkg syscall (netbsd-arm64-cgo), func Sync() error -pkg syscall (netbsd-arm64-cgo), func Syscall(uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) -pkg syscall (netbsd-arm64-cgo), func Syscall6(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) -pkg syscall (netbsd-arm64-cgo), func Syscall9(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (uintptr, uintptr, Errno) -pkg syscall (netbsd-arm64-cgo), func Sysctl(string) (string, error) -pkg syscall (netbsd-arm64-cgo), func SysctlUint32(string) (uint32, error) -pkg syscall (netbsd-arm64-cgo), func TimevalToNsec(Timeval) int64 -pkg syscall (netbsd-arm64-cgo), func Truncate(string, int64) error -pkg syscall (netbsd-arm64-cgo), func Umask(int) int -pkg syscall (netbsd-arm64-cgo), func UnixRights(...int) []uint8 -pkg syscall (netbsd-arm64-cgo), func Unmount(string, int) error -pkg syscall (netbsd-arm64-cgo), func Wait4(int, *WaitStatus, int, *Rusage) (int, error) -pkg syscall (netbsd-arm64-cgo), func Write(int, []uint8) (int, error) -pkg syscall (netbsd-arm64-cgo), method (*Cmsghdr) SetLen(int) -pkg syscall (netbsd-arm64-cgo), method (*Iovec) SetLen(int) -pkg syscall (netbsd-arm64-cgo), method (*Msghdr) SetControllen(int) -pkg syscall (netbsd-arm64-cgo), type BpfHdr struct -pkg syscall (netbsd-arm64-cgo), type BpfHdr struct, Caplen uint32 -pkg syscall (netbsd-arm64-cgo), type BpfHdr struct, Datalen uint32 -pkg syscall (netbsd-arm64-cgo), type BpfHdr struct, Hdrlen uint16 -pkg syscall (netbsd-arm64-cgo), type BpfHdr struct, Pad_cgo_0 [6]uint8 -pkg syscall (netbsd-arm64-cgo), type BpfHdr struct, Tstamp BpfTimeval -pkg syscall (netbsd-arm64-cgo), type BpfInsn struct -pkg syscall (netbsd-arm64-cgo), type BpfInsn struct, Code uint16 -pkg syscall (netbsd-arm64-cgo), type BpfInsn struct, Jf uint8 -pkg syscall (netbsd-arm64-cgo), type BpfInsn struct, Jt uint8 -pkg syscall (netbsd-arm64-cgo), type BpfInsn struct, K uint32 -pkg syscall (netbsd-arm64-cgo), type BpfProgram struct -pkg syscall (netbsd-arm64-cgo), type BpfProgram struct, Insns *BpfInsn -pkg syscall (netbsd-arm64-cgo), type BpfProgram struct, Len uint32 -pkg syscall (netbsd-arm64-cgo), type BpfProgram struct, Pad_cgo_0 [4]uint8 -pkg syscall (netbsd-arm64-cgo), type BpfStat struct -pkg syscall (netbsd-arm64-cgo), type BpfStat struct, Capt uint64 -pkg syscall (netbsd-arm64-cgo), type BpfStat struct, Drop uint64 -pkg syscall (netbsd-arm64-cgo), type BpfStat struct, Padding [13]uint64 -pkg syscall (netbsd-arm64-cgo), type BpfStat struct, Recv uint64 -pkg syscall (netbsd-arm64-cgo), type BpfTimeval struct -pkg syscall (netbsd-arm64-cgo), type BpfTimeval struct, Sec int64 -pkg syscall (netbsd-arm64-cgo), type BpfTimeval struct, Usec int64 -pkg syscall (netbsd-arm64-cgo), type BpfVersion struct -pkg syscall (netbsd-arm64-cgo), type BpfVersion struct, Major uint16 -pkg syscall (netbsd-arm64-cgo), type BpfVersion struct, Minor uint16 -pkg syscall (netbsd-arm64-cgo), type Cmsghdr struct -pkg syscall (netbsd-arm64-cgo), type Cmsghdr struct, Len uint32 -pkg syscall (netbsd-arm64-cgo), type Cmsghdr struct, Level int32 -pkg syscall (netbsd-arm64-cgo), type Cmsghdr struct, Type int32 -pkg syscall (netbsd-arm64-cgo), type Credential struct -pkg syscall (netbsd-arm64-cgo), type Credential struct, Gid uint32 -pkg syscall (netbsd-arm64-cgo), type Credential struct, Groups []uint32 -pkg syscall (netbsd-arm64-cgo), type Credential struct, NoSetGroups bool -pkg syscall (netbsd-arm64-cgo), type Credential struct, Uid uint32 -pkg syscall (netbsd-arm64-cgo), type Dirent struct -pkg syscall (netbsd-arm64-cgo), type Dirent struct, Fileno uint64 -pkg syscall (netbsd-arm64-cgo), type Dirent struct, Name [512]int8 -pkg syscall (netbsd-arm64-cgo), type Dirent struct, Namlen uint16 -pkg syscall (netbsd-arm64-cgo), type Dirent struct, Pad_cgo_0 [3]uint8 -pkg syscall (netbsd-arm64-cgo), type Dirent struct, Reclen uint16 -pkg syscall (netbsd-arm64-cgo), type Dirent struct, Type uint8 -pkg syscall (netbsd-arm64-cgo), type FdSet struct -pkg syscall (netbsd-arm64-cgo), type FdSet struct, Bits [8]uint32 -pkg syscall (netbsd-arm64-cgo), type Flock_t struct -pkg syscall (netbsd-arm64-cgo), type Flock_t struct, Len int64 -pkg syscall (netbsd-arm64-cgo), type Flock_t struct, Pid int32 -pkg syscall (netbsd-arm64-cgo), type Flock_t struct, Start int64 -pkg syscall (netbsd-arm64-cgo), type Flock_t struct, Type int16 -pkg syscall (netbsd-arm64-cgo), type Flock_t struct, Whence int16 -pkg syscall (netbsd-arm64-cgo), type Fsid struct -pkg syscall (netbsd-arm64-cgo), type Fsid struct, X__fsid_val [2]int32 -pkg syscall (netbsd-arm64-cgo), type ICMPv6Filter struct -pkg syscall (netbsd-arm64-cgo), type ICMPv6Filter struct, Filt [8]uint32 -pkg syscall (netbsd-arm64-cgo), type IPv6MTUInfo struct -pkg syscall (netbsd-arm64-cgo), type IPv6MTUInfo struct, Addr RawSockaddrInet6 -pkg syscall (netbsd-arm64-cgo), type IPv6MTUInfo struct, Mtu uint32 -pkg syscall (netbsd-arm64-cgo), type IfAnnounceMsghdr struct -pkg syscall (netbsd-arm64-cgo), type IfAnnounceMsghdr struct, Index uint16 -pkg syscall (netbsd-arm64-cgo), type IfAnnounceMsghdr struct, Msglen uint16 -pkg syscall (netbsd-arm64-cgo), type IfAnnounceMsghdr struct, Name [16]int8 -pkg syscall (netbsd-arm64-cgo), type IfAnnounceMsghdr struct, Type uint8 -pkg syscall (netbsd-arm64-cgo), type IfAnnounceMsghdr struct, Version uint8 -pkg syscall (netbsd-arm64-cgo), type IfAnnounceMsghdr struct, What uint16 -pkg syscall (netbsd-arm64-cgo), type IfData struct -pkg syscall (netbsd-arm64-cgo), type IfData struct, Addrlen uint8 -pkg syscall (netbsd-arm64-cgo), type IfData struct, Baudrate uint64 -pkg syscall (netbsd-arm64-cgo), type IfData struct, Collisions uint64 -pkg syscall (netbsd-arm64-cgo), type IfData struct, Hdrlen uint8 -pkg syscall (netbsd-arm64-cgo), type IfData struct, Ibytes uint64 -pkg syscall (netbsd-arm64-cgo), type IfData struct, Ierrors uint64 -pkg syscall (netbsd-arm64-cgo), type IfData struct, Imcasts uint64 -pkg syscall (netbsd-arm64-cgo), type IfData struct, Ipackets uint64 -pkg syscall (netbsd-arm64-cgo), type IfData struct, Iqdrops uint64 -pkg syscall (netbsd-arm64-cgo), type IfData struct, Lastchange Timespec -pkg syscall (netbsd-arm64-cgo), type IfData struct, Link_state int32 -pkg syscall (netbsd-arm64-cgo), type IfData struct, Metric uint64 -pkg syscall (netbsd-arm64-cgo), type IfData struct, Mtu uint64 -pkg syscall (netbsd-arm64-cgo), type IfData struct, Noproto uint64 -pkg syscall (netbsd-arm64-cgo), type IfData struct, Obytes uint64 -pkg syscall (netbsd-arm64-cgo), type IfData struct, Oerrors uint64 -pkg syscall (netbsd-arm64-cgo), type IfData struct, Omcasts uint64 -pkg syscall (netbsd-arm64-cgo), type IfData struct, Opackets uint64 -pkg syscall (netbsd-arm64-cgo), type IfData struct, Pad_cgo_0 [1]uint8 -pkg syscall (netbsd-arm64-cgo), type IfData struct, Type uint8 -pkg syscall (netbsd-arm64-cgo), type IfMsghdr struct -pkg syscall (netbsd-arm64-cgo), type IfMsghdr struct, Addrs int32 -pkg syscall (netbsd-arm64-cgo), type IfMsghdr struct, Data IfData -pkg syscall (netbsd-arm64-cgo), type IfMsghdr struct, Flags int32 -pkg syscall (netbsd-arm64-cgo), type IfMsghdr struct, Index uint16 -pkg syscall (netbsd-arm64-cgo), type IfMsghdr struct, Msglen uint16 -pkg syscall (netbsd-arm64-cgo), type IfMsghdr struct, Pad_cgo_0 [2]uint8 -pkg syscall (netbsd-arm64-cgo), type IfMsghdr struct, Type uint8 -pkg syscall (netbsd-arm64-cgo), type IfMsghdr struct, Version uint8 -pkg syscall (netbsd-arm64-cgo), type IfaMsghdr struct -pkg syscall (netbsd-arm64-cgo), type IfaMsghdr struct, Addrs int32 -pkg syscall (netbsd-arm64-cgo), type IfaMsghdr struct, Flags int32 -pkg syscall (netbsd-arm64-cgo), type IfaMsghdr struct, Index uint16 -pkg syscall (netbsd-arm64-cgo), type IfaMsghdr struct, Metric int32 -pkg syscall (netbsd-arm64-cgo), type IfaMsghdr struct, Msglen uint16 -pkg syscall (netbsd-arm64-cgo), type IfaMsghdr struct, Pad_cgo_0 [6]uint8 -pkg syscall (netbsd-arm64-cgo), type IfaMsghdr struct, Type uint8 -pkg syscall (netbsd-arm64-cgo), type IfaMsghdr struct, Version uint8 -pkg syscall (netbsd-arm64-cgo), type Inet6Pktinfo struct -pkg syscall (netbsd-arm64-cgo), type Inet6Pktinfo struct, Addr [16]uint8 -pkg syscall (netbsd-arm64-cgo), type Inet6Pktinfo struct, Ifindex uint32 -pkg syscall (netbsd-arm64-cgo), type InterfaceAddrMessage struct -pkg syscall (netbsd-arm64-cgo), type InterfaceAddrMessage struct, Data []uint8 -pkg syscall (netbsd-arm64-cgo), type InterfaceAddrMessage struct, Header IfaMsghdr -pkg syscall (netbsd-arm64-cgo), type InterfaceAnnounceMessage struct -pkg syscall (netbsd-arm64-cgo), type InterfaceAnnounceMessage struct, Header IfAnnounceMsghdr -pkg syscall (netbsd-arm64-cgo), type InterfaceMessage struct -pkg syscall (netbsd-arm64-cgo), type InterfaceMessage struct, Data []uint8 -pkg syscall (netbsd-arm64-cgo), type InterfaceMessage struct, Header IfMsghdr -pkg syscall (netbsd-arm64-cgo), type Iovec struct -pkg syscall (netbsd-arm64-cgo), type Iovec struct, Base *uint8 -pkg syscall (netbsd-arm64-cgo), type Iovec struct, Len uint64 -pkg syscall (netbsd-arm64-cgo), type Kevent_t struct -pkg syscall (netbsd-arm64-cgo), type Kevent_t struct, Data int64 -pkg syscall (netbsd-arm64-cgo), type Kevent_t struct, Fflags uint32 -pkg syscall (netbsd-arm64-cgo), type Kevent_t struct, Filter uint32 -pkg syscall (netbsd-arm64-cgo), type Kevent_t struct, Flags uint32 -pkg syscall (netbsd-arm64-cgo), type Kevent_t struct, Ident uint64 -pkg syscall (netbsd-arm64-cgo), type Kevent_t struct, Pad_cgo_0 [4]uint8 -pkg syscall (netbsd-arm64-cgo), type Kevent_t struct, Udata int64 -pkg syscall (netbsd-arm64-cgo), type Mclpool [0]uint8 -pkg syscall (netbsd-arm64-cgo), type Msghdr struct -pkg syscall (netbsd-arm64-cgo), type Msghdr struct, Control *uint8 -pkg syscall (netbsd-arm64-cgo), type Msghdr struct, Controllen uint32 -pkg syscall (netbsd-arm64-cgo), type Msghdr struct, Flags int32 -pkg syscall (netbsd-arm64-cgo), type Msghdr struct, Iov *Iovec -pkg syscall (netbsd-arm64-cgo), type Msghdr struct, Iovlen int32 -pkg syscall (netbsd-arm64-cgo), type Msghdr struct, Name *uint8 -pkg syscall (netbsd-arm64-cgo), type Msghdr struct, Namelen uint32 -pkg syscall (netbsd-arm64-cgo), type Msghdr struct, Pad_cgo_0 [4]uint8 -pkg syscall (netbsd-arm64-cgo), type Msghdr struct, Pad_cgo_1 [4]uint8 -pkg syscall (netbsd-arm64-cgo), type RawSockaddr struct, Data [14]int8 -pkg syscall (netbsd-arm64-cgo), type RawSockaddr struct, Family uint8 -pkg syscall (netbsd-arm64-cgo), type RawSockaddr struct, Len uint8 -pkg syscall (netbsd-arm64-cgo), type RawSockaddrAny struct, Pad [92]int8 -pkg syscall (netbsd-arm64-cgo), type RawSockaddrDatalink struct -pkg syscall (netbsd-arm64-cgo), type RawSockaddrDatalink struct, Alen uint8 -pkg syscall (netbsd-arm64-cgo), type RawSockaddrDatalink struct, Data [12]int8 -pkg syscall (netbsd-arm64-cgo), type RawSockaddrDatalink struct, Family uint8 -pkg syscall (netbsd-arm64-cgo), type RawSockaddrDatalink struct, Index uint16 -pkg syscall (netbsd-arm64-cgo), type RawSockaddrDatalink struct, Len uint8 -pkg syscall (netbsd-arm64-cgo), type RawSockaddrDatalink struct, Nlen uint8 -pkg syscall (netbsd-arm64-cgo), type RawSockaddrDatalink struct, Slen uint8 -pkg syscall (netbsd-arm64-cgo), type RawSockaddrDatalink struct, Type uint8 -pkg syscall (netbsd-arm64-cgo), type RawSockaddrInet4 struct, Family uint8 -pkg syscall (netbsd-arm64-cgo), type RawSockaddrInet4 struct, Len uint8 -pkg syscall (netbsd-arm64-cgo), type RawSockaddrInet4 struct, Zero [8]int8 -pkg syscall (netbsd-arm64-cgo), type RawSockaddrInet6 struct, Family uint8 -pkg syscall (netbsd-arm64-cgo), type RawSockaddrInet6 struct, Len uint8 -pkg syscall (netbsd-arm64-cgo), type RawSockaddrUnix struct, Family uint8 -pkg syscall (netbsd-arm64-cgo), type RawSockaddrUnix struct, Len uint8 -pkg syscall (netbsd-arm64-cgo), type RawSockaddrUnix struct, Path [104]int8 -pkg syscall (netbsd-arm64-cgo), type Rlimit struct -pkg syscall (netbsd-arm64-cgo), type Rlimit struct, Cur uint64 -pkg syscall (netbsd-arm64-cgo), type Rlimit struct, Max uint64 -pkg syscall (netbsd-arm64-cgo), type RouteMessage struct -pkg syscall (netbsd-arm64-cgo), type RouteMessage struct, Data []uint8 -pkg syscall (netbsd-arm64-cgo), type RouteMessage struct, Header RtMsghdr -pkg syscall (netbsd-arm64-cgo), type RoutingMessage interface, unexported methods -pkg syscall (netbsd-arm64-cgo), type RtMetrics struct -pkg syscall (netbsd-arm64-cgo), type RtMetrics struct, Expire int64 -pkg syscall (netbsd-arm64-cgo), type RtMetrics struct, Hopcount uint64 -pkg syscall (netbsd-arm64-cgo), type RtMetrics struct, Locks uint64 -pkg syscall (netbsd-arm64-cgo), type RtMetrics struct, Mtu uint64 -pkg syscall (netbsd-arm64-cgo), type RtMetrics struct, Pksent int64 -pkg syscall (netbsd-arm64-cgo), type RtMetrics struct, Recvpipe uint64 -pkg syscall (netbsd-arm64-cgo), type RtMetrics struct, Rtt uint64 -pkg syscall (netbsd-arm64-cgo), type RtMetrics struct, Rttvar uint64 -pkg syscall (netbsd-arm64-cgo), type RtMetrics struct, Sendpipe uint64 -pkg syscall (netbsd-arm64-cgo), type RtMetrics struct, Ssthresh uint64 -pkg syscall (netbsd-arm64-cgo), type RtMsghdr struct -pkg syscall (netbsd-arm64-cgo), type RtMsghdr struct, Addrs int32 -pkg syscall (netbsd-arm64-cgo), type RtMsghdr struct, Errno int32 -pkg syscall (netbsd-arm64-cgo), type RtMsghdr struct, Flags int32 -pkg syscall (netbsd-arm64-cgo), type RtMsghdr struct, Index uint16 -pkg syscall (netbsd-arm64-cgo), type RtMsghdr struct, Inits int32 -pkg syscall (netbsd-arm64-cgo), type RtMsghdr struct, Msglen uint16 -pkg syscall (netbsd-arm64-cgo), type RtMsghdr struct, Pad_cgo_0 [2]uint8 -pkg syscall (netbsd-arm64-cgo), type RtMsghdr struct, Pad_cgo_1 [4]uint8 -pkg syscall (netbsd-arm64-cgo), type RtMsghdr struct, Pid int32 -pkg syscall (netbsd-arm64-cgo), type RtMsghdr struct, Rmx RtMetrics -pkg syscall (netbsd-arm64-cgo), type RtMsghdr struct, Seq int32 -pkg syscall (netbsd-arm64-cgo), type RtMsghdr struct, Type uint8 -pkg syscall (netbsd-arm64-cgo), type RtMsghdr struct, Use int32 -pkg syscall (netbsd-arm64-cgo), type RtMsghdr struct, Version uint8 -pkg syscall (netbsd-arm64-cgo), type Rusage struct, Idrss int64 -pkg syscall (netbsd-arm64-cgo), type Rusage struct, Inblock int64 -pkg syscall (netbsd-arm64-cgo), type Rusage struct, Isrss int64 -pkg syscall (netbsd-arm64-cgo), type Rusage struct, Ixrss int64 -pkg syscall (netbsd-arm64-cgo), type Rusage struct, Majflt int64 -pkg syscall (netbsd-arm64-cgo), type Rusage struct, Maxrss int64 -pkg syscall (netbsd-arm64-cgo), type Rusage struct, Minflt int64 -pkg syscall (netbsd-arm64-cgo), type Rusage struct, Msgrcv int64 -pkg syscall (netbsd-arm64-cgo), type Rusage struct, Msgsnd int64 -pkg syscall (netbsd-arm64-cgo), type Rusage struct, Nivcsw int64 -pkg syscall (netbsd-arm64-cgo), type Rusage struct, Nsignals int64 -pkg syscall (netbsd-arm64-cgo), type Rusage struct, Nswap int64 -pkg syscall (netbsd-arm64-cgo), type Rusage struct, Nvcsw int64 -pkg syscall (netbsd-arm64-cgo), type Rusage struct, Oublock int64 -pkg syscall (netbsd-arm64-cgo), type Rusage struct, Stime Timeval -pkg syscall (netbsd-arm64-cgo), type Rusage struct, Utime Timeval -pkg syscall (netbsd-arm64-cgo), type SockaddrDatalink struct -pkg syscall (netbsd-arm64-cgo), type SockaddrDatalink struct, Alen uint8 -pkg syscall (netbsd-arm64-cgo), type SockaddrDatalink struct, Data [12]int8 -pkg syscall (netbsd-arm64-cgo), type SockaddrDatalink struct, Family uint8 -pkg syscall (netbsd-arm64-cgo), type SockaddrDatalink struct, Index uint16 -pkg syscall (netbsd-arm64-cgo), type SockaddrDatalink struct, Len uint8 -pkg syscall (netbsd-arm64-cgo), type SockaddrDatalink struct, Nlen uint8 -pkg syscall (netbsd-arm64-cgo), type SockaddrDatalink struct, Slen uint8 -pkg syscall (netbsd-arm64-cgo), type SockaddrDatalink struct, Type uint8 -pkg syscall (netbsd-arm64-cgo), type SocketControlMessage struct -pkg syscall (netbsd-arm64-cgo), type SocketControlMessage struct, Data []uint8 -pkg syscall (netbsd-arm64-cgo), type SocketControlMessage struct, Header Cmsghdr -pkg syscall (netbsd-arm64-cgo), type Stat_t struct -pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Atimespec Timespec -pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Birthtimespec Timespec -pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Blksize uint32 -pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Blocks int64 -pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Ctimespec Timespec -pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Dev uint64 -pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Flags uint32 -pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Gen uint32 -pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Gid uint32 -pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Ino uint64 -pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Mode uint32 -pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Mtimespec Timespec -pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Nlink uint32 -pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Pad_cgo_0 [4]uint8 -pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Pad_cgo_1 [4]uint8 -pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Pad_cgo_2 [4]uint8 -pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Rdev uint64 -pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Size int64 -pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Spare [2]uint32 -pkg syscall (netbsd-arm64-cgo), type Stat_t struct, Uid uint32 -pkg syscall (netbsd-arm64-cgo), type Statfs_t [0]uint8 -pkg syscall (netbsd-arm64-cgo), type SysProcAttr struct, Chroot string -pkg syscall (netbsd-arm64-cgo), type SysProcAttr struct, Credential *Credential -pkg syscall (netbsd-arm64-cgo), type SysProcAttr struct, Ctty int -pkg syscall (netbsd-arm64-cgo), type SysProcAttr struct, Foreground bool -pkg syscall (netbsd-arm64-cgo), type SysProcAttr struct, Noctty bool -pkg syscall (netbsd-arm64-cgo), type SysProcAttr struct, Pgid int -pkg syscall (netbsd-arm64-cgo), type SysProcAttr struct, Ptrace bool -pkg syscall (netbsd-arm64-cgo), type SysProcAttr struct, Setctty bool -pkg syscall (netbsd-arm64-cgo), type SysProcAttr struct, Setpgid bool -pkg syscall (netbsd-arm64-cgo), type SysProcAttr struct, Setsid bool -pkg syscall (netbsd-arm64-cgo), type Sysctlnode struct -pkg syscall (netbsd-arm64-cgo), type Sysctlnode struct, Flags uint32 -pkg syscall (netbsd-arm64-cgo), type Sysctlnode struct, Name [32]int8 -pkg syscall (netbsd-arm64-cgo), type Sysctlnode struct, Num int32 -pkg syscall (netbsd-arm64-cgo), type Sysctlnode struct, Un [16]uint8 -pkg syscall (netbsd-arm64-cgo), type Sysctlnode struct, Ver uint32 -pkg syscall (netbsd-arm64-cgo), type Sysctlnode struct, X__rsvd uint32 -pkg syscall (netbsd-arm64-cgo), type Sysctlnode struct, X_sysctl_desc [8]uint8 -pkg syscall (netbsd-arm64-cgo), type Sysctlnode struct, X_sysctl_func [8]uint8 -pkg syscall (netbsd-arm64-cgo), type Sysctlnode struct, X_sysctl_parent [8]uint8 -pkg syscall (netbsd-arm64-cgo), type Sysctlnode struct, X_sysctl_size [8]uint8 -pkg syscall (netbsd-arm64-cgo), type Termios struct -pkg syscall (netbsd-arm64-cgo), type Termios struct, Cc [20]uint8 -pkg syscall (netbsd-arm64-cgo), type Termios struct, Cflag uint32 -pkg syscall (netbsd-arm64-cgo), type Termios struct, Iflag uint32 -pkg syscall (netbsd-arm64-cgo), type Termios struct, Ispeed int32 -pkg syscall (netbsd-arm64-cgo), type Termios struct, Lflag uint32 -pkg syscall (netbsd-arm64-cgo), type Termios struct, Oflag uint32 -pkg syscall (netbsd-arm64-cgo), type Termios struct, Ospeed int32 -pkg syscall (netbsd-arm64-cgo), type Timespec struct, Nsec int64 -pkg syscall (netbsd-arm64-cgo), type Timespec struct, Sec int64 -pkg syscall (netbsd-arm64-cgo), type Timeval struct, Pad_cgo_0 [4]uint8 -pkg syscall (netbsd-arm64-cgo), type Timeval struct, Sec int64 -pkg syscall (netbsd-arm64-cgo), type Timeval struct, Usec int32 -pkg syscall (netbsd-arm64-cgo), type WaitStatus uint32 -pkg syscall (netbsd-arm64-cgo), var Stderr int -pkg syscall (netbsd-arm64-cgo), var Stdin int -pkg syscall (netbsd-arm64-cgo), var Stdout int -pkg syscall (windows-386), type SysProcAttr struct, ProcessAttributes *SecurityAttributes -pkg syscall (windows-386), type SysProcAttr struct, ThreadAttributes *SecurityAttributes -pkg syscall (windows-amd64), type SysProcAttr struct, ProcessAttributes *SecurityAttributes -pkg syscall (windows-amd64), type SysProcAttr struct, ThreadAttributes *SecurityAttributes -pkg syscall, method (Errno) Is(error) bool -pkg testing, func Init() -pkg testing, method (*B) ReportMetric(float64, string) -pkg testing, type BenchmarkResult struct, Extra map[string]float64 -pkg text/scanner, const AllowNumberbars = 1024 -pkg text/scanner, const AllowNumberbars ideal-int -pkg text/scanner, const GoTokens = 2036 -pkg text/template, method (ExecError) Unwrap() error -pkg time, method (Duration) Microseconds() int64 -pkg time, method (Duration) Milliseconds() int64 -pkg unicode, const Version = "11.0.0" -pkg unicode, var Dogra *RangeTable -pkg unicode, var Gunjala_Gondi *RangeTable -pkg unicode, var Hanifi_Rohingya *RangeTable -pkg unicode, var Makasar *RangeTable -pkg unicode, var Medefaidrin *RangeTable -pkg unicode, var Old_Sogdian *RangeTable -pkg unicode, var Sogdian *RangeTable From b21c837008a398fe23f06741946cf39e52dfdfa7 Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Wed, 26 Jun 2019 13:16:50 -0400 Subject: [PATCH 048/255] doc/go1.13: describe the change in behavior of GO111MODULE=auto Updates #31857 Change-Id: Id0dc66246f768a2c730c67cd7a4a7830547f22a8 Reviewed-on: https://go-review.googlesource.com/c/go/+/183922 Run-TryBot: Bryan C. Mills Reviewed-by: Jay Conrod Reviewed-by: Katie Hockman --- doc/go1.13.html | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/doc/go1.13.html b/doc/go1.13.html index f9a6c5b710..180fcc9499 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -169,6 +169,17 @@ Do not send CLs removing the interior tags from such phrases.

Environment variables

+

+ The GO111MODULE + environment variable continues to default to auto, but + the auto setting now activates the module-aware mode of + the go command whenever the current working directory contains, + or is below a directory containing, a go.mod file — even if the + current directory is within GOPATH/src. This change simplifies + the migration of existing code within GOPATH/src and the ongoing + maintenance of module-aware packages alongside non-module-aware importers. +

+

The new GOPRIVATE From 06f709a04acc6d5ba0ba181129e9ee93ed20f311 Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Wed, 26 Jun 2019 10:07:13 -0400 Subject: [PATCH 049/255] doc/go1.13: move 'go get -t' paragraph to be adjacent to 'go get -u' changes As suggested by thepudds in CL 183630. Also adjust the paragraph to harmonize the transitions between the newly-adjacent paragraphs. Change-Id: Ie85abea946db81804c1995d27be4951d5db6b812 Reviewed-on: https://go-review.googlesource.com/c/go/+/183918 Reviewed-by: Jay Conrod --- doc/go1.13.html | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/doc/go1.13.html b/doc/go1.13.html index 180fcc9499..261af12945 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -267,6 +267,17 @@ go env -w GOSUMDB=off the source code needed to build dependencies of the named packages.

+

+ By default, go get -u in module mode + upgrades only non-test dependencies, as in GOPATH mode. It now also accepts + the -t flag, which (as in GOPATH mode) + causes go get to include the packages imported + by tests of the packages named on the command line. If + the -t flag is set, the packages imported by tests will be + updated (if the -u flag is set), downloaded, and built (unless + the -d flag is set) along with the usual non-test packages. +

+

In module-aware mode, the go get subcommand now supports the version suffix @patch. The @patch @@ -277,16 +288,6 @@ go env -w GOSUMDB=off equivalent to the existing @latest suffix.

-

- Additionally, the go get subcommand now supports - the -t flag in module-aware mode. As in GOPATH mode, - the -t flag instructs go get to include - the packages imported by tests of the packages named on the command - line. If the -t flag is set, the packages imported by tests will - be updated (if the -u flag is set), downloaded, and built (unless - the -d flag is set) along with the usual non-test packages. -

-

Version validation

From 4047f01d314d72a72beebd26974f3971f5c015e5 Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Tue, 25 Jun 2019 17:51:47 -0400 Subject: [PATCH 050/255] cmd/go: move mod_get_svn test to vcs-test.golang.org The test currently usses llvm.org, which seems to be very flaky today. Change-Id: I3d01476d53f94d9170dbb087e3f3cf99581cdb4d Reviewed-on: https://go-review.googlesource.com/c/go/+/183847 Run-TryBot: Bryan C. Mills TryBot-Result: Gobot Gobot Reviewed-by: Jay Conrod --- src/cmd/go/testdata/script/mod_get_svn.txt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/cmd/go/testdata/script/mod_get_svn.txt b/src/cmd/go/testdata/script/mod_get_svn.txt index b3436284af..e89bb9d9f5 100644 --- a/src/cmd/go/testdata/script/mod_get_svn.txt +++ b/src/cmd/go/testdata/script/mod_get_svn.txt @@ -2,12 +2,13 @@ [!exec:svn] skip env GO111MODULE=on -env GOPROXY=direct # obtain llvm.org directory, not via svn. +env GOPROXY=direct +env GOSUMDB=off # Attempting to get a module zip using svn should fail with a reasonable # message instead of a panic. # TODO(golang.org/issue/26092): Really, it shouldn't fail at all. -! go get -d llvm.org/llvm/bindings/go/llvm +! go get -d vcs-test.golang.org/svn/hello.svn stderr 'ReadZip not implemented for svn' ! go install . stderr 'ReadZip not implemented for svn' @@ -16,5 +17,5 @@ stderr 'ReadZip not implemented for svn' module golang/go/issues/28943/main -- main.go -- package main -import _ "llvm.org/llvm/bindings/go/llvm" +import _ "vcs-test.golang.org/svn/hello.svn" func main() {} From 070e2dda0252138ebe319a4f8839d71cbf57cd2a Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Wed, 26 Jun 2019 09:22:08 -0400 Subject: [PATCH 051/255] cmd/go/internal/modfetch/codehost: don't try to execute a nonexistent fetch function This fixes a panic observed in https://build.golang.org/log/1242a032cac29fd3dffb24055fdeff0202b546be. Change-Id: I029b9d69cabb87091734bd33d7fd39d30b12f9c5 Reviewed-on: https://go-review.googlesource.com/c/go/+/183917 Reviewed-by: Jay Conrod --- src/cmd/go/internal/modfetch/codehost/vcs.go | 4 +++- src/cmd/go/testdata/script/mod_get_svn.txt | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/cmd/go/internal/modfetch/codehost/vcs.go b/src/cmd/go/internal/modfetch/codehost/vcs.go index b1845f5c65..48238f176c 100644 --- a/src/cmd/go/internal/modfetch/codehost/vcs.go +++ b/src/cmd/go/internal/modfetch/codehost/vcs.go @@ -341,7 +341,9 @@ func (r *vcsRepo) Stat(rev string) (*RevInfo, error) { } func (r *vcsRepo) fetch() { - _, r.fetchErr = Run(r.dir, r.cmd.fetch) + if len(r.cmd.fetch) > 0 { + _, r.fetchErr = Run(r.dir, r.cmd.fetch) + } } func (r *vcsRepo) statLocal(rev string) (*RevInfo, error) { diff --git a/src/cmd/go/testdata/script/mod_get_svn.txt b/src/cmd/go/testdata/script/mod_get_svn.txt index e89bb9d9f5..90be737213 100644 --- a/src/cmd/go/testdata/script/mod_get_svn.txt +++ b/src/cmd/go/testdata/script/mod_get_svn.txt @@ -13,6 +13,12 @@ stderr 'ReadZip not implemented for svn' ! go install . stderr 'ReadZip not implemented for svn' +# Attempting to get a nonexistent module using svn should fail with a +# reasonable message instead of a panic. +! go get -d vcs-test.golang.org/svn/nonexistent.svn +! stderr panic +stderr 'go get vcs-test.golang.org/svn/nonexistent.svn: no matching versions for query "latest"' + -- go.mod -- module golang/go/issues/28943/main -- main.go -- From 4b41f7f8188ce8f711cacd3097a2cb02af5c333c Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Tue, 25 Jun 2019 17:13:21 -0400 Subject: [PATCH 052/255] cmd/go/internal/modfetch: halt proxy fallback if the proxy returns a non-404/410 response for @latest The @latest proxy endpoint is optional. If a proxy returns a 404 for it, and returns an @v/list with no matching versions, then we should allow module lookup to try other module paths. However, if the proxy returns some other error (say, a 403 or 505), then the result of the lookup is ambiguous, and we should report the actual error rather than "no matching versions for query". (This fix was prompted by discussion with Dmitri on CL 183619.) Updates #32715 Updates #26334 Change-Id: I6d510a5ac24d48d9bc5037c3c747ac50695c663f Reviewed-on: https://go-review.googlesource.com/c/go/+/183845 Run-TryBot: Bryan C. Mills TryBot-Result: Gobot Gobot Reviewed-by: Jay Conrod --- src/cmd/go/internal/modfetch/proxy.go | 4 +++- .../go/testdata/script/mod_query_empty.txt | 21 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/cmd/go/internal/modfetch/proxy.go b/src/cmd/go/internal/modfetch/proxy.go index 6049ccfd30..569ef3a57a 100644 --- a/src/cmd/go/internal/modfetch/proxy.go +++ b/src/cmd/go/internal/modfetch/proxy.go @@ -345,7 +345,9 @@ func (p *proxyRepo) Stat(rev string) (*RevInfo, error) { func (p *proxyRepo) Latest() (*RevInfo, error) { data, err := p.getBytes("@latest") if err != nil { - // TODO return err if not 404 + if !errors.Is(err, os.ErrNotExist) { + return nil, p.versionError("", err) + } return p.latest() } info := new(RevInfo) diff --git a/src/cmd/go/testdata/script/mod_query_empty.txt b/src/cmd/go/testdata/script/mod_query_empty.txt index 4e27c1ee5c..4d8259b40f 100644 --- a/src/cmd/go/testdata/script/mod_query_empty.txt +++ b/src/cmd/go/testdata/script/mod_query_empty.txt @@ -28,6 +28,20 @@ go list -m example.com/join/... ! stdout 'example.com/join/subpkg' stdout 'example.com/join v1.1.0' +# If the proxy provides an empty @v/list but rejects @latest with +# some other explicit error (for example, a "permission denied" error), +# that error should be reported to the user (and override a successful +# result for other possible module paths). +# +# Depending on how the specific platform enforces permissions, the 'go get' may +# fail either due to the intended permission error or due to a parse error. +# We accept either failure message. +env GOPROXY=file:///$WORK/gatekeeper +chmod 0000 $WORK/gatekeeper/example.com/join/subpkg/@latest +cp go.mod.orig go.mod +! go get -d example.com/join/subpkg +stderr 'go get example.com/join/subpkg: module example.com/join/subpkg: (invalid character .+|reading file://.*/gatekeeper/example.com/join/subpkg/@latest: .+)' + -- go.mod.orig -- module example.com/othermodule go 1.13 @@ -50,3 +64,10 @@ v1.0.0-does-not-exist v1.1.0 -- $WORK/notfound/example.com/join/@v/v1.1.0.info -- {"Version": "v1.1.0"} +-- $WORK/gatekeeper/example.com/join/subpkg/@v/list -- +-- $WORK/gatekeeper/example.com/join/subpkg/@latest -- +ERROR: Latest version is forbidden. +-- $WORK/gatekeeper/example.com/join/@v/list -- +v1.1.0 +-- $WORK/gatekeeper/example.com/join/@v/v1.1.0.info -- +{"Version": "v1.1.0"} From 93c05627f9e542476d8f88e2e472082d526689ff Mon Sep 17 00:00:00 2001 From: Austin Clements Date: Wed, 26 Jun 2019 11:11:45 -0400 Subject: [PATCH 053/255] sync: fix pool wrap-around test TestPoolDequeue in long mode does a little more than 1<<21 pushes. This was originally because the head and tail indexes were 21 bits and the intent was to test wrap-around behavior. However, in the final version they were both 32 bits, so the test no longer tested wrap-around. It would take too long to reach 32-bit wrap around in a test, so instead we initialize the poolDequeue with indexes that are already nearly at their limit. This keeps the knowledge of the maximum index in one place, and lets us test wrap-around even in short mode. Change-Id: Ib9b8d85b6d9b5be235849c2b32e81c809e806579 Reviewed-on: https://go-review.googlesource.com/c/go/+/183979 Run-TryBot: Austin Clements TryBot-Result: Gobot Gobot Reviewed-by: Bryan C. Mills --- src/sync/export_test.go | 6 +++++- src/sync/pool_test.go | 4 +--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/sync/export_test.go b/src/sync/export_test.go index 10d3599f47..ffbe567464 100644 --- a/src/sync/export_test.go +++ b/src/sync/export_test.go @@ -18,9 +18,13 @@ type PoolDequeue interface { } func NewPoolDequeue(n int) PoolDequeue { - return &poolDequeue{ + d := &poolDequeue{ vals: make([]eface, n), } + // For testing purposes, set the head and tail indexes close + // to wrapping around. + d.headTail = d.pack(1< Date: Wed, 26 Jun 2019 13:20:05 -0400 Subject: [PATCH 054/255] sync: make TestPoolDequeue termination condition more robust TestPoolDequeue creates P-1 consumer goroutines and 1 producer goroutine. Currently, if a consumer goroutine pops the last value from the dequeue, it sets a flag that stops all consumers, but the producer also periodically pops from the dequeue and doesn't set this flag. Hence, if the producer were to pop the last element, the consumers will continue to run and the test won't terminate. This CL fixes this by also setting the termination flag in the producer. I believe it's impossible for this to happen right now because the producer only pops after pushing an element for which j%10==0 and the last element is either 999 or 1999999, which means it should never try to pop after pushing the last element. However, we shouldn't depend on this reasoning. Change-Id: Icd2bc8d7cb9a79ebfcec99e367c8a2ba76e027d8 Reviewed-on: https://go-review.googlesource.com/c/go/+/183980 Run-TryBot: Austin Clements TryBot-Result: Gobot Gobot Reviewed-by: Bryan C. Mills --- src/sync/pool_test.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/sync/pool_test.go b/src/sync/pool_test.go index 090f1a8c6a..814c4a6812 100644 --- a/src/sync/pool_test.go +++ b/src/sync/pool_test.go @@ -180,6 +180,12 @@ func testPoolDequeue(t *testing.T, d PoolDequeue) { have := make([]int32, N) var stop int32 var wg WaitGroup + record := func(val int) { + atomic.AddInt32(&have[val], 1) + if val == N-1 { + atomic.StoreInt32(&stop, 1) + } + } // Start P-1 consumers. for i := 1; i < P; i++ { @@ -190,10 +196,7 @@ func testPoolDequeue(t *testing.T, d PoolDequeue) { val, ok := d.PopTail() if ok { fail = 0 - atomic.AddInt32(&have[val.(int)], 1) - if val.(int) == N-1 { - atomic.StoreInt32(&stop, 1) - } + record(val.(int)) } else { // Speed up the test by // allowing the pusher to run. @@ -219,7 +222,7 @@ func testPoolDequeue(t *testing.T, d PoolDequeue) { val, ok := d.PopHead() if ok { nPopHead++ - atomic.AddInt32(&have[val.(int)], 1) + record(val.(int)) } } } From 9caaac2c92f866383b52fca544b9871acf5fda1c Mon Sep 17 00:00:00 2001 From: Austin Clements Date: Wed, 26 Jun 2019 14:35:05 -0400 Subject: [PATCH 055/255] sync: only check for successful PopHeads in long mode In TestPoolDequeue it's surprisingly common for the queue to stay nearly empty the whole time and for a racing PopTail to happen in the window between the producer doing a PushHead and doing a PopHead. In short mode, there are only 100 PopTail attempts. On linux/amd64, it's not uncommon for this to fail 50% of the time. On linux/arm64, it's not uncommon for this to fail 100% of the time, causing the test to fail. This CL fixes this by only checking for a successful PopTail in long mode. Long mode makes 200,000 PopTail attempts, and has never been observed to fail. Fixes #31422. Change-Id: If464d55eb94fcb0b8d78fbc441d35be9f056a290 Reviewed-on: https://go-review.googlesource.com/c/go/+/183981 Run-TryBot: Austin Clements TryBot-Result: Gobot Gobot Reviewed-by: Bryan C. Mills --- src/sync/pool_test.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/sync/pool_test.go b/src/sync/pool_test.go index 814c4a6812..ad98350b2b 100644 --- a/src/sync/pool_test.go +++ b/src/sync/pool_test.go @@ -236,10 +236,12 @@ func testPoolDequeue(t *testing.T, d PoolDequeue) { t.Errorf("expected have[%d] = 1, got %d", i, count) } } - if nPopHead == 0 { - // In theory it's possible in a valid schedule for - // popHead to never succeed, but in practice it almost - // always succeeds, so this is unlikely to flake. + // Check that at least some PopHeads succeeded. We skip this + // check in short mode because it's common enough that the + // queue will stay nearly empty all the time and a PopTail + // will happen during the window between every PushHead and + // PopHead. + if !testing.Short() && nPopHead == 0 { t.Errorf("popHead never succeeded") } } From fc26cbacff12a2f81ab3cb4c55c00dfd0e8bb8ff Mon Sep 17 00:00:00 2001 From: Jay Conrod Date: Wed, 26 Jun 2019 15:21:38 -0400 Subject: [PATCH 056/255] doc/go1.13: describe new 'go version' behavior Change-Id: I18e2546f89e68e77d6e829acc997851751a44f0c Reviewed-on: https://go-review.googlesource.com/c/go/+/183983 Run-TryBot: Jay Conrod TryBot-Result: Gobot Gobot Reviewed-by: Bryan C. Mills --- doc/go1.13.html | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/doc/go1.13.html b/doc/go1.13.html index 261af12945..9873978cc3 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -359,6 +359,18 @@ go env -w GOSUMDB=off os.UserConfigDir().

+

+ The + go version command now accepts arguments naming + executables and directories. When invoked on an executable, + go version prints the version of Go used to build + the executable. If the -m flag is used, + go version prints the executable's embedded module + version information, if available. When invoked on a directory, + go version prints information about executables + contained in the directory and its subdirectories. +

+

The new go build flag -trimpath removes all file system paths From ab94ebbdcdcf6dc03574a85aae8984340c3de7f0 Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Wed, 26 Jun 2019 15:57:25 -0400 Subject: [PATCH 057/255] doc/go1.13: make cmd/go paragraphs more concise Looking at the live release notes on tip.golang.org, the Modules section is much more verbose than the other sections. To some extent that's to be expected, but too much detail in the release notes might discourage folks from consulting the actual documentation. Ensure that topics have clear links and omit unnecessary details. Change-Id: I1ccbc1697fccaf7ca7094c606bd11696c46d87f0 Reviewed-on: https://go-review.googlesource.com/c/go/+/183987 Run-TryBot: Bryan C. Mills Reviewed-by: Jay Conrod TryBot-Result: Gobot Gobot --- doc/go1.13.html | 34 ++++++++++++---------------------- 1 file changed, 12 insertions(+), 22 deletions(-) diff --git a/doc/go1.13.html b/doc/go1.13.html index 9873978cc3..63ba880250 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -184,12 +184,9 @@ Do not send CLs removing the interior tags from such phrases. The new GOPRIVATE environment variable indicates module paths that are not publicly available. - It contains a comma-separated list of glob patterns (in the syntax of - path.Match) to be matched against a - prefix of the module path. It serves as the default value for the - lower-level GONOPROXY and GONOSUMDB variables, which - provide finer-grained control over which modules are fetched via proxy and - verified using the checksum database. + It serves as the default value for the lower-level GONOPROXY + and GONOSUMDB variables, which provide finer-grained control over + which modules are fetched via proxy and verified using the checksum database.

@@ -198,13 +195,10 @@ Do not send CLs removing the interior tags from such phrases. URLs or the special token direct, and its default value is now https://proxy.golang.org,direct. When resolving a package - path to its containing module, the go command will try each - possible module path on the first proxy in the list before falling back to the - next. If an HTTPS proxy is unreachable or returns a status code other than 404 - or 410 for a given module path, no subsequent proxy is consulted for that - path. The direct token indicates that the go command - should attempt to fetch the module directly from its origin; - GOPROXY entries after direct are ignored. + path to its containing module, the go command will try all + candidate module paths on each proxy in the list in succession. An unreachable + proxy or HTTP status code other than 404 or 410 terminates the search without + consulting the remaining proxies.

@@ -238,9 +232,10 @@ go env -w GOSUMDB=off

go get

- In module-aware mode, the set of modules updated by - go get -u - is now smaller, and is more consistent with the set of packages updated by + In module-aware mode, + go get + with the -u flag now updates a smaller set of modules that is + more consistent with the set of packages updated by go get -u in GOPATH mode. go get -u continues to update the modules and packages named on the command line, but additionally updates only @@ -272,10 +267,7 @@ go env -w GOSUMDB=off upgrades only non-test dependencies, as in GOPATH mode. It now also accepts the -t flag, which (as in GOPATH mode) causes go get to include the packages imported - by tests of the packages named on the command line. If - the -t flag is set, the packages imported by tests will be - updated (if the -u flag is set), downloaded, and built (unless - the -d flag is set) along with the usual non-test packages. + by tests of the packages named on the command line.

@@ -284,8 +276,6 @@ go env -w GOSUMDB=off suffix indicates that the named module, or module containing the named package, should be updated to the highest patch release with the same major and minor versions as the version found in the build list. - If no such version is present in the build list, @patch is - equivalent to the existing @latest suffix.

Version validation

From 9acd2d60e76649663a1e64b1ad00d2173c68c5fe Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Wed, 26 Jun 2019 15:25:16 -0400 Subject: [PATCH 058/255] misc/cgo/errors: fix TestPointerChecks when GO111MODULE=on Change-Id: I4e9e46f03c9c43df1d0c6995f3baedd2e1a04c6a Reviewed-on: https://go-review.googlesource.com/c/go/+/183985 Run-TryBot: Bryan C. Mills TryBot-Result: Gobot Gobot Reviewed-by: Jay Conrod --- misc/cgo/errors/ptr_test.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/misc/cgo/errors/ptr_test.go b/misc/cgo/errors/ptr_test.go index d1ef191bf5..42dfb92bd8 100644 --- a/misc/cgo/errors/ptr_test.go +++ b/misc/cgo/errors/ptr_test.go @@ -466,6 +466,9 @@ func buildPtrTests(t *testing.T) (dir, exe string) { if err := os.MkdirAll(src, 0777); err != nil { t.Fatal(err) } + if err := ioutil.WriteFile(filepath.Join(src, "go.mod"), []byte("module ptrtest"), 0666); err != nil { + t.Fatal(err) + } // Prepare two cgo inputs: one for standard cgo and one for //export cgo. // (The latter cannot have C definitions, only declarations.) From f938b9b33bc51eec6a16cfb13b5c3ef5e266db17 Mon Sep 17 00:00:00 2001 From: Heschi Kreinick Date: Fri, 21 Jun 2019 15:43:23 -0400 Subject: [PATCH 059/255] cmd/go: fix typo in sumdb cache path Put the sumdb cache in the usual pkg/mod/cache/download dir, rather than the new pkg/mod/download/cache dir which I presume was a typo. Change-Id: Id162f24db30f509353178ca0c8cc7a4dabc927e1 Reviewed-on: https://go-review.googlesource.com/c/go/+/183318 Run-TryBot: Heschi Kreinick TryBot-Result: Gobot Gobot Reviewed-by: Bryan C. Mills Reviewed-by: Jay Conrod --- src/cmd/go/internal/modfetch/sumdb.go | 6 +++--- src/cmd/go/testdata/script/mod_sumdb_cache.txt | 2 +- src/cmd/go/testdata/script/mod_sumdb_file_path.txt | 14 +++++++++++++- src/cmd/go/testdata/script/mod_sumdb_proxy.txt | 10 +++++----- 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/cmd/go/internal/modfetch/sumdb.go b/src/cmd/go/internal/modfetch/sumdb.go index 66a09d32c2..b0bb3d4d5e 100644 --- a/src/cmd/go/internal/modfetch/sumdb.go +++ b/src/cmd/go/internal/modfetch/sumdb.go @@ -232,10 +232,10 @@ func (*dbClient) WriteConfig(file string, old, new []byte) error { } // ReadCache reads cached lookups or tiles from -// GOPATH/pkg/mod/download/cache/sumdb, +// GOPATH/pkg/mod/cache/download/sumdb, // which will be deleted by "go clean -modcache". func (*dbClient) ReadCache(file string) ([]byte, error) { - targ := filepath.Join(PkgMod, "download/cache/sumdb", file) + targ := filepath.Join(PkgMod, "cache/download/sumdb", file) data, err := lockedfile.Read(targ) // lockedfile.Write does not atomically create the file with contents. // There is a moment between file creation and locking the file for writing, @@ -249,7 +249,7 @@ func (*dbClient) ReadCache(file string) ([]byte, error) { // WriteCache updates cached lookups or tiles. func (*dbClient) WriteCache(file string, data []byte) { - targ := filepath.Join(PkgMod, "download/cache/sumdb", file) + targ := filepath.Join(PkgMod, "cache/download/sumdb", file) os.MkdirAll(filepath.Dir(targ), 0777) lockedfile.Write(targ, bytes.NewReader(data), 0666) } diff --git a/src/cmd/go/testdata/script/mod_sumdb_cache.txt b/src/cmd/go/testdata/script/mod_sumdb_cache.txt index a44a87499a..486bdf5ecf 100644 --- a/src/cmd/go/testdata/script/mod_sumdb_cache.txt +++ b/src/cmd/go/testdata/script/mod_sumdb_cache.txt @@ -28,7 +28,7 @@ cp go.mod.orig go.mod rm go.sum env GOPROXY=off go get -d rsc.io/quote@v1.5.2 # using cache -rm $GOPATH/pkg/mod/download/cache/sumdb/localhost.localdev/sumdb/lookup/rsc.io/quote@v1.5.2 +rm $GOPATH/pkg/mod/cache/download/sumdb/localhost.localdev/sumdb/lookup/rsc.io/quote@v1.5.2 go get -d rsc.io/quote@v1.5.2 # using go.sum # fetch fails once we lose access to both cache and go.sum diff --git a/src/cmd/go/testdata/script/mod_sumdb_file_path.txt b/src/cmd/go/testdata/script/mod_sumdb_file_path.txt index 744632ec90..47c8a3a0f3 100644 --- a/src/cmd/go/testdata/script/mod_sumdb_file_path.txt +++ b/src/cmd/go/testdata/script/mod_sumdb_file_path.txt @@ -2,6 +2,7 @@ env GO111MODULE=on env GOSUMDB= +env GOPATH=$WORK/gopath1 # With a file-based proxy with an empty checksum directory, # downloading a new module should fail, even if a subsequent @@ -18,11 +19,20 @@ stderr '^verifying golang.org/x/text.*: Not Found' [!windows] env GOPROXY=file://$WORK/emptyproxy,https://proxy.golang.org go get -d golang.org/x/text@v0.3.2 +# After a successful sumdb lookup, the lookup can be repeated +# using the download cache as a proxy. +cp supported $GOPATH/pkg/mod/cache/download/sumdb/sum.golang.org/supported +[windows] env GOPROXY=file:///$WORK/gopath1/pkg/mod/cache/download,file:///$WORK/sumproxy +[!windows] env GOPROXY=file://$WORK/gopath1/pkg/mod/cache/download,file://$WORK/sumproxy +env GOPATH=$WORK/gopath2 +rm go.sum +go get -d -x -v golang.org/x/text@v0.3.2 + # Once the checksum is present in the go.sum file, # an empty file-based sumdb can be used in conjunction with # a fallback module mirror. grep golang.org/x/text go.sum -go clean -modcache +env GOPATH=$WORK/gopath3 [windows] env GOPROXY=file:///$WORK/sumproxy [!windows] env GOPROXY=file://$WORK/sumproxy ! go get -d golang.org/x/text@v0.3.2 @@ -30,6 +40,8 @@ go clean -modcache [!windows] env GOPROXY=file://$WORK/sumproxy,https://proxy.golang.org go get -d golang.org/x/text@v0.3.2 +-- supported -- + -- go.mod -- module example.com go 1.13 diff --git a/src/cmd/go/testdata/script/mod_sumdb_proxy.txt b/src/cmd/go/testdata/script/mod_sumdb_proxy.txt index 6fbf7aeb8a..28166913fd 100644 --- a/src/cmd/go/testdata/script/mod_sumdb_proxy.txt +++ b/src/cmd/go/testdata/script/mod_sumdb_proxy.txt @@ -6,14 +6,14 @@ env GOPROXY GONOPROXY GOSUMDB GONOSUMDB # basic fetch (through proxy) works cp go.mod.orig go.mod go get -d rsc.io/fortune@v1.0.0 # note: must use test proxy, does not exist in real world -rm $GOPATH/pkg/mod/download/cache/sumdb # rm sumdb cache but NOT package download cache +rm $GOPATH/pkg/mod/cache/download/sumdb # rm sumdb cache but NOT package download cache rm go.sum # can fetch by explicit URL cp go.mod.orig go.mod env GOSUMDB=$sumdb' '$proxy/sumdb-direct go get -d rsc.io/fortune@v1.0.0 -rm $GOPATH/pkg/mod/download/cache/sumdb +rm $GOPATH/pkg/mod/cache/download/sumdb rm go.sum # direct access fails (because localhost.localdev does not exist) @@ -25,7 +25,7 @@ env GOSUMDB=$sumdb env GOPROXY=direct ! go get -d rsc.io/fortune@v1.0.0 stderr 'verifying.*localhost.localdev' -rm $GOPATH/pkg/mod/download/cache/sumdb +rm $GOPATH/pkg/mod/cache/download/sumdb rm go.sum # proxy 404 falls back to direct access (which fails) @@ -34,7 +34,7 @@ env GOSUMDB=$sumdb env GOPROXY=$proxy/sumdb-404 ! go get -d rsc.io/fortune@v1.0.0 stderr 'verifying.*localhost.localdev' -rm $GOPATH/pkg/mod/download/cache/sumdb +rm $GOPATH/pkg/mod/cache/download/sumdb rm go.sum # proxy non-200/404/410 stops direct access @@ -43,7 +43,7 @@ env GOSUMDB=$sumdb env GOPROXY=$proxy/sumdb-503 ! go get -d rsc.io/fortune@v1.0.0 stderr '503 Service Unavailable' -rm $GOPATH/pkg/mod/download/cache/sumdb +rm $GOPATH/pkg/mod/cache/download/sumdb rm go.sum -- go.mod.orig -- From 998a98984b5b32a0cab53e0fd690b5a01683db6a Mon Sep 17 00:00:00 2001 From: Baokun Lee Date: Thu, 27 Jun 2019 11:49:43 +0800 Subject: [PATCH 060/255] fmt: fix typo in errors.go Fixes #32802 Change-Id: I756ca49285130b45777bd29de440db296d9632e9 Reviewed-on: https://go-review.googlesource.com/c/go/+/184057 Run-TryBot: Baokun Lee TryBot-Result: Gobot Gobot Reviewed-by: Dmitri Shuralyov --- src/fmt/errors.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fmt/errors.go b/src/fmt/errors.go index 6ae6c47fd9..466a620353 100644 --- a/src/fmt/errors.go +++ b/src/fmt/errors.go @@ -12,7 +12,7 @@ import "errors" // If the format specifier includes a %w verb with an error operand, // the returned error will implement an Unwrap method returning the operand. It is // invalid to include more than one %w verb or to supply it with an operand -// that does not implement the error innterface. The %w verb is otherwise +// that does not implement the error interface. The %w verb is otherwise // a synonym for %v. func Errorf(format string, a ...interface{}) error { p := newPrinter() From e301e165ac3bd591a2c8b52dcc5bdd2b0ef68191 Mon Sep 17 00:00:00 2001 From: Damien Neil Date: Wed, 26 Jun 2019 17:09:14 +0000 Subject: [PATCH 061/255] Revert "syscall: use Ctty before fd shuffle" This reverts commit 103b5b66921b351f8db4fc6e83bf147b1a0d7580. Reason for revert: Breaks valid existing programs. Updates #29458 Change-Id: I7ace4ae404cf2a8b0e15e646663c50115f74b758 Reviewed-on: https://go-review.googlesource.com/c/go/+/183939 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Greg Thelen Reviewed-by: Ian Lance Taylor --- src/os/signal/signal_cgo_test.go | 11 --------- src/syscall/exec_bsd.go | 32 ++++++++++++------------ src/syscall/exec_darwin.go | 32 ++++++++++++------------ src/syscall/exec_libc.go | 42 ++++++++++++++++---------------- src/syscall/exec_linux.go | 32 ++++++++++++------------ 5 files changed, 69 insertions(+), 80 deletions(-) diff --git a/src/os/signal/signal_cgo_test.go b/src/os/signal/signal_cgo_test.go index 075e8c11cb..3c23090489 100644 --- a/src/os/signal/signal_cgo_test.go +++ b/src/os/signal/signal_cgo_test.go @@ -101,17 +101,6 @@ func TestTerminalSignal(t *testing.T) { Ctty: int(slave.Fd()), } - // Test ctty management by sending enough child fd to overlap the - // parent's fd intended for child's ctty. - for 2+len(cmd.ExtraFiles) < cmd.SysProcAttr.Ctty { - dummy, err := os.Open(os.DevNull) - if err != nil { - t.Fatal(err) - } - defer dummy.Close() - cmd.ExtraFiles = append(cmd.ExtraFiles, dummy) - } - if err := cmd.Start(); err != nil { t.Fatal(err) } diff --git a/src/syscall/exec_bsd.go b/src/syscall/exec_bsd.go index 632b711ce8..30b88eba7a 100644 --- a/src/syscall/exec_bsd.go +++ b/src/syscall/exec_bsd.go @@ -162,22 +162,6 @@ func forkAndExecInChild(argv0 *byte, argv, envv []*byte, chroot, dir *byte, attr } } - // Detach fd 0 from tty - if sys.Noctty { - _, _, err1 = RawSyscall(SYS_IOCTL, 0, uintptr(TIOCNOTTY), 0) - if err1 != 0 { - goto childerror - } - } - - // Set the controlling TTY to Ctty - if sys.Setctty { - _, _, err1 = RawSyscall(SYS_IOCTL, uintptr(sys.Ctty), uintptr(TIOCSCTTY), 0) - if err1 != 0 { - goto childerror - } - } - // Pass 1: look for fd[i] < i and move those up above len(fd) // so that pass 2 won't stomp on an fd it needs later. if pipe < nextfd { @@ -235,6 +219,22 @@ func forkAndExecInChild(argv0 *byte, argv, envv []*byte, chroot, dir *byte, attr RawSyscall(SYS_CLOSE, uintptr(i), 0, 0) } + // Detach fd 0 from tty + if sys.Noctty { + _, _, err1 = RawSyscall(SYS_IOCTL, 0, uintptr(TIOCNOTTY), 0) + if err1 != 0 { + goto childerror + } + } + + // Set the controlling TTY to Ctty + if sys.Setctty { + _, _, err1 = RawSyscall(SYS_IOCTL, uintptr(sys.Ctty), uintptr(TIOCSCTTY), 0) + if err1 != 0 { + goto childerror + } + } + // Time to exec. _, _, err1 = RawSyscall(SYS_EXECVE, uintptr(unsafe.Pointer(argv0)), diff --git a/src/syscall/exec_darwin.go b/src/syscall/exec_darwin.go index 9f7bf67d2c..ac1ead3a2b 100644 --- a/src/syscall/exec_darwin.go +++ b/src/syscall/exec_darwin.go @@ -160,22 +160,6 @@ func forkAndExecInChild(argv0 *byte, argv, envv []*byte, chroot, dir *byte, attr } } - // Detach fd 0 from tty - if sys.Noctty { - _, _, err1 = rawSyscall(funcPC(libc_ioctl_trampoline), 0, uintptr(TIOCNOTTY), 0) - if err1 != 0 { - goto childerror - } - } - - // Set the controlling TTY to Ctty - if sys.Setctty { - _, _, err1 = rawSyscall(funcPC(libc_ioctl_trampoline), uintptr(sys.Ctty), uintptr(TIOCSCTTY), 0) - if err1 != 0 { - goto childerror - } - } - // Pass 1: look for fd[i] < i and move those up above len(fd) // so that pass 2 won't stomp on an fd it needs later. if pipe < nextfd { @@ -233,6 +217,22 @@ func forkAndExecInChild(argv0 *byte, argv, envv []*byte, chroot, dir *byte, attr rawSyscall(funcPC(libc_close_trampoline), uintptr(i), 0, 0) } + // Detach fd 0 from tty + if sys.Noctty { + _, _, err1 = rawSyscall(funcPC(libc_ioctl_trampoline), 0, uintptr(TIOCNOTTY), 0) + if err1 != 0 { + goto childerror + } + } + + // Set the controlling TTY to Ctty + if sys.Setctty { + _, _, err1 = rawSyscall(funcPC(libc_ioctl_trampoline), uintptr(sys.Ctty), uintptr(TIOCSCTTY), 0) + if err1 != 0 { + goto childerror + } + } + // Time to exec. _, _, err1 = rawSyscall(funcPC(libc_execve_trampoline), uintptr(unsafe.Pointer(argv0)), diff --git a/src/syscall/exec_libc.go b/src/syscall/exec_libc.go index 11cd2bb9f3..0133139000 100644 --- a/src/syscall/exec_libc.go +++ b/src/syscall/exec_libc.go @@ -180,27 +180,6 @@ func forkAndExecInChild(argv0 *byte, argv, envv []*byte, chroot, dir *byte, attr } } - // Detach fd 0 from tty - if sys.Noctty { - err1 = ioctl(0, uintptr(TIOCNOTTY), 0) - if err1 != 0 { - goto childerror - } - } - - // Set the controlling TTY to Ctty - if sys.Setctty { - // On AIX, TIOCSCTTY is undefined - if TIOCSCTTY == 0 { - err1 = ENOSYS - goto childerror - } - err1 = ioctl(uintptr(sys.Ctty), uintptr(TIOCSCTTY), 0) - if err1 != 0 { - goto childerror - } - } - // Pass 1: look for fd[i] < i and move those up above len(fd) // so that pass 2 won't stomp on an fd it needs later. if pipe < nextfd { @@ -261,6 +240,27 @@ func forkAndExecInChild(argv0 *byte, argv, envv []*byte, chroot, dir *byte, attr close(uintptr(i)) } + // Detach fd 0 from tty + if sys.Noctty { + err1 = ioctl(0, uintptr(TIOCNOTTY), 0) + if err1 != 0 { + goto childerror + } + } + + // Set the controlling TTY to Ctty + if sys.Setctty { + // On AIX, TIOCSCTTY is undefined + if TIOCSCTTY == 0 { + err1 = ENOSYS + goto childerror + } + err1 = ioctl(uintptr(sys.Ctty), uintptr(TIOCSCTTY), 0) + if err1 != 0 { + goto childerror + } + } + // Time to exec. err1 = execve( uintptr(unsafe.Pointer(argv0)), diff --git a/src/syscall/exec_linux.go b/src/syscall/exec_linux.go index f62f2c633e..a2242b2057 100644 --- a/src/syscall/exec_linux.go +++ b/src/syscall/exec_linux.go @@ -431,22 +431,6 @@ func forkAndExecInChild1(argv0 *byte, argv, envv []*byte, chroot, dir *byte, att } } - // Detach fd 0 from tty - if sys.Noctty { - _, _, err1 = RawSyscall(SYS_IOCTL, 0, uintptr(TIOCNOTTY), 0) - if err1 != 0 { - goto childerror - } - } - - // Set the controlling TTY to Ctty - if sys.Setctty { - _, _, err1 = RawSyscall(SYS_IOCTL, uintptr(sys.Ctty), uintptr(TIOCSCTTY), 1) - if err1 != 0 { - goto childerror - } - } - // Pass 1: look for fd[i] < i and move those up above len(fd) // so that pass 2 won't stomp on an fd it needs later. if pipe < nextfd { @@ -504,6 +488,22 @@ func forkAndExecInChild1(argv0 *byte, argv, envv []*byte, chroot, dir *byte, att RawSyscall(SYS_CLOSE, uintptr(i), 0, 0) } + // Detach fd 0 from tty + if sys.Noctty { + _, _, err1 = RawSyscall(SYS_IOCTL, 0, uintptr(TIOCNOTTY), 0) + if err1 != 0 { + goto childerror + } + } + + // Set the controlling TTY to Ctty + if sys.Setctty { + _, _, err1 = RawSyscall(SYS_IOCTL, uintptr(sys.Ctty), uintptr(TIOCSCTTY), 1) + if err1 != 0 { + goto childerror + } + } + // Enable tracing if requested. // Do this right before exec so that we don't unnecessarily trace the runtime // setting up after the fork. See issue #21428. From 0d4de70c1c2522bb965cb683070b316d77909649 Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Wed, 26 Jun 2019 15:00:01 -0400 Subject: [PATCH 062/255] misc/cgo/errors: align code snippets in ptr_test.go Change-Id: Ic3e2819617375df653116d21d7361a46085250d5 Reviewed-on: https://go-review.googlesource.com/c/go/+/183986 Reviewed-by: Ian Lance Taylor --- misc/cgo/errors/ptr_test.go | 70 ++++++++++++++++++------------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/misc/cgo/errors/ptr_test.go b/misc/cgo/errors/ptr_test.go index 42dfb92bd8..522ef2adfd 100644 --- a/misc/cgo/errors/ptr_test.go +++ b/misc/cgo/errors/ptr_test.go @@ -156,8 +156,8 @@ var ptrTests = []ptrTest{ // Storing a Go pointer into C memory should fail. name: "barrier", c: `#include - char **f14a() { return malloc(sizeof(char*)); } - void f14b(char **p) {}`, + char **f14a() { return malloc(sizeof(char*)); } + void f14b(char **p) {}`, body: `p := C.f14a(); *p = new(C.char); C.f14b(p)`, fail: true, expensive: true, @@ -167,9 +167,9 @@ var ptrTests = []ptrTest{ // large value should fail. name: "barrierstruct", c: `#include - struct s15 { char *a[10]; }; - struct s15 *f15() { return malloc(sizeof(struct s15)); } - void f15b(struct s15 *p) {}`, + struct s15 { char *a[10]; }; + struct s15 *f15() { return malloc(sizeof(struct s15)); } + void f15b(struct s15 *p) {}`, body: `p := C.f15(); p.a = [10]*C.char{new(C.char)}; C.f15b(p)`, fail: true, expensive: true, @@ -179,9 +179,9 @@ var ptrTests = []ptrTest{ // copy should fail. name: "barrierslice", c: `#include - struct s16 { char *a[10]; }; - struct s16 *f16() { return malloc(sizeof(struct s16)); } - void f16b(struct s16 *p) {}`, + struct s16 { char *a[10]; }; + struct s16 *f16() { return malloc(sizeof(struct s16)); } + void f16b(struct s16 *p) {}`, body: `p := C.f16(); copy(p.a[:], []*C.char{new(C.char)}); C.f16b(p)`, fail: true, expensive: true, @@ -191,9 +191,9 @@ var ptrTests = []ptrTest{ // different code path. name: "barriergcprogarray", c: `#include - struct s17 { char *a[32769]; }; - struct s17 *f17() { return malloc(sizeof(struct s17)); } - void f17b(struct s17 *p) {}`, + struct s17 { char *a[32769]; }; + struct s17 *f17() { return malloc(sizeof(struct s17)); } + void f17b(struct s17 *p) {}`, body: `p := C.f17(); p.a = [32769]*C.char{new(C.char)}; C.f17b(p)`, fail: true, expensive: true, @@ -202,10 +202,10 @@ var ptrTests = []ptrTest{ // Similar case, with a source on the heap. name: "barriergcprogarrayheap", c: `#include - struct s18 { char *a[32769]; }; - struct s18 *f18() { return malloc(sizeof(struct s18)); } - void f18b(struct s18 *p) {} - void f18c(void *p) {}`, + struct s18 { char *a[32769]; }; + struct s18 *f18() { return malloc(sizeof(struct s18)); } + void f18b(struct s18 *p) {} + void f18c(void *p) {}`, imports: []string{"unsafe"}, body: `p := C.f18(); n := &[32769]*C.char{new(C.char)}; p.a = *n; C.f18b(p); n[0] = nil; C.f18c(unsafe.Pointer(n))`, fail: true, @@ -215,10 +215,10 @@ var ptrTests = []ptrTest{ // A GC program with a struct. name: "barriergcprogstruct", c: `#include - struct s19a { char *a[32769]; }; - struct s19b { struct s19a f; }; - struct s19b *f19() { return malloc(sizeof(struct s19b)); } - void f19b(struct s19b *p) {}`, + struct s19a { char *a[32769]; }; + struct s19b { struct s19a f; }; + struct s19b *f19() { return malloc(sizeof(struct s19b)); } + void f19b(struct s19b *p) {}`, body: `p := C.f19(); p.f = C.struct_s19a{[32769]*C.char{new(C.char)}}; C.f19b(p)`, fail: true, expensive: true, @@ -227,11 +227,11 @@ var ptrTests = []ptrTest{ // Similar case, with a source on the heap. name: "barriergcprogstructheap", c: `#include - struct s20a { char *a[32769]; }; - struct s20b { struct s20a f; }; - struct s20b *f20() { return malloc(sizeof(struct s20b)); } - void f20b(struct s20b *p) {} - void f20c(void *p) {}`, + struct s20a { char *a[32769]; }; + struct s20b { struct s20a f; }; + struct s20b *f20() { return malloc(sizeof(struct s20b)); } + void f20b(struct s20b *p) {} + void f20c(void *p) {}`, imports: []string{"unsafe"}, body: `p := C.f20(); n := &C.struct_s20a{[32769]*C.char{new(C.char)}}; p.f = *n; C.f20b(p); n.a[0] = nil; C.f20c(unsafe.Pointer(n))`, fail: true, @@ -242,7 +242,7 @@ var ptrTests = []ptrTest{ name: "export1", c: `extern unsigned char *GoFn21();`, support: `//export GoFn21 - func GoFn21() *byte { return new(byte) }`, + func GoFn21() *byte { return new(byte) }`, body: `C.GoFn21()`, fail: true, }, @@ -250,17 +250,17 @@ var ptrTests = []ptrTest{ // Returning a C pointer is fine. name: "exportok", c: `#include - extern unsigned char *GoFn22();`, + extern unsigned char *GoFn22();`, support: `//export GoFn22 - func GoFn22() *byte { return (*byte)(C.malloc(1)) }`, + func GoFn22() *byte { return (*byte)(C.malloc(1)) }`, body: `C.GoFn22()`, }, { // Passing a Go string is fine. name: "passstring", c: `#include - typedef struct { const char *p; ptrdiff_t n; } gostring23; - gostring23 f23(gostring23 s) { return s; }`, + typedef struct { const char *p; ptrdiff_t n; } gostring23; + gostring23 f23(gostring23 s) { return s; }`, imports: []string{"unsafe"}, body: `s := "a"; r := C.f23(*(*C.gostring23)(unsafe.Pointer(&s))); if *(*string)(unsafe.Pointer(&r)) != s { panic(r) }`, }, @@ -279,12 +279,12 @@ var ptrTests = []ptrTest{ c: `extern void f25();`, imports: []string{"strings"}, support: `//export GoStr25 - func GoStr25() string { return strings.Repeat("a", 2) }`, + func GoStr25() string { return strings.Repeat("a", 2) }`, body: `C.f25()`, c1: `#include - typedef struct { const char *p; ptrdiff_t n; } gostring25; - extern gostring25 GoStr25(); - void f25() { GoStr25(); }`, + typedef struct { const char *p; ptrdiff_t n; } gostring25; + extern gostring25 GoStr25(); + void f25() { GoStr25(); }`, fail: true, }, { @@ -295,7 +295,7 @@ var ptrTests = []ptrTest{ // that is, we are testing something that is not unsafe. name: "ptrdata1", c: `#include - void f26(void* p) {}`, + void f26(void* p) {}`, imports: []string{"unsafe"}, support: `type S26 struct { p *int; a [8*8]byte; u uintptr }`, body: `i := 0; p := &S26{u:uintptr(unsafe.Pointer(&i))}; q := (*S26)(C.malloc(C.size_t(unsafe.Sizeof(*p)))); *q = *p; C.f26(unsafe.Pointer(q))`, @@ -305,7 +305,7 @@ var ptrTests = []ptrTest{ // Like ptrdata1, but with a type that uses a GC program. name: "ptrdata2", c: `#include - void f27(void* p) {}`, + void f27(void* p) {}`, imports: []string{"unsafe"}, support: `type S27 struct { p *int; a [32769*8]byte; q *int; u uintptr }`, body: `i := 0; p := S27{u:uintptr(unsafe.Pointer(&i))}; q := (*S27)(C.malloc(C.size_t(unsafe.Sizeof(p)))); *q = p; C.f27(unsafe.Pointer(q))`, From f1a8ca30fcaa91803c353999448f6f3a292f1db1 Mon Sep 17 00:00:00 2001 From: Jay Conrod Date: Thu, 27 Jun 2019 15:28:08 -0400 Subject: [PATCH 063/255] go/build: don't check if srcDir in GOPATH when deciding to use modules go/build.Context.Import loads package information using 'go list' when in module mode. It does this when GO111MODULE is not "off", there is a go.mod file in any parent directory, and neither the path nor the source directory are in GOROOT. Import no longer checks whether the source directory is in GOPATH if GO111MODULE=auto or unset. Also fixed subdirectory checks that did not handle relative source directory paths. mod_gobuild_import should have failed when we changed the meaning of GO111MODULE=auto but didn't because of this. Fixes #32799 Change-Id: Ic5210b7e00cb58f91ea9455b67b49d5aed4eec63 Reviewed-on: https://go-review.googlesource.com/c/go/+/184098 Run-TryBot: Jay Conrod Reviewed-by: Bryan C. Mills TryBot-Result: Gobot Gobot --- .../go/testdata/script/mod_gobuild_import.txt | 20 +++++++++-- src/go/build/build.go | 36 +++++++++---------- 2 files changed, 34 insertions(+), 22 deletions(-) diff --git a/src/cmd/go/testdata/script/mod_gobuild_import.txt b/src/cmd/go/testdata/script/mod_gobuild_import.txt index a4eb5d6596..ae05250c5f 100644 --- a/src/cmd/go/testdata/script/mod_gobuild_import.txt +++ b/src/cmd/go/testdata/script/mod_gobuild_import.txt @@ -62,15 +62,31 @@ import ( "go/build" "log" "os" + "path/filepath" "strings" ) func main() { - p, err := build.Import(os.Args[1], os.Args[2], 0) + // build.Import should support relative and absolute source dir paths. + path := os.Args[1] + srcDir := os.Args[2] + p1, err := build.Import(path, srcDir, 0) if err != nil { log.Fatal(err) } - fmt.Printf("%s\n%s\n", p.Dir, strings.Join(p.GoFiles, " ")) + absSrcDir, err := filepath.Abs(srcDir) + if err != nil { + log.Fatal(err) + } + p2, err := build.Import(path, absSrcDir, 0) + if err != nil { + log.Fatal(err) + } + if p1.Dir != p2.Dir { + log.Fatalf("different packages loaded with relative and absolute paths:\n\t%s\n\t%s", p1.Dir, p2.Dir) + } + + fmt.Printf("%s\n%s\n", p1.Dir, strings.Join(p1.GoFiles, " ")) } -- $GOPATH/other/go.mod -- diff --git a/src/go/build/build.go b/src/go/build/build.go index a91551bc22..f8547606aa 100644 --- a/src/go/build/build.go +++ b/src/go/build/build.go @@ -1001,27 +1001,25 @@ func (ctxt *Context) importGo(p *Package, path, srcDir string, mode ImportMode, return errNoModules } + // Find the absolute source directory. hasSubdir does not handle + // relative paths (and can't because the callbacks don't support this). + absSrcDir, err := filepath.Abs(srcDir) + if err != nil { + return errNoModules + } + // If modules are not enabled, then the in-process code works fine and we should keep using it. - // TODO(bcmills): This assumes that the default is "auto" instead of "on". switch os.Getenv("GO111MODULE") { case "off": return errNoModules - case "on": - // ok - default: // "", "auto", anything else - // Automatic mode: no module use in $GOPATH/src. - for _, root := range gopath { - sub, ok := ctxt.hasSubdir(root, srcDir) - if ok && strings.HasPrefix(sub, "src/") { - return errNoModules - } - } + default: // "", "on", "auto", anything else + // Maybe use modules. } // If the source directory is in GOROOT, then the in-process code works fine // and we should keep using it. Moreover, the 'go list' approach below doesn't // take standard-library vendoring into account and will fail. - if _, ok := ctxt.hasSubdir(filepath.Join(ctxt.GOROOT, "src"), srcDir); ok { + if _, ok := ctxt.hasSubdir(filepath.Join(ctxt.GOROOT, "src"), absSrcDir); ok { return errNoModules } @@ -1034,20 +1032,18 @@ func (ctxt *Context) importGo(p *Package, path, srcDir string, mode ImportMode, } // Look to see if there is a go.mod. - abs, err := filepath.Abs(srcDir) - if err != nil { - return errNoModules - } + // Since go1.13, it doesn't matter if we're inside GOPATH. + parent := absSrcDir for { - info, err := os.Stat(filepath.Join(abs, "go.mod")) + info, err := os.Stat(filepath.Join(parent, "go.mod")) if err == nil && !info.IsDir() { break } - d := filepath.Dir(abs) - if len(d) >= len(abs) { + d := filepath.Dir(parent) + if len(d) >= len(parent) { return errNoModules // reached top of file system, no go.mod } - abs = d + parent = d } cmd := exec.Command("go", "list", "-compiler="+ctxt.Compiler, "-tags="+strings.Join(ctxt.BuildTags, ","), "-installsuffix="+ctxt.InstallSuffix, "-f={{.Dir}}\n{{.ImportPath}}\n{{.Root}}\n{{.Goroot}}\n", path) From f205ae3305d2b60076ee294113984595bae7c4da Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Thu, 27 Jun 2019 13:17:48 -0700 Subject: [PATCH 064/255] go/importer: update documentation on ForCompiler lookup parameter Change-Id: I80dff181a79858b52ba77c3f38f77a744b423afa Reviewed-on: https://go-review.googlesource.com/c/go/+/184079 Reviewed-by: Michael Matloob --- src/go/importer/importer.go | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/go/importer/importer.go b/src/go/importer/importer.go index fbbc3c9017..23118d366e 100644 --- a/src/go/importer/importer.go +++ b/src/go/importer/importer.go @@ -28,17 +28,15 @@ type Lookup func(path string) (io.ReadCloser, error) // (if the package API depends on cgo-defined entities, the type // checker won't have access to those). // -// If lookup is nil, the default package lookup mechanism for the -// given compiler is used, and the resulting importer attempts -// to resolve relative and absolute import paths to canonical -// import path IDs before finding the imported file. +// The lookup function is called each time the resulting importer needs +// to resolve an import path. In this mode the importer can only be +// invoked with canonical import paths (not relative or absolute ones); +// it is assumed that the translation to canonical import paths is being +// done by the client of the importer. // -// If lookup is non-nil, then the returned importer calls lookup -// each time it needs to resolve an import path. In this mode -// the importer can only be invoked with canonical import paths -// (not relative or absolute ones); it is assumed that the translation -// to canonical import paths is being done by the client of the -// importer. +// A lookup function must be provided for correct module-aware operation. +// Deprecated: If lookup is nil, for backwards-compatibility, the importer +// will attempt to resolve imports in the $GOPATH workspace. func ForCompiler(fset *token.FileSet, compiler string, lookup Lookup) types.Importer { switch compiler { case "gc": From b97ec8e57f7a27eea76814bad5c74aa8f0617bb6 Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Thu, 27 Jun 2019 13:26:51 -0700 Subject: [PATCH 065/255] text/scanner: remove AllowDigitSeparator flag again The scanner was changed to accept the new Go number literal syntax of which separators are a part. Making them opt-in is inconsistent with the rest of the changes. For comparison, the strconv package also accepts the new number literals including separators with the various conversion routines, if no explicit number base is given. Updates #28493. Change-Id: Ifaae2225a9565364610813658bfe692901dd3ccd Reviewed-on: https://go-review.googlesource.com/c/go/+/184080 Run-TryBot: Robert Griesemer TryBot-Result: Gobot Gobot Reviewed-by: Russ Cox --- api/go1.13.txt | 3 --- src/text/scanner/scanner.go | 30 +++++++++++++++--------------- src/text/scanner/scanner_test.go | 3 +-- 3 files changed, 16 insertions(+), 20 deletions(-) diff --git a/api/go1.13.txt b/api/go1.13.txt index 0f5e3eeefd..16f11cf2b7 100644 --- a/api/go1.13.txt +++ b/api/go1.13.txt @@ -8021,9 +8021,6 @@ pkg syscall (windows-amd64), type SysProcAttr struct, ThreadAttributes *Security pkg testing, func Init() pkg testing, method (*B) ReportMetric(float64, string) pkg testing, type BenchmarkResult struct, Extra map[string]float64 -pkg text/scanner, const AllowDigitSeparators = 1024 -pkg text/scanner, const AllowDigitSeparators ideal-int -pkg text/scanner, const GoTokens = 2036 pkg text/template, method (ExecError) Unwrap() error pkg time, method (Duration) Microseconds() int64 pkg time, method (Duration) Milliseconds() int64 diff --git a/src/text/scanner/scanner.go b/src/text/scanner/scanner.go index fa5a0cd70d..e0847a7239 100644 --- a/src/text/scanner/scanner.go +++ b/src/text/scanner/scanner.go @@ -58,17 +58,19 @@ func (pos Position) String() string { // For instance, if the mode is ScanIdents (not ScanStrings), the string // "foo" is scanned as the token sequence '"' Ident '"'. // +// Use GoTokens to configure the Scanner such that it accepts all Go +// literal tokens including Go identifiers. Comments will be skipped. +// const ( - ScanIdents = 1 << -Ident - ScanInts = 1 << -Int - ScanFloats = 1 << -Float // includes Ints and hexadecimal floats - ScanChars = 1 << -Char - ScanStrings = 1 << -String - ScanRawStrings = 1 << -RawString - ScanComments = 1 << -Comment - SkipComments = 1 << -skipComment // if set with ScanComments, comments become white space - AllowDigitSeparators = 1 << -allowDigitSeparators // if set, number literals may contain underscores as digit separators - GoTokens = ScanIdents | ScanFloats | ScanChars | ScanStrings | ScanRawStrings | ScanComments | SkipComments | AllowDigitSeparators + ScanIdents = 1 << -Ident + ScanInts = 1 << -Int + ScanFloats = 1 << -Float // includes Ints and hexadecimal floats + ScanChars = 1 << -Char + ScanStrings = 1 << -String + ScanRawStrings = 1 << -RawString + ScanComments = 1 << -Comment + SkipComments = 1 << -skipComment // if set with ScanComments, comments become white space + GoTokens = ScanIdents | ScanFloats | ScanChars | ScanStrings | ScanRawStrings | ScanComments | SkipComments ) // The result of Scan is one of these tokens or a Unicode character. @@ -84,7 +86,6 @@ const ( // internal use only skipComment - allowDigitSeparators ) var tokenString = map[rune]string{ @@ -363,8 +364,7 @@ func lower(ch rune) rune { return ('a' - 'A') | ch } // returns lower-case c func isDecimal(ch rune) bool { return '0' <= ch && ch <= '9' } func isHex(ch rune) bool { return '0' <= ch && ch <= '9' || 'a' <= lower(ch) && lower(ch) <= 'f' } -// digits accepts the sequence { digit } (if AllowDigitSeparators is not set) -// or { digit | '_' } (if AllowDigitSeparators is set), starting with ch0. +// digits accepts the sequence { digit | '_' } starting with ch0. // If base <= 10, digits accepts any decimal digit but records // the first invalid digit >= base in *invalid if *invalid == 0. // digits returns the first rune that is not part of the sequence @@ -374,7 +374,7 @@ func (s *Scanner) digits(ch0 rune, base int, invalid *rune) (ch rune, digsep int ch = ch0 if base <= 10 { max := rune('0' + base) - for isDecimal(ch) || ch == '_' && s.Mode&AllowDigitSeparators != 0 { + for isDecimal(ch) || ch == '_' { ds := 1 if ch == '_' { ds = 2 @@ -385,7 +385,7 @@ func (s *Scanner) digits(ch0 rune, base int, invalid *rune) (ch rune, digsep int ch = s.next() } } else { - for isHex(ch) || ch == '_' && s.Mode&AllowDigitSeparators != 0 { + for isHex(ch) || ch == '_' { ds := 1 if ch == '_' { ds = 2 diff --git a/src/text/scanner/scanner_test.go b/src/text/scanner/scanner_test.go index fb68106c16..fe39d3060b 100644 --- a/src/text/scanner/scanner_test.go +++ b/src/text/scanner/scanner_test.go @@ -886,8 +886,7 @@ func TestIssue30320(t *testing.T) { {"foo01.bar31.xx-0-1-1-0", "01 31 0 1 1 0", ScanInts}, {"foo0/12/0/5.67", "0 12 0 5 67", ScanInts}, {"xxx1e0yyy", "1 0", ScanInts}, - {"1_2", "1 2", ScanInts}, // don't consume _ as part of a number if not explicitly enabled - {"1_2", "1_2", ScanInts | AllowDigitSeparators}, + {"1_2", "1_2", ScanInts}, {"xxx1.0yyy2e3ee", "1 0 2 3", ScanInts}, {"xxx1.0yyy2e3ee", "1.0 2e3", ScanFloats}, } { From 67f181bfd84dfd5942fe9a29d8a20c9ce5eb2fea Mon Sep 17 00:00:00 2001 From: Diogo Pinela Date: Thu, 27 Jun 2019 22:19:15 +0100 Subject: [PATCH 066/255] doc: fix spec links in Go 1.13 release notes When reading tip.golang.org/doc/go1.13.html, the spec links in the "Changes to the language" section should point to the updated spec, not the old one. Change-Id: I6b13ca0b4c722ed52b84a12a680bece876a4e478 Reviewed-on: https://go-review.googlesource.com/c/go/+/184118 Reviewed-by: Brad Fitzpatrick --- doc/go1.13.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/go1.13.html b/doc/go1.13.html index 63ba880250..547fdd9933 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -41,13 +41,13 @@ Do not send CLs removing the interior tags from such phrases. Go 1.13 supports a more uniform and modernized set of number literal prefixes.
  • - Binary integer literals: + Binary integer literals: The prefix 0b or 0B indicates a binary integer literal such as 0b1011.
  • - Octal integer literals: + Octal integer literals: The prefix 0o or 0O indicates an octal integer literal such as 0o660. The existing octal notation indicated by a leading 0 followed by @@ -55,7 +55,7 @@ Do not send CLs removing the interior tags from such phrases.
  • - Hexadecimal floating point literals: + Hexadecimal floating point literals: The prefix 0x or 0X may now be used to express the mantissa of a floating-point number in hexadecimal format such as 0x1.0p-1021. A hexadecimal floating-point number must always have an exponent, written as the letter @@ -64,7 +64,7 @@ Do not send CLs removing the interior tags from such phrases.
  • - Imaginary literals: + Imaginary literals: The imaginary suffix i may now be used with any (binary, decimal, hexadecimal) integer or floating-point literal.
  • @@ -80,7 +80,7 @@ Do not send CLs removing the interior tags from such phrases.

    Per the signed shift counts proposal - Go 1.13 removes the restriction that a shift count + Go 1.13 removes the restriction that a shift count must be unsigned. This change eliminates the need for many artificial uint conversions, solely introduced to satisfy this (now removed) restriction of the << and >> operators.

    From 3b040b7e8088ad2c02e413a4abf7effcd62373d0 Mon Sep 17 00:00:00 2001 From: Dmitri Shuralyov Date: Wed, 26 Jun 2019 20:07:14 -0400 Subject: [PATCH 067/255] cmd/doc: provide working directory to build.Import calls The current cmd/doc implementation uses go/build.Import in a few places to check whether a package is findable and importable. go/build has limited support for finding packages in modules, but to do so, build.Import requires knowing the source directory to use when performing the lookup (so it can find the go.mod file). Otherwise, it only looks inside the GOPATH workspace. Start passing the current working directory to build.Import calls, so that it can correctly look for packages in modules when in cmd/doc is executed in module mode. Before this change, cmd/doc in module mode could mistakenly find and use a package in the GOPATH workspace, instead of the current module. Since the result of os.Getwd is needed in even more places, assign it to a local variable in parseArgs now. Fixes #28992 Updates #26504 Change-Id: I7571618e18420d2d3b3890cc69ade2d97b1962bf Reviewed-on: https://go-review.googlesource.com/c/go/+/183991 Run-TryBot: Dmitri Shuralyov TryBot-Result: Gobot Gobot Reviewed-by: Bryan C. Mills --- src/cmd/doc/doc_test.go | 7 +++++-- src/cmd/doc/main.go | 25 ++++++++++-------------- src/cmd/go/testdata/script/mod_doc.txt | 27 ++++++++++++++++++++++++-- 3 files changed, 40 insertions(+), 19 deletions(-) diff --git a/src/cmd/doc/doc_test.go b/src/cmd/doc/doc_test.go index bc870aca58..11d0bdafd9 100644 --- a/src/cmd/doc/doc_test.go +++ b/src/cmd/doc/doc_test.go @@ -920,7 +920,10 @@ func TestDotSlashLookup(t *testing.T) { t.Skip("scanning file system takes too long") } maybeSkip(t) - where := pwd() + where, err := os.Getwd() + if err != nil { + t.Fatal(err) + } defer func() { if err := os.Chdir(where); err != nil { t.Fatal(err) @@ -931,7 +934,7 @@ func TestDotSlashLookup(t *testing.T) { } var b bytes.Buffer var flagSet flag.FlagSet - err := do(&b, &flagSet, []string{"./template"}) + err = do(&b, &flagSet, []string{"./template"}) if err != nil { t.Errorf("unexpected error %q from ./template", err) } diff --git a/src/cmd/doc/main.go b/src/cmd/doc/main.go index 9e3ad0c0e7..a739761afe 100644 --- a/src/cmd/doc/main.go +++ b/src/cmd/doc/main.go @@ -187,16 +187,20 @@ func failMessage(paths []string, symbol, method string) error { // is rand.Float64, we must scan both crypto/rand and math/rand // to find the symbol, and the first call will return crypto/rand, true. func parseArgs(args []string) (pkg *build.Package, path, symbol string, more bool) { + wd, err := os.Getwd() + if err != nil { + log.Fatal(err) + } if len(args) == 0 { // Easy: current directory. - return importDir(pwd()), "", "", false + return importDir(wd), "", "", false } arg := args[0] // We have an argument. If it is a directory name beginning with . or .., // use the absolute path name. This discriminates "./errors" from "errors" // if the current directory contains a non-standard errors package. if isDotSlash(arg) { - arg = filepath.Join(pwd(), arg) + arg = filepath.Join(wd, arg) } switch len(args) { default: @@ -205,7 +209,7 @@ func parseArgs(args []string) (pkg *build.Package, path, symbol string, more boo // Done below. case 2: // Package must be findable and importable. - pkg, err := build.Import(args[0], "", build.ImportComment) + pkg, err := build.Import(args[0], wd, build.ImportComment) if err == nil { return pkg, args[0], args[1], false } @@ -225,7 +229,7 @@ func parseArgs(args []string) (pkg *build.Package, path, symbol string, more boo // First, is it a complete package path as it is? If so, we are done. // This avoids confusion over package paths that have other // package paths as their prefix. - pkg, err := build.Import(arg, "", build.ImportComment) + pkg, err = build.Import(arg, wd, build.ImportComment) if err == nil { return pkg, arg, "", false } @@ -260,7 +264,7 @@ func parseArgs(args []string) (pkg *build.Package, path, symbol string, more boo symbol = arg[period+1:] } // Have we identified a package already? - pkg, err := build.Import(arg[0:period], "", build.ImportComment) + pkg, err := build.Import(arg[0:period], wd, build.ImportComment) if err == nil { return pkg, arg[0:period], symbol, false } @@ -283,7 +287,7 @@ func parseArgs(args []string) (pkg *build.Package, path, symbol string, more boo log.Fatalf("no such package %s", arg[0:period]) } // Guess it's a symbol in the current directory. - return importDir(pwd()), "", arg, false + return importDir(wd), "", arg, false } // dotPaths lists all the dotted paths legal on Unix-like and @@ -385,12 +389,3 @@ var buildCtx = build.Default func splitGopath() []string { return filepath.SplitList(buildCtx.GOPATH) } - -// pwd returns the current directory. -func pwd() string { - wd, err := os.Getwd() - if err != nil { - log.Fatal(err) - } - return wd -} diff --git a/src/cmd/go/testdata/script/mod_doc.txt b/src/cmd/go/testdata/script/mod_doc.txt index 40acbc5ac0..d7aa553c1d 100644 --- a/src/cmd/go/testdata/script/mod_doc.txt +++ b/src/cmd/go/testdata/script/mod_doc.txt @@ -3,6 +3,7 @@ env GO111MODULE=on [short] skip +# Check when module x is inside GOPATH/src. go doc y stdout 'Package y is.*alphabet' stdout 'import "x/y"' @@ -16,13 +17,25 @@ stdout 'Hello returns a greeting' go doc quote stdout 'Package quote collects pithy sayings.' -# Double-check go doc y when y is not in GOPATH/src. -env GOPATH=$WORK/altgopath +# Double-check when module x is outside GOPATH/src. +env GOPATH=$WORK/emptygopath go doc x/y stdout 'Package y is.*alphabet' go doc y stdout 'Package y is.*alphabet' +# Triple-check when module x is outside GOPATH/src, +# but other packages with same import paths are in GOPATH/src. +# Since go doc is running in module mode here, packages in active module +# should be preferred over packages in GOPATH. See golang.org/issue/28992. +env GOPATH=$WORK/gopath2 +go doc x/y +! stdout 'Package y is.*GOPATH' +stdout 'Package y is.*alphabet' +go doc rsc.io/quote +! stdout 'Package quote is located in a GOPATH workspace.' +stdout 'Package quote collects pithy sayings.' + -- go.mod -- module x require rsc.io/quote v1.5.2 @@ -33,3 +46,13 @@ package y -- x.go -- package x + +-- $WORK/gopath2/src/x/y/y.go -- +// Package y is located in a GOPATH workspace. +package y +-- $WORK/gopath2/src/rsc.io/quote/quote.go -- +// Package quote is located in a GOPATH workspace. +package quote + +// Hello is located in a GOPATH workspace. +func Hello() string { return "" } From 91c385b3936e757e4cda01c9265de3b4abf601c3 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Fri, 28 Jun 2019 01:42:08 -0400 Subject: [PATCH 068/255] runtime: fix pprof cpu profile corruption on arm/mips/mipsle CL 42652 changed the profile handler for mips/mipsle to avoid recording a profile when in atomic functions, for fear of interrupting the 32-bit simulation of a 64-bit atomic with a lock. The profile logger itself uses 64-bit atomics and might deadlock (#20146). The change was to accumulate a count of dropped profile events and then send the count when the next ordinary event was sent: if prof.hz != 0 { + if (GOARCH == "mips" || GOARCH == "mipsle") && lostAtomic64Count > 0 { + cpuprof.addLostAtomic64(lostAtomic64Count) + lostAtomic64Count = 0 + } cpuprof.add(gp, stk[:n]) } CL 117057 extended this behavior to include GOARCH == "arm". Unfortunately, the inserted cpuprof.addLostAtomic64 differs from the original cpuprof.add in that it neglects to acquire the lock protecting the profile buffer. This has caused a steady stream of flakes on the arm builders for the past 12 months, ever since CL 117057 landed. This CL moves the lostAtomic count into the profile buffer and then lets the existing addExtra calls take care of it, instead of duplicating the locking logic. Fixes #24991. Change-Id: Ia386c40034fcf46b31f080ce18f2420df4bb8004 Reviewed-on: https://go-review.googlesource.com/c/go/+/184164 Run-TryBot: Russ Cox TryBot-Result: Gobot Gobot Reviewed-by: Cherry Zhang --- src/runtime/cpuprof.go | 27 +++++++++++++++------------ src/runtime/proc.go | 9 +-------- 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/src/runtime/cpuprof.go b/src/runtime/cpuprof.go index 81038f5c48..9bfdfe7c74 100644 --- a/src/runtime/cpuprof.go +++ b/src/runtime/cpuprof.go @@ -36,9 +36,10 @@ type cpuProfile struct { // 300 words per second. // Hopefully a normal Go thread will get the profiling // signal at least once every few seconds. - extra [1000]uintptr - numExtra int - lostExtra uint64 // count of frames lost because extra is full + extra [1000]uintptr + numExtra int + lostExtra uint64 // count of frames lost because extra is full + lostAtomic uint64 // count of frames lost because of being in atomic64 on mips/arm; updated racily } var cpuprof cpuProfile @@ -94,7 +95,7 @@ func (p *cpuProfile) add(gp *g, stk []uintptr) { } if prof.hz != 0 { // implies cpuprof.log != nil - if p.numExtra > 0 || p.lostExtra > 0 { + if p.numExtra > 0 || p.lostExtra > 0 || p.lostAtomic > 0 { p.addExtra() } hdr := [1]uint64{1} @@ -159,18 +160,20 @@ func (p *cpuProfile) addExtra() { funcPC(_LostExternalCode) + sys.PCQuantum, funcPC(_ExternalCode) + sys.PCQuantum, } - cpuprof.log.write(nil, 0, hdr[:], lostStk[:]) + p.log.write(nil, 0, hdr[:], lostStk[:]) p.lostExtra = 0 } -} -func (p *cpuProfile) addLostAtomic64(count uint64) { - hdr := [1]uint64{count} - lostStk := [2]uintptr{ - funcPC(_LostSIGPROFDuringAtomic64) + sys.PCQuantum, - funcPC(_System) + sys.PCQuantum, + if p.lostAtomic > 0 { + hdr := [1]uint64{p.lostAtomic} + lostStk := [2]uintptr{ + funcPC(_LostSIGPROFDuringAtomic64) + sys.PCQuantum, + funcPC(_System) + sys.PCQuantum, + } + p.log.write(nil, 0, hdr[:], lostStk[:]) + p.lostAtomic = 0 } - cpuprof.log.write(nil, 0, hdr[:], lostStk[:]) + } // CPUProfile panics. diff --git a/src/runtime/proc.go b/src/runtime/proc.go index b5cf9d442d..93d329d15e 100644 --- a/src/runtime/proc.go +++ b/src/runtime/proc.go @@ -3634,9 +3634,6 @@ func _GC() { _GC() } func _LostSIGPROFDuringAtomic64() { _LostSIGPROFDuringAtomic64() } func _VDSO() { _VDSO() } -// Counts SIGPROFs received while in atomic64 critical section, on mips{,le} -var lostAtomic64Count uint64 - // Called if we receive a SIGPROF signal. // Called by the signal handler, may run during STW. //go:nowritebarrierrec @@ -3654,7 +3651,7 @@ func sigprof(pc, sp, lr uintptr, gp *g, mp *m) { if GOARCH == "mips" || GOARCH == "mipsle" || GOARCH == "arm" { if f := findfunc(pc); f.valid() { if hasPrefix(funcname(f), "runtime/internal/atomic") { - lostAtomic64Count++ + cpuprof.lostAtomic++ return } } @@ -3794,10 +3791,6 @@ func sigprof(pc, sp, lr uintptr, gp *g, mp *m) { } if prof.hz != 0 { - if (GOARCH == "mips" || GOARCH == "mipsle" || GOARCH == "arm") && lostAtomic64Count > 0 { - cpuprof.addLostAtomic64(lostAtomic64Count) - lostAtomic64Count = 0 - } cpuprof.add(gp, stk[:n]) } getg().m.mallocing-- From 2e0cd2aef5924e48e1ceb74e3d52e76c56dd34cc Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Thu, 27 Jun 2019 20:30:28 -0400 Subject: [PATCH 069/255] net: deflake TestVariousDeadlines TestVariousDeadlines starts a client and server. The client dials the server, sets a timeout on the connection, reads from it, gets a timeout error, closes the connection. The server writes an infinite stream of a's to each connection it accepts. The test was trying to run these in lockstep: run a client dial+read+timeout+close, wait for server to accept+write+error out on write to closed connection, repeat. On FreeBSD 11.2 and less frequently on macOS we see the test timeout waiting for the server to do its half of the lockstep dance. I believe the problem is that the client can do its step of the dance with such a short timeout that the read, timeout, and close happens before the server ever returns from the accept(2) system call. For the purposes of testing the client-side read timeout, this is fine. But I suspect that under some circumstances, the "TCP-accepted" connection does not translate into a "socket-layer-accepted" connection that triggers a return from accept(2). That is, the Go server never sees the connection at all. And the test sits there waiting for it to acknowledge being done with a connection it never started with. Fix the problem by not trying to lockstep with the server. This definitely fixes the flake, since the specific line that was calling t.Fatal is now deleted. This exposes a different flake, seen on a trybot run for an early version of this CL, in which the client's io.Copy does not stop within the time allotted. The problem now is that there is no guarantee that a read beyond the deadline with available data returns an error instead of the available data, yet the test assumes this guarantee, and in fact the opposite is usually true - we don't bother checking the deadline unless the read needs to block. That is, deadlines don't cut off a flood of available data, yet this test thinks they do. This CL therefore also changes the server not to send an infinite flood of data - don't send any data at all - so that the read deadline is guaranteed to be exercised. Fixes #19519. Change-Id: I58057c3ed94ac2aebab140ea597f317abae6e65e Reviewed-on: https://go-review.googlesource.com/c/go/+/184137 Run-TryBot: Russ Cox TryBot-Result: Gobot Gobot Reviewed-by: Bryan C. Mills --- src/net/timeout_test.go | 47 ++++++++++++----------------------------- 1 file changed, 14 insertions(+), 33 deletions(-) diff --git a/src/net/timeout_test.go b/src/net/timeout_test.go index 4b9fe7eba9..93e46025a2 100644 --- a/src/net/timeout_test.go +++ b/src/net/timeout_test.go @@ -826,24 +826,14 @@ func testVariousDeadlines(t *testing.T) { d time.Duration } - ch := make(chan error, 1) - pasvch := make(chan result) handler := func(ls *localServer, ln Listener) { for { c, err := ln.Accept() if err != nil { - ch <- err - return + break } - // The server, with no timeouts of its own, - // sending bytes to clients as fast as it can. - go func() { - t0 := time.Now() - n, err := io.Copy(c, neverEnding('a')) - dt := time.Since(t0) - c.Close() - pasvch <- result{n, err, dt} - }() + c.Read(make([]byte, 1)) // wait for client to close connection + c.Close() } } ls, err := newLocalServer("tcp") @@ -884,18 +874,18 @@ func testVariousDeadlines(t *testing.T) { } } for run := 0; run < numRuns; run++ { - name := fmt.Sprintf("%v run %d/%d", timeout, run+1, numRuns) + name := fmt.Sprintf("%v %d/%d", timeout, run, numRuns) t.Log(name) + tooSlow := time.NewTimer(5 * time.Second) + defer tooSlow.Stop() + c, err := Dial(ls.Listener.Addr().Network(), ls.Listener.Addr().String()) if err != nil { t.Fatal(err) } - tooLong := 5 * time.Second - max := time.NewTimer(tooLong) - defer max.Stop() - actvch := make(chan result) + ch := make(chan result, 1) go func() { t0 := time.Now() if err := c.SetDeadline(t0.Add(timeout)); err != nil { @@ -904,27 +894,18 @@ func testVariousDeadlines(t *testing.T) { n, err := io.Copy(ioutil.Discard, c) dt := time.Since(t0) c.Close() - actvch <- result{n, err, dt} + ch <- result{n, err, dt} }() select { - case res := <-actvch: + case res := <-ch: if nerr, ok := res.err.(Error); ok && nerr.Timeout() { - t.Logf("for %v, good client timeout after %v, reading %d bytes", name, res.d, res.n) + t.Logf("%v: good timeout after %v; %d bytes", name, res.d, res.n) } else { - t.Fatalf("for %v, client Copy = %d, %v; want timeout", name, res.n, res.err) + t.Fatalf("%v: Copy = %d, %v; want timeout", name, res.n, res.err) } - case <-max.C: - t.Fatalf("for %v, timeout (%v) waiting for client to timeout (%v) reading", name, tooLong, timeout) - } - - select { - case res := <-pasvch: - t.Logf("for %v, server in %v wrote %d: %v", name, res.d, res.n, res.err) - case err := <-ch: - t.Fatalf("for %v, Accept = %v", name, err) - case <-max.C: - t.Fatalf("for %v, timeout waiting for server to finish writing", name) + case <-tooSlow.C: + t.Fatalf("%v: client stuck in Dial+Copy", name) } } } From 623d653db7cd2287305347196f7f4742b6b1fb38 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Thu, 27 Jun 2019 20:54:14 -0400 Subject: [PATCH 070/255] crypto/tls: deflake localPipe in tests The localPipe implementation assumes that every successful net.Dial results in exactly one successful listener.Accept. I don't believe this is guaranteed by essentially any operating system. For this test, we're seeing flakes on dragonfly (#29583). But see also #19519, flakes due to the same assumption on FreeBSD and macOS in package net's own tests. This CL rewrites localPipe to try a few times to get a matching pair of connections on the dial and accept side. Fixes #29583. Change-Id: Idb045b18c404eae457f091df20456c5ae879a291 Reviewed-on: https://go-review.googlesource.com/c/go/+/184157 Run-TryBot: Russ Cox TryBot-Result: Gobot Gobot Reviewed-by: Bryan C. Mills --- src/crypto/tls/handshake_test.go | 75 ++++++++++++++++++++++++-------- 1 file changed, 57 insertions(+), 18 deletions(-) diff --git a/src/crypto/tls/handshake_test.go b/src/crypto/tls/handshake_test.go index 35c1fe8bf5..cfd92908a9 100644 --- a/src/crypto/tls/handshake_test.go +++ b/src/crypto/tls/handshake_test.go @@ -222,28 +222,65 @@ func tempFile(contents string) string { // localListener is set up by TestMain and used by localPipe to create Conn // pairs like net.Pipe, but connected by an actual buffered TCP connection. var localListener struct { - sync.Mutex - net.Listener + mu sync.Mutex + addr net.Addr + ch chan net.Conn +} + +const localFlakes = 0 // change to 1 or 2 to exercise localServer/localPipe handling of mismatches + +func localServer(l net.Listener) { + for n := 0; ; n++ { + c, err := l.Accept() + if err != nil { + return + } + if localFlakes == 1 && n%2 == 0 { + c.Close() + continue + } + localListener.ch <- c + } } func localPipe(t testing.TB) (net.Conn, net.Conn) { - localListener.Lock() - defer localListener.Unlock() - c := make(chan net.Conn) - go func() { - conn, err := localListener.Accept() + localListener.mu.Lock() + defer localListener.mu.Unlock() + + addr := localListener.addr + +Dialing: + // We expect a rare mismatch, but probably not 5 in a row. + for i := 0; i < 5; i++ { + tooSlow := time.NewTimer(1 * time.Second) + defer tooSlow.Stop() + c1, err := net.Dial(addr.Network(), addr.String()) if err != nil { - t.Errorf("Failed to accept local connection: %v", err) + t.Fatalf("localPipe: %v", err) + } + if localFlakes == 2 && i == 0 { + c1.Close() + continue + } + for { + select { + case <-tooSlow.C: + t.Logf("localPipe: timeout waiting for %v", c1.LocalAddr()) + c1.Close() + continue Dialing + + case c2 := <-localListener.ch: + if c2.RemoteAddr().String() == c1.LocalAddr().String() { + return c1, c2 + } + t.Logf("localPipe: unexpected connection: %v != %v", c2.RemoteAddr(), c1.LocalAddr()) + c2.Close() + } } - c <- conn - }() - addr := localListener.Addr() - c1, err := net.Dial(addr.Network(), addr.String()) - if err != nil { - t.Fatalf("Failed to dial local connection: %v", err) } - c2 := <-c - return c1, c2 + + t.Fatalf("localPipe: failed to connect") + panic("unreachable") } // zeroSource is an io.Reader that returns an unlimited number of zero bytes. @@ -293,8 +330,10 @@ func runMain(m *testing.M) int { fmt.Fprintf(os.Stderr, "Failed to open local listener: %v", err) os.Exit(1) } - localListener.Listener = l - defer localListener.Close() + localListener.ch = make(chan net.Conn) + localListener.addr = l.Addr() + defer l.Close() + go localServer(l) if err := checkOpenSSLVersion(); err != nil { fmt.Fprintf(os.Stderr, "Error: %v", err) From c485e8b55918b3b37e6eab47036ab6f16fec226d Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Fri, 28 Jun 2019 11:20:15 -0700 Subject: [PATCH 071/255] runtime: use a pipe to wake up signal_recv on Darwin The implementation of semaphores, and therefore notes, used on Darwin is not async-signal-safe. The runtime has one case where a note needs to be woken up from a signal handler: the call to notewakeup in sigsend. That notewakeup call is only called on a single note, and it doesn't need the full functionality of notes: nothing ever does a timed wait on it. So change that one note to use a different implementation on Darwin, based on a pipe. This lets the wakeup code use the write call, which is async-signal-safe. Fixes #31264 Change-Id: If705072d7a961dd908ea9d639c8d12b222c64806 Reviewed-on: https://go-review.googlesource.com/c/go/+/184169 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Russ Cox --- src/runtime/defs_darwin.go | 4 +++ src/runtime/defs_darwin_386.go | 4 +++ src/runtime/defs_darwin_amd64.go | 4 +++ src/runtime/defs_darwin_arm.go | 4 +++ src/runtime/defs_darwin_arm64.go | 4 +++ src/runtime/os_darwin.go | 46 ++++++++++++++++++++++++++++++++ src/runtime/sigqueue.go | 12 +++++++++ src/runtime/sigqueue_note.go | 25 +++++++++++++++++ src/runtime/sys_darwin.go | 14 ++++++++++ src/runtime/sys_darwin_386.s | 15 +++++++++++ src/runtime/sys_darwin_amd64.s | 11 ++++++++ src/runtime/sys_darwin_arm.s | 8 ++++++ src/runtime/sys_darwin_arm64.s | 8 ++++++ 13 files changed, 159 insertions(+) create mode 100644 src/runtime/sigqueue_note.go diff --git a/src/runtime/defs_darwin.go b/src/runtime/defs_darwin.go index 61ae7a4186..0cd133f6e0 100644 --- a/src/runtime/defs_darwin.go +++ b/src/runtime/defs_darwin.go @@ -116,7 +116,11 @@ const ( PTHREAD_CREATE_DETACHED = C.PTHREAD_CREATE_DETACHED F_SETFD = C.F_SETFD + F_GETFL = C.F_GETFL + F_SETFL = C.F_SETFL FD_CLOEXEC = C.FD_CLOEXEC + + O_NONBLOCK = C.O_NONBLOCK ) type StackT C.struct_sigaltstack diff --git a/src/runtime/defs_darwin_386.go b/src/runtime/defs_darwin_386.go index 43dc08a078..83928e7841 100644 --- a/src/runtime/defs_darwin_386.go +++ b/src/runtime/defs_darwin_386.go @@ -94,7 +94,11 @@ const ( _PTHREAD_CREATE_DETACHED = 0x2 _F_SETFD = 0x2 + _F_GETFL = 0x3 + _F_SETFL = 0x4 _FD_CLOEXEC = 0x1 + + _O_NONBLOCK = 4 ) type stackt struct { diff --git a/src/runtime/defs_darwin_amd64.go b/src/runtime/defs_darwin_amd64.go index 59b0effa13..45c34a8fc0 100644 --- a/src/runtime/defs_darwin_amd64.go +++ b/src/runtime/defs_darwin_amd64.go @@ -94,7 +94,11 @@ const ( _PTHREAD_CREATE_DETACHED = 0x2 _F_SETFD = 0x2 + _F_GETFL = 0x3 + _F_SETFL = 0x4 _FD_CLOEXEC = 0x1 + + _O_NONBLOCK = 4 ) type stackt struct { diff --git a/src/runtime/defs_darwin_arm.go b/src/runtime/defs_darwin_arm.go index 243f52a5df..5e2af978a7 100644 --- a/src/runtime/defs_darwin_arm.go +++ b/src/runtime/defs_darwin_arm.go @@ -96,7 +96,11 @@ const ( _PTHREAD_CREATE_DETACHED = 0x2 _F_SETFD = 0x2 + _F_GETFL = 0x3 + _F_SETFL = 0x4 _FD_CLOEXEC = 0x1 + + _O_NONBLOCK = 4 ) type stackt struct { diff --git a/src/runtime/defs_darwin_arm64.go b/src/runtime/defs_darwin_arm64.go index 7056074f46..f673eb7b24 100644 --- a/src/runtime/defs_darwin_arm64.go +++ b/src/runtime/defs_darwin_arm64.go @@ -94,7 +94,11 @@ const ( _PTHREAD_CREATE_DETACHED = 0x2 _F_SETFD = 0x2 + _F_GETFL = 0x3 + _F_SETFL = 0x4 _FD_CLOEXEC = 0x1 + + _O_NONBLOCK = 4 ) type stackt struct { diff --git a/src/runtime/os_darwin.go b/src/runtime/os_darwin.go index 819aaaca70..1614b66c8a 100644 --- a/src/runtime/os_darwin.go +++ b/src/runtime/os_darwin.go @@ -75,6 +75,52 @@ func semawakeup(mp *m) { pthread_mutex_unlock(&mp.mutex) } +// The read and write file descriptors used by the sigNote functions. +var sigNoteRead, sigNoteWrite int32 + +// sigNoteSetup initializes an async-signal-safe note. +// +// The current implementation of notes on Darwin is not async-signal-safe, +// because the functions pthread_mutex_lock, pthread_cond_signal, and +// pthread_mutex_unlock, called by semawakeup, are not async-signal-safe. +// There is only one case where we need to wake up a note from a signal +// handler: the sigsend function. The signal handler code does not require +// all the features of notes: it does not need to do a timed wait. +// This is a separate implementation of notes, based on a pipe, that does +// not support timed waits but is async-signal-safe. +func sigNoteSetup(*note) { + if sigNoteRead != 0 || sigNoteWrite != 0 { + throw("duplicate sigNoteSetup") + } + var errno int32 + sigNoteRead, sigNoteWrite, errno = pipe() + if errno != 0 { + throw("pipe failed") + } + closeonexec(sigNoteRead) + closeonexec(sigNoteWrite) + + // Make the write end of the pipe non-blocking, so that if the pipe + // buffer is somehow full we will not block in the signal handler. + // Leave the read end of the pipe blocking so that we will block + // in sigNoteSleep. + setNonblock(sigNoteWrite) +} + +// sigNoteWakeup wakes up a thread sleeping on a note created by sigNoteSetup. +func sigNoteWakeup(*note) { + var b byte + write(uintptr(sigNoteWrite), unsafe.Pointer(&b), 1) +} + +// sigNoteSleep waits for a note created by sigNoteSetup to be woken. +func sigNoteSleep(*note) { + entersyscallblock() + var b byte + read(sigNoteRead, unsafe.Pointer(&b), 1) + exitsyscall() +} + // BSD interface for threading. func osinit() { // pthread_create delayed until end of goenvs so that we diff --git a/src/runtime/sigqueue.go b/src/runtime/sigqueue.go index a425433b20..b2ebb2b457 100644 --- a/src/runtime/sigqueue.go +++ b/src/runtime/sigqueue.go @@ -105,6 +105,10 @@ Send: break Send case sigReceiving: if atomic.Cas(&sig.state, sigReceiving, sigIdle) { + if GOOS == "darwin" { + sigNoteWakeup(&sig.note) + break Send + } notewakeup(&sig.note) break Send } @@ -136,6 +140,10 @@ func signal_recv() uint32 { throw("signal_recv: inconsistent state") case sigIdle: if atomic.Cas(&sig.state, sigIdle, sigReceiving) { + if GOOS == "darwin" { + sigNoteSleep(&sig.note) + break Receive + } notetsleepg(&sig.note, -1) noteclear(&sig.note) break Receive @@ -188,6 +196,10 @@ func signal_enable(s uint32) { // to use for initialization. It does not pass // signal information in m. sig.inuse = true // enable reception of signals; cannot disable + if GOOS == "darwin" { + sigNoteSetup(&sig.note) + return + } noteclear(&sig.note) return } diff --git a/src/runtime/sigqueue_note.go b/src/runtime/sigqueue_note.go new file mode 100644 index 0000000000..16aeeb2ef0 --- /dev/null +++ b/src/runtime/sigqueue_note.go @@ -0,0 +1,25 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// The current implementation of notes on Darwin is not async-signal-safe, +// so on Darwin the sigqueue code uses different functions to wake up the +// signal_recv thread. This file holds the non-Darwin implementations of +// those functions. These functions will never be called. + +// +build !darwin +// +build !plan9 + +package runtime + +func sigNoteSetup(*note) { + throw("sigNoteSetup") +} + +func sigNoteSleep(*note) { + throw("sigNoteSleep") +} + +func sigNoteWakeup(*note) { + throw("sigNoteWakeup") +} diff --git a/src/runtime/sys_darwin.go b/src/runtime/sys_darwin.go index b50d441d92..376f76dbc5 100644 --- a/src/runtime/sys_darwin.go +++ b/src/runtime/sys_darwin.go @@ -197,6 +197,13 @@ func read(fd int32, p unsafe.Pointer, n int32) int32 { } func read_trampoline() +func pipe() (r, w int32, errno int32) { + var p [2]int32 + errno = libcCall(unsafe.Pointer(funcPC(pipe_trampoline)), noescape(unsafe.Pointer(&p))) + return p[0], p[1], errno +} +func pipe_trampoline() + //go:nosplit //go:cgo_unsafe_args func closefd(fd int32) int32 { @@ -395,6 +402,12 @@ func closeonexec(fd int32) { fcntl(fd, _F_SETFD, _FD_CLOEXEC) } +//go:nosplit +func setNonblock(fd int32) { + flags := fcntl(fd, _F_GETFL, 0) + fcntl(fd, _F_SETFL, flags|_O_NONBLOCK) +} + // Tell the linker that the libc_* functions are to be found // in a system library, with the libc_ prefix missing. @@ -409,6 +422,7 @@ func closeonexec(fd int32) { //go:cgo_import_dynamic libc_close close "/usr/lib/libSystem.B.dylib" //go:cgo_import_dynamic libc_read read "/usr/lib/libSystem.B.dylib" //go:cgo_import_dynamic libc_write write "/usr/lib/libSystem.B.dylib" +//go:cgo_import_dynamic libc_pipe pipe "/usr/lib/libSystem.B.dylib" //go:cgo_import_dynamic libc_mmap mmap "/usr/lib/libSystem.B.dylib" //go:cgo_import_dynamic libc_munmap munmap "/usr/lib/libSystem.B.dylib" diff --git a/src/runtime/sys_darwin_386.s b/src/runtime/sys_darwin_386.s index 9a0b3607c2..ac5f4e4d63 100644 --- a/src/runtime/sys_darwin_386.s +++ b/src/runtime/sys_darwin_386.s @@ -84,6 +84,21 @@ TEXT runtime·write_trampoline(SB),NOSPLIT,$0 POPL BP RET +TEXT runtime·pipe_trampoline(SB),NOSPLIT,$0 + PUSHL BP + MOVL SP, BP + SUBL $8, SP + MOVL 16(SP), CX // arg 1 pipefd + MOVL AX, 0(SP) + CALL libc_pipe(SB) + TESTL AX, AX + JEQ 3(PC) + CALL libc_error(SB) // return negative errno value + NEGL AX + MOVL BP, SP + POPL BP + RET + TEXT runtime·mmap_trampoline(SB),NOSPLIT,$0 PUSHL BP MOVL SP, BP diff --git a/src/runtime/sys_darwin_amd64.s b/src/runtime/sys_darwin_amd64.s index bbe6bc14bf..87c8db8c82 100644 --- a/src/runtime/sys_darwin_amd64.s +++ b/src/runtime/sys_darwin_amd64.s @@ -59,6 +59,17 @@ TEXT runtime·write_trampoline(SB),NOSPLIT,$0 POPQ BP RET +TEXT runtime·pipe_trampoline(SB),NOSPLIT,$0 + PUSHQ BP + MOVQ SP, BP + CALL libc_pipe(SB) // pointer already in DI + TESTL AX, AX + JEQ 3(PC) + CALL libc_error(SB) // return negative errno value + NEGL AX + POPQ BP + RET + TEXT runtime·setitimer_trampoline(SB),NOSPLIT,$0 PUSHQ BP MOVQ SP, BP diff --git a/src/runtime/sys_darwin_arm.s b/src/runtime/sys_darwin_arm.s index b1c22b3242..996f8028a3 100644 --- a/src/runtime/sys_darwin_arm.s +++ b/src/runtime/sys_darwin_arm.s @@ -41,6 +41,14 @@ TEXT runtime·read_trampoline(SB),NOSPLIT,$0 BL libc_read(SB) RET +TEXT runtime·pipe_trampoline(SB),NOSPLIT,$0 + BL libc_pipe(SB) // pointer already in R0 + CMP $0, R0 + BEQ 3(PC) + BL libc_error(SB) // return negative errno value + RSB $0, R0, R0 + RET + TEXT runtime·exit_trampoline(SB),NOSPLIT|NOFRAME,$0 MOVW 0(R0), R0 // arg 0 code BL libc_exit(SB) diff --git a/src/runtime/sys_darwin_arm64.s b/src/runtime/sys_darwin_arm64.s index af03af37bb..ac3ca74f63 100644 --- a/src/runtime/sys_darwin_arm64.s +++ b/src/runtime/sys_darwin_arm64.s @@ -44,6 +44,14 @@ TEXT runtime·read_trampoline(SB),NOSPLIT,$0 BL libc_read(SB) RET +TEXT runtime·pipe_trampoline(SB),NOSPLIT,$0 + BL libc_pipe(SB) // pointer already in R0 + CMP $0, R0 + BEQ 3(PC) + BL libc_error(SB) // return negative errno value + NEG R0, R0 + RET + TEXT runtime·exit_trampoline(SB),NOSPLIT|NOFRAME,$0 MOVW 0(R0), R0 BL libc_exit(SB) From bc593eac2dc63d979a575eccb16c7369a5ff81e0 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Sat, 29 Jun 2019 09:26:19 -0400 Subject: [PATCH 072/255] sync: document implementation of Once.Do It's not correct to use atomic.CompareAndSwap to implement Once.Do, and we don't, but why we don't is a question that has come up twice on golang-dev in the past few months. Add a comment to help others with the same question. Change-Id: Ia89ec9715cc5442c6e7f13e57a49c6cfe664d32c Reviewed-on: https://go-review.googlesource.com/c/go/+/184261 Run-TryBot: Russ Cox TryBot-Result: Gobot Gobot Reviewed-by: Rob Pike Reviewed-by: Ingo Oeser --- src/sync/once.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/sync/once.go b/src/sync/once.go index 84761970dd..ca04408224 100644 --- a/src/sync/once.go +++ b/src/sync/once.go @@ -38,6 +38,20 @@ type Once struct { // without calling f. // func (o *Once) Do(f func()) { + // Note: Here is an incorrect implementation of Do: + // + // if atomic.CompareAndSwapUint32(&o.done, 0, 1) { + // f() + // } + // + // Do guarantees that when it returns, f has finished. + // This implementation would not implement that guarantee: + // given two simultaneous calls, the winner of the cas would + // call f, and the second would return immediately, without + // waiting for the first's call to f to complete. + // This is why the slow path falls back to a mutex, and why + // the atomic.StoreUint32 must be delayed until after f returns. + if atomic.LoadUint32(&o.done) == 0 { // Outlined slow-path to allow inlining of the fast-path. o.doSlow(f) From d410642f498cb96734c55a4c0d91256671a03bae Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Sun, 30 Jun 2019 16:19:58 -0700 Subject: [PATCH 073/255] runtime: use correct register in darwin/386 pipe_trampoline Updates #31264 Change-Id: I745744dd3fdaa432d70e8dc9336547017bac89ee Reviewed-on: https://go-review.googlesource.com/c/go/+/184377 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Elias Naur --- src/runtime/sys_darwin_386.s | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/runtime/sys_darwin_386.s b/src/runtime/sys_darwin_386.s index ac5f4e4d63..e653c54f61 100644 --- a/src/runtime/sys_darwin_386.s +++ b/src/runtime/sys_darwin_386.s @@ -88,7 +88,7 @@ TEXT runtime·pipe_trampoline(SB),NOSPLIT,$0 PUSHL BP MOVL SP, BP SUBL $8, SP - MOVL 16(SP), CX // arg 1 pipefd + MOVL 16(SP), AX // arg 1 pipefd MOVL AX, 0(SP) CALL libc_pipe(SB) TESTL AX, AX From fbde753a58e286c405a04388816ed044486151bb Mon Sep 17 00:00:00 2001 From: Keith Randall Date: Tue, 25 Jun 2019 22:24:34 -0400 Subject: [PATCH 074/255] cmd/compile: make duplicate anonymous interface output deterministic Taking over CL 162240, the original CL hasn't been making progress. I just took the parts that fix the immediate issue. I left the signatslice changes out, I don't think they are necessary. Fixes #30202 Change-Id: I5b347605f0841dd925d5a73150b8bf269fa82464 Reviewed-on: https://go-review.googlesource.com/c/go/+/183852 Run-TryBot: Keith Randall Reviewed-by: David Chase TryBot-Result: Gobot Gobot --- src/cmd/compile/internal/gc/reflect.go | 12 +++++++++++- .../internal/gc/reproduciblebuilds_test.go | 5 ++++- .../gc/testdata/reproducible/issue30202.go | 17 +++++++++++++++++ 3 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 src/cmd/compile/internal/gc/testdata/reproducible/issue30202.go diff --git a/src/cmd/compile/internal/gc/reflect.go b/src/cmd/compile/internal/gc/reflect.go index 9b26ba16cb..c2d9ba2fe0 100644 --- a/src/cmd/compile/internal/gc/reflect.go +++ b/src/cmd/compile/internal/gc/reflect.go @@ -1659,7 +1659,17 @@ func (a typesByString) Less(i, j int) bool { // they refer to byte or uint8, such as **byte vs **uint8, // the types' ShortStrings can be identical. // To preserve deterministic sort ordering, sort these by String(). - return a[i].regular < a[j].regular + if a[i].regular != a[j].regular { + return a[i].regular < a[j].regular + } + // Identical anonymous interfaces defined in different locations + // will be equal for the above checks, but different in DWARF output. + // Sort by source position to ensure deterministic order. + // See issues 27013 and 30202. + if a[i].t.Etype == types.TINTER && a[i].t.Methods().Len() > 0 { + return a[i].t.Methods().Index(0).Pos.Before(a[j].t.Methods().Index(0).Pos) + } + return false } func (a typesByString) Swap(i, j int) { a[i], a[j] = a[j], a[i] } diff --git a/src/cmd/compile/internal/gc/reproduciblebuilds_test.go b/src/cmd/compile/internal/gc/reproduciblebuilds_test.go index 9173f80ee3..59d1edb9e8 100644 --- a/src/cmd/compile/internal/gc/reproduciblebuilds_test.go +++ b/src/cmd/compile/internal/gc/reproduciblebuilds_test.go @@ -18,6 +18,7 @@ func TestReproducibleBuilds(t *testing.T) { tests := []string{ "issue20272.go", "issue27013.go", + "issue30202.go", } testenv.MustHaveGoBuild(t) @@ -38,7 +39,9 @@ func TestReproducibleBuilds(t *testing.T) { defer os.Remove(tmp.Name()) defer tmp.Close() for i := 0; i < iters; i++ { - out, err := exec.Command(testenv.GoToolPath(t), "tool", "compile", "-o", tmp.Name(), filepath.Join("testdata", "reproducible", test)).CombinedOutput() + // Note: use -c 2 to expose any nondeterminism which is the result + // of the runtime scheduler. + out, err := exec.Command(testenv.GoToolPath(t), "tool", "compile", "-c", "2", "-o", tmp.Name(), filepath.Join("testdata", "reproducible", test)).CombinedOutput() if err != nil { t.Fatalf("failed to compile: %v\n%s", err, out) } diff --git a/src/cmd/compile/internal/gc/testdata/reproducible/issue30202.go b/src/cmd/compile/internal/gc/testdata/reproducible/issue30202.go new file mode 100644 index 0000000000..7b5de2cc8b --- /dev/null +++ b/src/cmd/compile/internal/gc/testdata/reproducible/issue30202.go @@ -0,0 +1,17 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package p + +func A(x interface { + X() int +}) int { + return x.X() +} + +func B(x interface { + X() int +}) int { + return x.X() +} From e62c3d35033a42dac3ea38a5f86cf0b8f6f74a42 Mon Sep 17 00:00:00 2001 From: Than McIntosh Date: Tue, 25 Jun 2019 20:24:15 -0400 Subject: [PATCH 075/255] test: add testcase for gccgo compile failure Test case that caused a compiler crash in gofrontend, related to exporting inlinable function bodies. Updates #32778 Change-Id: Iacf1753825d5359da43e5e281189876d4c3dd3c9 Reviewed-on: https://go-review.googlesource.com/c/go/+/183851 Reviewed-by: Ian Lance Taylor Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot --- test/fixedbugs/issue32778.dir/a.go | 18 ++++++++++++++++++ test/fixedbugs/issue32778.dir/b.go | 11 +++++++++++ test/fixedbugs/issue32778.go | 11 +++++++++++ 3 files changed, 40 insertions(+) create mode 100644 test/fixedbugs/issue32778.dir/a.go create mode 100644 test/fixedbugs/issue32778.dir/b.go create mode 100644 test/fixedbugs/issue32778.go diff --git a/test/fixedbugs/issue32778.dir/a.go b/test/fixedbugs/issue32778.dir/a.go new file mode 100644 index 0000000000..1e6ac01233 --- /dev/null +++ b/test/fixedbugs/issue32778.dir/a.go @@ -0,0 +1,18 @@ +// Copyright 2019 The Go Authors. All rights reserved. Use of this +// source code is governed by a BSD-style license that can be found in +// the LICENSE file. + +package a + +import "strings" + +type Name string + +type FullName string + +func (n FullName) Name() Name { + if i := strings.LastIndexByte(string(n), '.'); i >= 0 { + return Name(n[i+1:]) + } + return Name(n) +} diff --git a/test/fixedbugs/issue32778.dir/b.go b/test/fixedbugs/issue32778.dir/b.go new file mode 100644 index 0000000000..a0ee398d26 --- /dev/null +++ b/test/fixedbugs/issue32778.dir/b.go @@ -0,0 +1,11 @@ +// Copyright 2019 The Go Authors. All rights reserved. Use of this +// source code is governed by a BSD-style license that can be found in +// the LICENSE file. + +package b + +import "./a" + +func Expo(fn a.FullName) a.Name { + return fn.Name() +} diff --git a/test/fixedbugs/issue32778.go b/test/fixedbugs/issue32778.go new file mode 100644 index 0000000000..83456d4a99 --- /dev/null +++ b/test/fixedbugs/issue32778.go @@ -0,0 +1,11 @@ +// compiledir + +// Copyright 2019 The Go Authors. All rights reserved. Use of this +// source code is governed by a BSD-style license that can be found in +// the LICENSE file. + +// This directory contains a pair of packages that triggers a compiler +// crash in gccgo (problem with tracking indirectly referenced +// packages during exporting). See issue 32778 for details. + +package ignored From 54c6b814ac745346a2c7aa077508521779d4ae43 Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Tue, 2 Jul 2019 15:41:04 -0400 Subject: [PATCH 076/255] cmd/go: fix TestScript/mod_sumdb_golang to avoid assumptions about @v/list I accidentally fetched an invalid version of rsc.io/quote from proxy.golang.org, which the proxy then cached and now includes in https://proxy.golang.org/rsc.io/quote/@v/list. That causes 'go get rsc.io/quote` to resolve to a different version depending on whether the proxy is used. Adjust the test to fetch an explicit version instead, since the choice of 'latest' is mostly irrelevant to the checksum database logic that the test is intended to verify. Updates #32805 Fixes #32900 Change-Id: I075b1f62e8c71545d0fb2dd4bd77ba525fc2a36d Reviewed-on: https://go-review.googlesource.com/c/go/+/184719 Run-TryBot: Bryan C. Mills Reviewed-by: Hyang-Ah Hana Kim TryBot-Result: Gobot Gobot --- .../go/testdata/script/mod_sumdb_golang.txt | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/cmd/go/testdata/script/mod_sumdb_golang.txt b/src/cmd/go/testdata/script/mod_sumdb_golang.txt index 964501f2ee..40a07fc7e9 100644 --- a/src/cmd/go/testdata/script/mod_sumdb_golang.txt +++ b/src/cmd/go/testdata/script/mod_sumdb_golang.txt @@ -14,31 +14,39 @@ stdout '^sum.golang.org$' [!exec:git] skip env GOSUMDB=sum.golang.org env GOPROXY=direct -go get -d rsc.io/quote +go get -d rsc.io/quote@v1.5.2 +cp go.sum saved.sum # download from proxy.golang.org with go.sum entry already go clean -modcache env GOSUMDB= env GOPROXY= -go get -x -d rsc.io/quote +go get -x -d rsc.io/quote@v1.5.2 ! stderr github stderr proxy.golang.org/rsc.io/quote ! stderr sum.golang.org/tile ! stderr sum.golang.org/lookup/rsc.io/quote +cmp go.sum saved.sum -# download again, using checksum database to validate new go.sum lines +# Download again. +# Should use the checksum database to validate new go.sum lines, +# but not need to fetch any new data from the proxy. rm go.sum -go get -x -d rsc.io/quote +go get -x -d rsc.io/quote@v1.5.2 ! stderr github -stderr proxy.golang.org/rsc.io/quote +! stderr proxy.golang.org/rsc.io/quote stderr sum.golang.org/tile stderr sum.golang.org/lookup/rsc.io/quote +cmp go.sum saved.sum # test fallback to direct env TESTGOPROXY404=1 -go get -x -d rsc.io/quote +go clean -modcache +rm go.sum +go get -x -d rsc.io/quote@v1.5.2 stderr 'proxy.golang.org.*404 testing' stderr github.com/rsc +cmp go.sum saved.sum -- go.mod -- module m From e2fdce9f16fa70af061f3b9cccdcecb4d795d484 Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Tue, 2 Jul 2019 17:07:54 +0200 Subject: [PATCH 077/255] doc/go1.13: fix typo Change-Id: I99e76c0c12050289be5b353595eb21fbabe7c01e Reviewed-on: https://go-review.googlesource.com/c/go/+/184597 Reviewed-by: Ian Lance Taylor --- doc/go1.13.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/go1.13.html b/doc/go1.13.html index 547fdd9933..42546c4622 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -341,7 +341,7 @@ go env -w GOSUMDB=off

    The go env command now accepts a -w flag to set the per-user default value - of an enviroment variable recognized by the + of an environment variable recognized by the go command, and a corresponding -u flag to unset a previously-set default. Defaults set via go env -w are stored in the From 1c1e517005786daeca0e77f2be6769e9b8e1f5a5 Mon Sep 17 00:00:00 2001 From: Cherry Zhang Date: Tue, 2 Jul 2019 15:36:59 -0400 Subject: [PATCH 078/255] test: add a test for gccgo bug #32901 This CL adds a test for gccgo bug #32901: not all the type descriptors are registered and thus deduplicated with types created by reflection. It needs a few levels of indirect imports to trigger this bug. Updates #32901. Change-Id: Idbd89bedd63fea746769f2687f3f31c9767e5ec0 Reviewed-on: https://go-review.googlesource.com/c/go/+/184718 Reviewed-by: Ian Lance Taylor --- test/fixedbugs/issue32901.dir/a.go | 15 +++++++++++++++ test/fixedbugs/issue32901.dir/b.go | 15 +++++++++++++++ test/fixedbugs/issue32901.dir/c.go | 17 +++++++++++++++++ test/fixedbugs/issue32901.dir/main.go | 18 ++++++++++++++++++ test/fixedbugs/issue32901.go | 9 +++++++++ 5 files changed, 74 insertions(+) create mode 100644 test/fixedbugs/issue32901.dir/a.go create mode 100644 test/fixedbugs/issue32901.dir/b.go create mode 100644 test/fixedbugs/issue32901.dir/c.go create mode 100644 test/fixedbugs/issue32901.dir/main.go create mode 100644 test/fixedbugs/issue32901.go diff --git a/test/fixedbugs/issue32901.dir/a.go b/test/fixedbugs/issue32901.dir/a.go new file mode 100644 index 0000000000..54ed7713f6 --- /dev/null +++ b/test/fixedbugs/issue32901.dir/a.go @@ -0,0 +1,15 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package a + +type T struct { x int } + +func F() interface{} { + return [2]T{} +} + +func P() interface{} { + return &[2]T{} +} diff --git a/test/fixedbugs/issue32901.dir/b.go b/test/fixedbugs/issue32901.dir/b.go new file mode 100644 index 0000000000..932d7b0afa --- /dev/null +++ b/test/fixedbugs/issue32901.dir/b.go @@ -0,0 +1,15 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package b + +import "./a" + +func F() interface{} { + return a.F() +} + +func P() interface{} { + return a.P() +} diff --git a/test/fixedbugs/issue32901.dir/c.go b/test/fixedbugs/issue32901.dir/c.go new file mode 100644 index 0000000000..5f31c7ff02 --- /dev/null +++ b/test/fixedbugs/issue32901.dir/c.go @@ -0,0 +1,17 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package c + +import "./b" + +func F() interface{} { + go func(){}() // make it non-inlineable + return b.F() +} + +func P() interface{} { + go func(){}() // make it non-inlineable + return b.P() +} diff --git a/test/fixedbugs/issue32901.dir/main.go b/test/fixedbugs/issue32901.dir/main.go new file mode 100644 index 0000000000..28bb8cde28 --- /dev/null +++ b/test/fixedbugs/issue32901.dir/main.go @@ -0,0 +1,18 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package main + +import "./c" +import "reflect" + +func main() { + x := c.F() + p := c.P() + t := reflect.PtrTo(reflect.TypeOf(x)) + tp := reflect.TypeOf(p) + if t != tp { + panic("FAIL") + } +} diff --git a/test/fixedbugs/issue32901.go b/test/fixedbugs/issue32901.go new file mode 100644 index 0000000000..004c3da79e --- /dev/null +++ b/test/fixedbugs/issue32901.go @@ -0,0 +1,9 @@ +// rundir + +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Issue 32901: type descriptor equality bug in gccgo. + +package ignored From b412fde53a6b53475e25aaa9e49f3c6df3c48716 Mon Sep 17 00:00:00 2001 From: Jay Conrod Date: Wed, 3 Jul 2019 10:22:28 -0400 Subject: [PATCH 079/255] go/build: document characters allowed in build tags The documentation just said "alphanumeric", but underscores and dots are also accepted. Fixes #32886 Change-Id: I1ba872a220d5c5bf64f1d851ddba9eb3b1afb89a Reviewed-on: https://go-review.googlesource.com/c/go/+/184917 Reviewed-by: Bryan C. Mills --- src/go/build/doc.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/go/build/doc.go b/src/go/build/doc.go index 703825a45d..de793efa87 100644 --- a/src/go/build/doc.go +++ b/src/go/build/doc.go @@ -70,10 +70,11 @@ // To distinguish build constraints from package documentation, a series of // build constraints must be followed by a blank line. // -// A build constraint is evaluated as the OR of space-separated options; -// each option evaluates as the AND of its comma-separated terms; -// and each term is an alphanumeric word or, preceded by !, its negation. -// That is, the build constraint: +// A build constraint is evaluated as the OR of space-separated options. +// Each option evaluates as the AND of its comma-separated terms. +// Each term consists of letters, digits, underscores, and dots. +// A term may be negated with a preceding !. +// For example, the build constraint: // // // +build linux,386 darwin,!cgo // From a3a0cc2e1ae5eeafdffc8c6f1cc9ea9ea93937e3 Mon Sep 17 00:00:00 2001 From: Jay Conrod Date: Mon, 1 Jul 2019 15:25:04 -0400 Subject: [PATCH 080/255] cmd/go: restore @latest behavior and support @upgrade in 'go get' 'go get path@latest' may now downgrade a module required at a pre-release or pseudo-version newer than the latest released version. This restores the 1.12 behavior and the ability to easily roll back from a temporary development version. 'go get path@upgrade' is like @latest but will not downgrade. If no version suffix is specified ('go get path'), @upgrade is implied. Fixes #32846 Change-Id: Ibec0628292ab1c484716a5add0950d7a7ee45f47 Reviewed-on: https://go-review.googlesource.com/c/go/+/184440 Run-TryBot: Jay Conrod TryBot-Result: Gobot Gobot Reviewed-by: Bryan C. Mills --- src/cmd/go/alldocs.go | 14 +++-- src/cmd/go/internal/modget/get.go | 56 ++++++++++--------- src/cmd/go/internal/modload/build.go | 2 +- src/cmd/go/internal/modload/query.go | 24 +++++--- src/cmd/go/testdata/script/mod_get_main.txt | 8 ++- .../go/testdata/script/mod_get_patterns.txt | 4 +- src/cmd/go/testdata/script/mod_get_svn.txt | 2 +- .../script/mod_get_upgrade_pseudo.txt | 38 ++++++++++--- 8 files changed, 95 insertions(+), 53 deletions(-) diff --git a/src/cmd/go/alldocs.go b/src/cmd/go/alldocs.go index fa60fb63b5..6541e085cc 100644 --- a/src/cmd/go/alldocs.go +++ b/src/cmd/go/alldocs.go @@ -586,12 +586,14 @@ // depending on it as needed. // // The version suffix @latest explicitly requests the latest minor release of the -// given path. The suffix @patch requests the latest patch release: if the path -// is already in the build list, the selected version will have the same minor -// version. If the path is not already in the build list, @patch is equivalent -// to @latest. Neither @latest nor @patch will cause 'go get' to downgrade a module -// in the build list if it is required at a newer pre-release version that is -// newer than the latest released version. +// module named by the given path. The suffix @upgrade is like @latest but +// will not downgrade a module if it is already required at a revision or +// pre-release version newer than the latest released version. The suffix +// @patch requests the latest patch release: the latest released version +// with the same major and minor version numbers as the currently required +// version. Like @upgrade, @patch will not downgrade a module already required +// at a newer version. If the path is not already required, @upgrade and @patch +// are equivalent to @latest. // // Although get defaults to using the latest version of the module containing // a named package, it does not use the latest version of that module's diff --git a/src/cmd/go/internal/modget/get.go b/src/cmd/go/internal/modget/get.go index 491d2891c7..e35327ff94 100644 --- a/src/cmd/go/internal/modget/get.go +++ b/src/cmd/go/internal/modget/get.go @@ -59,12 +59,14 @@ dependency should be removed entirely, downgrading or removing modules depending on it as needed. The version suffix @latest explicitly requests the latest minor release of the -given path. The suffix @patch requests the latest patch release: if the path -is already in the build list, the selected version will have the same minor -version. If the path is not already in the build list, @patch is equivalent -to @latest. Neither @latest nor @patch will cause 'go get' to downgrade a module -in the build list if it is required at a newer pre-release version that is -newer than the latest released version. +module named by the given path. The suffix @upgrade is like @latest but +will not downgrade a module if it is already required at a revision or +pre-release version newer than the latest released version. The suffix +@patch requests the latest patch release: the latest released version +with the same major and minor version numbers as the currently required +version. Like @upgrade, @patch will not downgrade a module already required +at a newer version. If the path is not already required, @upgrade and @patch +are equivalent to @latest. Although get defaults to using the latest version of the module containing a named package, it does not use the latest version of that module's @@ -178,7 +180,7 @@ func (v *upgradeFlag) Set(s string) error { s = "" } if s == "true" { - s = "latest" + s = "upgrade" } *v = upgradeFlag(s) return nil @@ -202,8 +204,9 @@ type getArg struct { // if there is no "@"). path specifies the modules or packages to get. path string - // vers is the part of the argument after "@" (or "" if there is no "@"). - // vers specifies the module version to get. + // vers is the part of the argument after "@" or an implied + // "upgrade" or "patch" if there is no "@". vers specifies the + // module version to get. vers string } @@ -249,7 +252,7 @@ func runGet(cmd *base.Command, args []string) { } switch getU { - case "", "latest", "patch": + case "", "upgrade", "patch": // ok default: base.Fatalf("go get: unknown upgrade flag -u=%s", getU) @@ -283,11 +286,11 @@ func runGet(cmd *base.Command, args []string) { // Parse command-line arguments and report errors. The command-line // arguments are of the form path@version or simply path, with implicit - // @latest. path@none is "downgrade away". + // @upgrade. path@none is "downgrade away". var gets []getArg var queries []*query for _, arg := range search.CleanPatterns(args) { - // Argument is module query path@vers, or else path with implicit @latest. + // Argument is path or path@vers. path := arg vers := "" if i := strings.Index(arg, "@"); i >= 0 { @@ -298,10 +301,14 @@ func runGet(cmd *base.Command, args []string) { continue } - // If the user runs 'go get -u=patch some/module', update some/module to a - // patch release, not a minor version. - if vers == "" && getU != "" { - vers = string(getU) + // If no version suffix is specified, assume @upgrade. + // If -u=patch was specified, assume @patch instead. + if vers == "" { + if getU != "" { + vers = string(getU) + } else { + vers = "upgrade" + } } gets = append(gets, getArg{raw: arg, path: path, vers: vers}) @@ -358,7 +365,7 @@ func runGet(cmd *base.Command, args []string) { // The argument is a package path. if pkgs := modload.TargetPackages(path); len(pkgs) != 0 { // The path is in the main module. Nothing to query. - if vers != "" && vers != "latest" && vers != "patch" { + if vers != "upgrade" && vers != "patch" { base.Errorf("go get %s: can't request explicit version of path in main module", arg) } continue @@ -376,8 +383,8 @@ func runGet(cmd *base.Command, args []string) { continue } - // If we're querying "latest" or "patch", we need to know the current - // version of the module. For "latest", we want to avoid accidentally + // If we're querying "upgrade" or "patch", we need to know the current + // version of the module. For "upgrade", we want to avoid accidentally // downgrading from a newer prerelease. For "patch", we need to query // the correct minor version. // Here, we check if "path" is the name of a module in the build list @@ -736,10 +743,6 @@ func getQuery(path, vers string, prevM module.Version, forceModulePath bool) (mo base.Fatalf("go get: internal error: prevM may be set if and only if forceModulePath is set") } - if vers == "" || vers == "patch" && prevM.Version == "" { - vers = "latest" - } - if forceModulePath || !strings.Contains(path, "...") { if path == modload.Target.Path { if vers != "latest" { @@ -893,9 +896,10 @@ func (u *upgrader) Upgrade(m module.Version) (module.Version, error) { // which may return a pseudoversion for the latest commit. // Query "latest" returns the newest tagged version or the newest // prerelease version if there are no non-prereleases, or repo.Latest - // if there aren't any tagged versions. Since we're providing the previous - // version, Query will confirm the latest version is actually newer - // and will return the current version if not. + // if there aren't any tagged versions. + // If we're querying "upgrade" or "patch", Query will compare the current + // version against the chosen version and will return the current version + // if it is newer. info, err := modload.Query(m.Path, string(getU), m.Version, modload.Allowed) if err != nil { // Report error but return m, to let version selection continue. diff --git a/src/cmd/go/internal/modload/build.go b/src/cmd/go/internal/modload/build.go index c26c8a2f59..ff42516c80 100644 --- a/src/cmd/go/internal/modload/build.go +++ b/src/cmd/go/internal/modload/build.go @@ -79,7 +79,7 @@ func addUpdate(m *modinfo.ModulePublic) { return } - if info, err := Query(m.Path, "latest", m.Version, Allowed); err == nil && semver.Compare(info.Version, m.Version) > 0 { + if info, err := Query(m.Path, "upgrade", m.Version, Allowed); err == nil && semver.Compare(info.Version, m.Version) > 0 { m.Update = &modinfo.ModulePublic{ Path: m.Path, Version: info.Version, diff --git a/src/cmd/go/internal/modload/query.go b/src/cmd/go/internal/modload/query.go index 8ce61c0a1d..269f60d620 100644 --- a/src/cmd/go/internal/modload/query.go +++ b/src/cmd/go/internal/modload/query.go @@ -28,9 +28,10 @@ import ( // tagged version, with non-prereleases preferred over prereleases. // If there are no tagged versions in the repo, latest returns the most // recent commit. +// - the literal string "upgrade", equivalent to "latest" except that if +// current is a newer version, current will be returned (see below). // - the literal string "patch", denoting the latest available tagged version -// with the same major and minor number as current. If current is "", -// "patch" is equivalent to "latest". +// with the same major and minor number as current (see below). // - v1, denoting the latest available tagged version v1.x.x. // - v1.2, denoting the latest available tagged version v1.2.x. // - v1.2.3, a semantic version string denoting that tagged version. @@ -39,11 +40,12 @@ import ( // with non-prereleases preferred over prereleases. // - a repository commit identifier or tag, denoting that commit. // -// current is optional, denoting the current version of the module. -// If query is "latest" or "patch", current will be returned if it is a newer -// semantic version or if it is a chronologically later pseudoversion. This -// prevents accidental downgrades from newer prerelease or development -// versions. +// current denotes the current version of the module; it may be "" if the +// current version is unknown or should not be considered. If query is +// "upgrade" or "patch", current will be returned if it is a newer +// semantic version or a chronologically later pseudo-version than the +// version that would otherwise be chosen. This prevents accidental downgrades +// from newer pre-release or development versions. // // If the allowed function is non-nil, Query excludes any versions for which // allowed returns false. @@ -81,6 +83,10 @@ func queryProxy(proxy, path, query, current string, allowed func(module.Version) ok = allowed mayUseLatest = true + case query == "upgrade": + ok = allowed + mayUseLatest = true + case query == "patch": if current == "" { ok = allowed @@ -202,9 +208,9 @@ func queryProxy(proxy, path, query, current string, allowed func(module.Version) return nil, err } - // For "latest" and "patch", make sure we don't accidentally downgrade + // For "upgrade" and "patch", make sure we don't accidentally downgrade // from a newer prerelease or from a chronologically newer pseudoversion. - if current != "" && (query == "latest" || query == "patch") { + if current != "" && (query == "upgrade" || query == "patch") { currentTime, err := modfetch.PseudoVersionTime(current) if semver.Compare(rev.Version, current) < 0 || (err == nil && rev.Time.Before(currentTime)) { return repo.Stat(current) diff --git a/src/cmd/go/testdata/script/mod_get_main.txt b/src/cmd/go/testdata/script/mod_get_main.txt index 8e06220f9e..403abcd28b 100644 --- a/src/cmd/go/testdata/script/mod_get_main.txt +++ b/src/cmd/go/testdata/script/mod_get_main.txt @@ -4,13 +4,19 @@ env GO111MODULE=on # @patch and @latest within the main module refer to the current version. # The main module won't be upgraded, but missing dependencies will be added. cp go.mod.orig go.mod -go get -d rsc.io/x@latest +go get -d rsc.io/x +grep 'rsc.io/quote v1.5.2' go.mod +go get -d rsc.io/x@upgrade grep 'rsc.io/quote v1.5.2' go.mod cp go.mod.orig go.mod go get -d rsc.io/x@patch grep 'rsc.io/quote v1.5.2' go.mod cp go.mod.orig go.mod +# The main module cannot be updated to @latest, which is a specific version. +! go get -d rsc.io/x@latest +stderr '^go get rsc.io/x@latest: can.t request explicit version of path in main module$' + # The main module cannot be updated to a specific version. ! go get rsc.io/x@v0.1.0 stderr '^go get rsc.io/x@v0.1.0: can.t request explicit version of path in main module$' diff --git a/src/cmd/go/testdata/script/mod_get_patterns.txt b/src/cmd/go/testdata/script/mod_get_patterns.txt index b9931970e0..bfab70090c 100644 --- a/src/cmd/go/testdata/script/mod_get_patterns.txt +++ b/src/cmd/go/testdata/script/mod_get_patterns.txt @@ -10,11 +10,11 @@ grep 'require rsc.io/quote' go.mod cp go.mod.orig go.mod ! go get -d rsc.io/quote/x... -stderr 'go get rsc.io/quote/x...: module rsc.io/quote@latest \(v1.5.2\) found, but does not contain packages matching rsc.io/quote/x...' +stderr 'go get rsc.io/quote/x...: module rsc.io/quote@upgrade \(v1.5.2\) found, but does not contain packages matching rsc.io/quote/x...' ! grep 'require rsc.io/quote' go.mod ! go get -d rsc.io/quote/x/... -stderr 'go get rsc.io/quote/x/...: module rsc.io/quote@latest \(v1.5.2\) found, but does not contain packages matching rsc.io/quote/x/...' +stderr 'go get rsc.io/quote/x/...: module rsc.io/quote@upgrade \(v1.5.2\) found, but does not contain packages matching rsc.io/quote/x/...' ! grep 'require rsc.io/quote' go.mod # If a pattern matches no packages within a module, the module should not diff --git a/src/cmd/go/testdata/script/mod_get_svn.txt b/src/cmd/go/testdata/script/mod_get_svn.txt index 90be737213..cd19d99dbc 100644 --- a/src/cmd/go/testdata/script/mod_get_svn.txt +++ b/src/cmd/go/testdata/script/mod_get_svn.txt @@ -17,7 +17,7 @@ stderr 'ReadZip not implemented for svn' # reasonable message instead of a panic. ! go get -d vcs-test.golang.org/svn/nonexistent.svn ! stderr panic -stderr 'go get vcs-test.golang.org/svn/nonexistent.svn: no matching versions for query "latest"' +stderr 'go get vcs-test.golang.org/svn/nonexistent.svn: no matching versions for query "upgrade"' -- go.mod -- module golang/go/issues/28943/main diff --git a/src/cmd/go/testdata/script/mod_get_upgrade_pseudo.txt b/src/cmd/go/testdata/script/mod_get_upgrade_pseudo.txt index 9184d85f7f..f5f415aa3f 100644 --- a/src/cmd/go/testdata/script/mod_get_upgrade_pseudo.txt +++ b/src/cmd/go/testdata/script/mod_get_upgrade_pseudo.txt @@ -9,18 +9,33 @@ env GO111MODULE=on # The v0.1.1 pseudo-version is semantically higher than the latest tag. # The v0.0.0 pseudo-version is chronologically newer. -# 'get -u' should not downgrade to the (lower) tagged version. +# Start at v0.1.1-0.20190429073117-b5426c86b553 go get -d example.com/pseudoupgrade@b5426c8 +go list -m -u all +stdout '^example.com/pseudoupgrade v0.1.1-0.20190429073117-b5426c86b553$' + +# 'get -u' should not downgrade to the (lower) tagged version. go get -d -u go list -m -u all stdout '^example.com/pseudoupgrade v0.1.1-0.20190429073117-b5426c86b553$' -# 'get example.com/pseudoupgrade@latest' should not downgrade to -# the (lower) tagged version. -go get -d example.com/pseudoupgrade@latest +# 'get example.com/pseudoupgrade@upgrade' should not downgrade. +go get -d example.com/pseudoupgrade@upgrade go list -m all stdout '^example.com/pseudoupgrade v0.1.1-0.20190429073117-b5426c86b553$' +# 'get example.com/pseudoupgrade' should not downgrade. +# This is equivalent to 'get example.com/pseudoupgrade@upgrade'. +go get -d example.com/pseudoupgrade +go list -m all +stdout '^example.com/pseudoupgrade v0.1.1-0.20190429073117-b5426c86b553$' + +# 'get example.com/pseudoupgrade@latest' should downgrade. +# @latest should not consider the current version. +go get -d example.com/pseudoupgrade@latest +go list -m all +stdout '^example.com/pseudoupgrade v0.1.0$' + # We should observe the same behavior with the newer pseudo-version. go get -d example.com/pseudoupgrade@v0.0.0-20190430073000-30950c05d534 @@ -29,12 +44,21 @@ go get -d -u go list -m -u all stdout '^example.com/pseudoupgrade v0.0.0-20190430073000-30950c05d534$' -# 'get example.com/pseudoupgrade@latest' should not downgrade to the -# chronologically older tagged version. -go get -d example.com/pseudoupgrade@latest +# 'get example.com/pseudoupgrade@upgrade should not downgrade. +go get -d example.com/pseudoupgrade@upgrade go list -m -u all stdout '^example.com/pseudoupgrade v0.0.0-20190430073000-30950c05d534$' +# 'get example.com/pseudoupgrade' should not downgrade. +go get -d example.com/pseudoupgrade +go list -m -u all +stdout '^example.com/pseudoupgrade v0.0.0-20190430073000-30950c05d534$' + +# 'get example.com/pseudoupgrade@latest' should downgrade. +go get -d example.com/pseudoupgrade@latest +go list -m -u all +stdout '^example.com/pseudoupgrade v0.1.0$' + -- go.mod -- module x From beeb8fea8d06cdc67ff95bf23dbbfa926b4b7123 Mon Sep 17 00:00:00 2001 From: Jay Conrod Date: Wed, 3 Jul 2019 15:14:51 -0400 Subject: [PATCH 081/255] cmd/go: update tests for new @upgrade query This should have been part of CL 184440. Updates #32846 Change-Id: I78a1326f4a67b3b526859bd15cb9653b4a8551a7 Reviewed-on: https://go-review.googlesource.com/c/go/+/184920 Run-TryBot: Jay Conrod Reviewed-by: Bryan C. Mills TryBot-Result: Gobot Gobot --- src/cmd/go/internal/modload/query.go | 2 +- src/cmd/go/internal/modload/query_test.go | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/cmd/go/internal/modload/query.go b/src/cmd/go/internal/modload/query.go index 269f60d620..8c5fdc8bf9 100644 --- a/src/cmd/go/internal/modload/query.go +++ b/src/cmd/go/internal/modload/query.go @@ -509,7 +509,7 @@ type NoMatchingVersionError struct { func (e *NoMatchingVersionError) Error() string { currentSuffix := "" - if (e.query == "latest" || e.query == "patch") && e.current != "" { + if (e.query == "upgrade" || e.query == "patch") && e.current != "" { currentSuffix = fmt.Sprintf(" (current version is %s)", e.current) } return fmt.Sprintf("no matching versions for query %q", e.query) + currentSuffix diff --git a/src/cmd/go/internal/modload/query_test.go b/src/cmd/go/internal/modload/query_test.go index 5c0527d40c..10d947e46f 100644 --- a/src/cmd/go/internal/modload/query_test.go +++ b/src/cmd/go/internal/modload/query_test.go @@ -115,12 +115,14 @@ var queryTests = []struct { {path: queryRepo, query: "v1.9.10-pre2+wrongmetadata", err: `unknown revision v1.9.10-pre2+wrongmetadata`}, {path: queryRepo, query: "v1.9.10-pre2", err: `unknown revision v1.9.10-pre2`}, {path: queryRepo, query: "latest", vers: "v1.9.9"}, - {path: queryRepo, query: "latest", current: "v1.9.10-pre1", vers: "v1.9.10-pre1"}, - {path: queryRepo, query: "latest", current: "v1.9.10-pre2+metadata", vers: "v1.9.10-pre2.0.20190513201126-42abcb6df8ee"}, - {path: queryRepo, query: "latest", current: "v0.0.0-20190513201126-42abcb6df8ee", vers: "v0.0.0-20190513201126-42abcb6df8ee"}, - {path: queryRepo, query: "latest", allow: "NOMATCH", err: `no matching versions for query "latest"`}, - {path: queryRepo, query: "latest", current: "v1.9.9", allow: "NOMATCH", err: `no matching versions for query "latest" (current version is v1.9.9)`}, - {path: queryRepo, query: "latest", current: "v1.99.99", err: `unknown revision v1.99.99`}, + {path: queryRepo, query: "latest", current: "v1.9.10-pre1", vers: "v1.9.9"}, + {path: queryRepo, query: "upgrade", vers: "v1.9.9"}, + {path: queryRepo, query: "upgrade", current: "v1.9.10-pre1", vers: "v1.9.10-pre1"}, + {path: queryRepo, query: "upgrade", current: "v1.9.10-pre2+metadata", vers: "v1.9.10-pre2.0.20190513201126-42abcb6df8ee"}, + {path: queryRepo, query: "upgrade", current: "v0.0.0-20190513201126-42abcb6df8ee", vers: "v0.0.0-20190513201126-42abcb6df8ee"}, + {path: queryRepo, query: "upgrade", allow: "NOMATCH", err: `no matching versions for query "upgrade"`}, + {path: queryRepo, query: "upgrade", current: "v1.9.9", allow: "NOMATCH", err: `no matching versions for query "upgrade" (current version is v1.9.9)`}, + {path: queryRepo, query: "upgrade", current: "v1.99.99", err: `unknown revision v1.99.99`}, {path: queryRepo, query: "patch", current: "", vers: "v1.9.9"}, {path: queryRepo, query: "patch", current: "v0.1.0", vers: "v0.1.2"}, {path: queryRepo, query: "patch", current: "v1.9.0", vers: "v1.9.9"}, From adcb2b1e7aef2d06ec19cad52f24e8271a12d26a Mon Sep 17 00:00:00 2001 From: Kyle Shannon Date: Mon, 1 Jul 2019 18:45:06 -0600 Subject: [PATCH 082/255] lib/time: update tz data to 2019b Updates #22487 Change-Id: I3c933c68b5c3c5e78e3a9656ea2dcdbcbb59533f Reviewed-on: https://go-review.googlesource.com/c/go/+/184577 Run-TryBot: Tobias Klauser TryBot-Result: Gobot Gobot Reviewed-by: Tobias Klauser Reviewed-by: Ian Lance Taylor --- lib/time/update.bash | 4 ++-- lib/time/zoneinfo.zip | Bin 788764 -> 781554 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/time/update.bash b/lib/time/update.bash index 5dc74f9f0b..28f904da9f 100755 --- a/lib/time/update.bash +++ b/lib/time/update.bash @@ -8,8 +8,8 @@ # Consult https://www.iana.org/time-zones for the latest versions. # Versions to use. -CODE=2018i -DATA=2018i +CODE=2019b +DATA=2019b set -e rm -rf work diff --git a/lib/time/zoneinfo.zip b/lib/time/zoneinfo.zip index a79e5d98fd20788ec4910fbab0d7b801b3a820a0..909cf48dd50351d50212ce37c96a83f5ffab3dda 100644 GIT binary patch delta 104647 zcmeFa2Y3@l(>Sh^?xfQRgTcmt>Af0EufdIOEDSciSuWVZMIhU>0Hy>2p(9{{Pz)Fd zp~sM;B#=TNp@kYqftVBm2@pajkno?~lTIh2I~{rRe&6r^JRi>ba`I_zc6Qp%&d#n{ z9D48TCVsKeI-1kqf2)^XTjW=Hh;d8sP~39InKTrAQ>W38UmnkyGk27qwFJI{o1dnV zCSru$nq+AbX~`Oyo6$GksL^=^v*>IEG&9!V?|9y}ildLVoNzO-O^s--YfOA7r}8D4 zmUP=ccu5a$FG1yktq%+u4Q?geJ&8)m&9TV8!|}&wwNb}0G`lz~q_An&CCc$<=Z{g( z^M;z_Q^&)Ip^i`4fqcIonD#oyoz5os`!9Y#VK?O*3mXNOeKjgo@z#NHuRYuG42I#E z#!+=x1$l^@awvcF{A*)0Aw0fw{MmbO6|Qqcd`Re~RvMZ1pc!mK~G@8PyJu6ZedFSnrm`hYm zZxoR-XBkZ;^nHY>Z24Da$;yhL9j%8}mZ!B>9`EiAV2hd?isorG8r)27_Unnt zkDL7{p~&aW)2Tpj1M2A9p{93i(e9_(#*VEW@?Y~{P9S$FH#S}DDJeO&v03u+AS>8j zsrbnkdmD|04v%(Z4U(4uVVE5U2Yv1CB472XaUcau+xcboYCNOrU4d!Gm#pZ$w<4Oi z{5+XeD-)fGS#-mh6RaZNs4G;7}dv>LwV$8`~|Qw2=d zS1Tm<>jwykZg@N>A0E>b)XpQHZ#;60+;4m?AiDW&8~J?m7Y_3I7JHCz%@+{e8aAEW zZyobPK7PMudr-q_D($$^8L;o6v)UJ9+YjgIB&IfB10baN)W~ z!1Qq3NpgR9>Rs~O#|^TD>wx9t^G_ZZk^4`Z2#6jzJ&SyPh7MN!8+_KuZ-J;P6JmsD2_ugip32qX_7M*6X z=h$*H6-mPYA{ve3je2+7`nzy>{RyDHy?F<2^*y{)74JG%NqtxGroPQ?py1lRI?$fV zK%sjQ=htktWTuQ)B#GefdNDq}uure!%MJ4aw5nI^cP|fp?-5}BNaN^OtGql-#(oDL zV&{NPgh|NFzJMWBxwwe9mrbwRUu+lai_G5qMeiJOZ9qNtAoz+09qj|G_Mv$mFl5{tHsLH4|*v6`>ZgJ z)#?6k>iK_DPjJBgZ|eC9Q%}d4A%SRhZIjV4Y_NWDOaPkFoau!|S#;r!x@?1LGBZ%O zWvE8`GMC=`HM38DO=8Tc{DMI(ZZ7_-dFx>Tyrk1$UL) z9KNR;RF>-y656t3v93Dk8x3S$4$Db}X*ZG#9r3%R6!FJ1R3}B^a)w7+b8=J+{;QDW z_tr`zK|6XeEI+7?b}g#|+)$?)I+;G;;LJy#a3%P6YUuhJ$Xb{EMEk8_ z`9yoCK5nLqP$g9 z9bZuW_E1mJ?+d6d=ukdILOsG@@YB~&c>>hZm?hs0OFTpn2FTS=({)r?^d#BjuS6v0 zsA9YwXV&FQFwS4-fpOQ!?WN2B*Nic)fR1gX{CuFz8#Yn1CD9)Kz-DTOga*CG-{%DK z`tPLV+11%qz;Lnz7y|Ty`1-r41eyLk@$Wy!I?{3=O#(yW>a4{PLqFS4M_Vx1@} z{MT=5b0j$Pz+}l10t9~>Hbdku8DSBDAt1m-l(mG~;vOSHgu=$(I%zt5B!jtB?V?YOwE$?c}FWxNX#H z#oseyo5y?5mbRbV0E2%6?VF=jm}7&_6Nt*s)po@2@GL$M&7P|@dsUcwdQo+2sj=|r zje%5C@3Myz9{7t#bq6_O243`1dJvtCqm1b3d2Kb`5lh`+2?cAIf1|QM9J0`yE;{)j znNujg?V`IT9qg;!bg$`9^`5#K`2CJ8J7h!z<5{TR8DR{^YOCGgv!T}kB5n|_6fJ3t zEh{Hwj5Rq$IXddZWyUwU+GK+4y#MAq-Bg`7W&Sox`E-la>hV(>CYe~Uoh-@-R&cfu z4z{4rf^{*35y)LcMO_Nn^W$v_5~4V1I>#97J+)UDH! z2k*_*%2*oIv_4ZCoqAVqDolL>#mGUhuSDr?~U`BT5?M`%6%-UEGfM_+?T(_^mG z)s?`HE78zV+8W-8ggr96BFXO^rF}%9Ck|Fvq2$llwPqb!Z>MT>z*4gL-6rMc11#Lg ziip$Si~&d7hXd}Eh^9NWe@LaZ+iq=)4z1mztwF@F&S$R~+raz?H>ntQwL{Q(czmus zU7l*9nc@q6)yxZs=4+B{6;c!r+gFlrtq0F(r5VE9n;2}B?2t~vhm)#o5Z(z!bH&%#s!L}Gz1tJr+VfTu4aggAWEIrOHIbGys~Vq(U-GvuSwh*p z!SoObVGkC>f2;?>>QQhxoxCB0DOVtxP)^qaBT8<<&(I9|yPR$y(a=QUygOe}k(FGa zqiFJAi(X0(7M4ixGZN|3lwPp%Dv;?anxa#P);I}yQb!x5jQg0OXXwy0BQ1#Xp8S(n(06ahnS7!edUGmYj8QPE0CtqvpqR(e)$5Xvg(+S|T4tP`BmBN4L zW6Ek*PG@^Xb5It=~U6!bu`yo^UWyXP&m)schA$y|#4FHUrhsCla zrC8PYbelh$qm$?!{+GGBcPKY^C&g%G91nEubE+|)f0Rnl6D=s!)lw}OVfU56sa|Wl z%mLc+mcqKYYIw^N%4WR}I^caY={hC9M26v^i`S_TqFM3HH&3-KAyoNt2+y>2!nB}3a?sHE8|=eUzDFx zQro~tp1gTVR)vA5h7!(GM*gqzrmy^nlhj~ohi`^J|8VnUxhzYra!5{)K*v`XPrLhA zc=RhXRnrVC6o`lz&bbPQ>eteuzjmsWMpjJoA+=O#%A1*Vg#!^kJ86m_G@YB3Y zzd*8Td$n~0yH|2s=Tu>K+9*on>GimZ2%-b@K6Z zp~L7zd7X5!KCXi9l=pBe8q-)?OQ~NM8f(i7tZ;n1+yushQjQ+`8mgK|J6`)lejeS} z;lKZ0;f7D!kV%eX#l9Bakp!FHxX^#Uz^#s}ClnyUV?8L8&{^B2@WQEg3}M(mlZNa{ zOXj}+a@^{p(+wUB0%jeAGQ$<(m=ClKPiWsU?}(*^<{vUIRmOaT%Lo$F#n#YHS+U^Ynusj9Mx>^ zi;^$}Dv7E``JM=5Md<>i#`2v`x(}!TFNOd$TrVeaSdJVE16e-ycYUEQ0yAjC>R)j# zs}Ue!&{!MfmJaWil98sylB11dJZ#6Dv0yu3k=2{q;K(@GuK);Jz##wrT6qW2BfdX` zAK4!VTNA&k=~#H71EYQM;^axxYpgaHk4v#f+YQqGq(z^Zb;X~RQGIWQlu0B`CVFmA zuub}`DEO%-=K8UH!N<&9HYTGl#JR$*Y4{=(9s;~BI#fq zKT0OJiYF;}iEs0CKgt-1Wq955eVfP>1g0U7%`OI5`&hElty#mnXJw@1D9-N$vh(`y zDe3ftKYopJ&QFLgb}x?1ds{2NZ0`gnzc@n1rNWX0m!1Q@xJe^;5!ty}Nmg~^GP;iT zv~*lj>ubNFQTN8$24q|wO_m`wP;glgQ^GN7nz1l3uY?fhEaTA0`e~rM8+{4U)9~Z^ zH~a|f^w~17iIF@#`x!?;LMg7T!>DGMssg_;MyTQmY_IRZ@_tgaJ7SS6T;4(-(bfcj@>?Gi-;%LRTE|0Giz zswH7a;=+p)ADH||UHB-=_)LqkIC`H9RrX>7&29y0uKCXtWFN2D10G>PX(T1uZpnZ_ zwT@JdqI#PjR`C`kj0s{J2v*YZ_3!eE*wgYAhThGg(9}74V)!U6s=iE5k}^CWd+$D& z#~>{o;fS47#rc$bC8c27fzD+63d)T3UVuSP8CIQSE+6TSryA0d@F68zLJ;sLgNqLHo6ycv3gJcbIhugzpeq zbRGm@@Hmr6c4$564Za2_SH4ouItEz^NXyf2U$3 z(?R~HyHtIx*ToS>>zQj8!o+PMitVY;2d8JXwx{kVi9fX^Mwda!gxQ+ZqGW>QSdEaB zz!M+qO+xIZ$;MzbF^XcnlfAgQ48U^?k@%n?@N($ygOry;l}5pa0j+~blqNFHG$F-l;o@!P0G?lRTswCbhlAAq91cS)_ zDGm2rm9aD~Hc`nsnE5ahs3O6J504Bo6ak|bq3b;<`S2IvtXHLSz3CUz+kyMl z4xP0t`G{oQwqZ6koVZ`)ZhtoQrdM$s)2`Fv6y2!ay3wCN zhdx1 z`%^?=g?4PSZw5HYGtk4Dw1U63lQFXV^bBsO4jHe}lDRvPGjXh7ydXM( zO3nANGu+3Z5t3>vE3yhISry2VUYSm#Nmm>nbTr%r0lteah0xW!yBL^b$*V&e)0MPn z&oR!)FSby6t`2Ei(1D~s12d}CJqBdK4VKT)l!c~1Sx*@QB}p>VTF{b|nQJZRc4+;l zw7?(lwxTPmlf2C<=)rp+Piqf)*ov0X(uRlYf1#RgH=tc_d=a|1c z740fw(x`bTc%AXW-Vw%CIuzTSp;6s@V_Ekz)ixQ^37!88qbm;d9{nh`2PnVyh_kOj zun#v52Yj=wmL?IIKI3Oshq3&nL}sQIJ$_;+=YU%Tw|@Nm6efm7Xe(sC+_f?l+F{w) zGBCcJ3Dh-iWaATlM|`3cmhXJ*SbOopz{2=zG%eAxa5@tiBIsFYVFW#yRA-U=^|eU) zA_|V8ACSMI`;kmQTm0%D5q=Qm*%!Y$(w>`@;^WO^^fxYGLWu?@ch#OkBARI- z(;C$^6+ITzYYxMr0fXog{0SS=k3xIj0j_m_*l#pb z10rrMX`vG(GJb3_64(bfcPCP;_FU!ZG@+b^|6l-fS87mC4`ymH=t%-ok7T^OzMc8* zZy*nDB-sO#CIhDQ*)kdI( zQR|K&#nVQ!7k5~&5e5Y}kzUccV=Y$YVJDjX`wdJnvG*T3oQ9J?k4rP2a|yEuJ<^(;mY$*7x~4(jmgbUvZ!FlQ8$ZIzr-&<{bs+=f+`h}2E;{G8e>VaC?^dFw*M76aVqhb znfF0}aT7ZcF*?VVs2ra`*xK-mqvQqz(x%GyT=Fei^>21z#z{Fu(P(xQm# zbO3=Ke!S%mNq{nLBIox2tnI#7lc4&}FZ5V9;_)|V1RImPM;2FTs9YmPCajKw0jTH( zYvlc|v%7?48J7CIK^`E48;J;DyA)^5O0|r#*?o)^u^20j%rwC;Vf&H6GA1;PW8Nm# zo9MuEpS0}yIzWFNMO0(t^VAT@?nl*_Ndy|X>sp=JQU&ZA$X_ul_hEy`Cd5dfj7mOB zb?^r(F;c6*gH_N$(mePVWRkNgBDcXl5D47JBnQ)=Uxp>wItJ3MZ9dcz=1`Ox1zy>7 zirFk-Tj4{Cj@bz{wY<;j%;yK*3Hlyn1UI*w({ z|Ia5QFMw^sP1K0dmK^Xslhv5&dRypbWJHLKnzM!Oh`!uHmnT{3e;hUU;i1<*%D-R%9%^cgW2XZM(z*$)nfK(QR(f@ ziQ<&~7uN5E(cO#kd4*LD28KtY;qUNtABq3MkK9j#kBT{!sE~tgrlO;OE^eX{;{udec1R_|Ymj z+I*`x`WWGUZ?4zKlb3$^7J7o4_^R&q^xPa@jPtxKc=l`%$lSSPc%R_eyFdJR1pO(9 zKs82~tA{r{++Xm*5|U^IOHDX@Uy{@dE0+v&Q5>rvvSjc6%iNy;S=>Zf>YJStVovc@ zG0KHp3BK$H^asT-F2S>h=+Cv)<+KFX?*4EJ-btauZ5ajjC&sc=J0@Ggl>D~#Ojj+L zPm>U^=#m1vi3-1;H6<&@>a)0;jGNj+#}+IoUzpZU$R0d8GNMJ zEQmob(`iydZpmgvV?tIGjkyz8G|un!qH&j+CXBy5v?y=_ zACU0+sj#An%N{07+FreA@|a5r=+0<53{9Cso6z)o+VI6O{^(`~9Y$)t;O&?~|M)(c zbPK8y?jTTHgFA_@xTE+=I$JTG*@ITkqT8S=v*;D5)F^r%?lJy5?lr#Rp5rU-J-%WJ z;47vAzG6z?E2aj%Vv67^rV74d%HS)e4!Ht_@D)=DUooZd6;lge^DxQq|6sD=D<&Pj zV)EfDCLz9JGU6*HCB9;E;wvU8zGAZCD<&UKUo9aT5(l zT$&{-HO-0LCKC6$OI)*i@Sj?jpNclL8ozt*ygQ{&{105?-3L=Hr4Api^-ZjZ#;O zkK9hTie2JE#jgARhjuNAVrLfDu1om+Gu3NX9<*x&^?#c6A8A&B{6w=>d|9)KAs}SA zuHdi|4@Dv3Lwtx{jV}z~!2#n@)9ti;UMiU&2s74&+v%65u~|E5VH)erk(Wl@L`Oc_ zmH`UXN6?v6-gt$eo2Wq1sWS=_K?QB;J?M6={hB%jKqcHnTNVM8)W$2@7eRgIJf~qE zC@wGX-T$U{X;IS{E|9p~t0ULVm=Az)6J73TOJ-7m9XN7VXQ2na;Ah%o68I zTpyO^lj<`|gf|iU(scFr)O+w2+}!rXlAdPC@RdMAV1AwpFZw&1Suc4J4<8;BCWz!6 zRGYiq)4_h>CcYyAM~4%AL?{t?$5Mahst~}%w|v|ubQj7!J^AZ-{VyT_GHxQR;&92R zbO=}|Mz=|jl8k%>bm=LbhSoi!D^U!x{7FX$X`grn)A_)uKk1X`yqONx=^5uE;!2Qo zaYJN=cv##>^f7ZGUcJoP2ANzhE?^q|2v!X@x1i)Er9r?=v2RX>w)dmAy3If8+@F5z z4z&GU>5BF)EMDD3gL*N+O8GDzxjYWEvlrui&M<)AwTStia>Q1m(XLy@wrIyJ&U5dU zga54$EeA935=gycV%#ZXi?E*ku(w#6ci()A(HUx-Lf zQTB0Ftqx6iwzqU1NNOIc(orcgirpxJcNiMok(q`5>d1^n_AsWQqtCBZ(Bep@zgzbR z&+(DrObH5oKZTish74r~LHadgKw*(gbN5$94`YS!2=nc4iC174uAs0iMt+-+uzz4# z79$kT0$%q=IvdjiYRGqgnQS660z-;gB0dF<_8DUxBhTs@vTfl15&oo3Om}R7@!5iQ zEmbf!MDGm5lc>(nV1-{(dWJP=;qjQJp~t^oo)rIHNFHO1N7_jeRx%Z;1uyZp56zHdqf?)&EJiu=C3{b=8J`~KQ@<<#YUSJwx(`TqTfZP37F z^l3jv4?kMxk0WAIGZem(t`!6mw}lkjGbUcsEgHADcukMEcy!mnRwZav_CV_e{KKf> zD@G4R95{4KaA3RPX!{j~GBadL z0yT}NuHtyy$KTT*qifMr02UMPJZE(e4LeYYoW%INeQ9M)>cf=M~T!$HCU- zlwrgNu%#syAX4|_&m7R&IcV)lT48O7tTa7bNlzdV19G?NZF)^@95HCw9Ma{ytj~&m z3i|6KCFxamO2`7ytmO?pbl7#Opg7h%yhdwV^RT8}ts?CVoLlDkyf+vqqJ>4AIA-p|C)C)YNL-u{`*NBS9LMA>%}HF=L?_=-l5XOX z%dBB4BokPYd{x*|N+uv=y;P-R|3_eka1+^}6U=0?lT=l{;rsqd*N|3{TXCD7%;1ng zJ;Jo-YqVN>8?4}MWD8WVJ|q+USRfOL*_GV1Da-VW_Uh|O*M`LD37k%wn(k{6oRInD z1SWEDoR_4lwevPxNl*erM10XeSQ+xU@<-NL$!h!d`(DBna~?vN!oBz^hN#h%8476v zLbmCP2Qip+u{2}YXsJrBDLL0a6z$we>NnXGJkNsP9}WF}o2 zba+3HX)lDD3Fw8(KE3NAu^Y6{kgc1(+va+q?_2XReMQ9?^;yfE^I#0;p;c>?WSiJn z62*AF#v_Ws!-pHSLEa<(D64>}s%|IWid&3Ku05&gkWpYT^3-jnt6+E>TjZV=49~qS z%-_QPx%FQ%GFkW72U_qRb!k?gE=Ls?-=sN?)q;5__xr(0!BXVT*yZ%wUK$7Leu?R1x&x(#B9|D zcsZ~TT|UGp>~2Qw4>J!*#`FDMa)cAf(PuX^U8rNnchUDe0MnrZ=(Ud&gwNUWxgRlw z(xgPorwmV%a*rgjTukl;ZHg1+*X>bAl>b+=yrVv6WPBP4vk;9eo_T~0{-!iI1zvnm(S-^;|~(7=;nt6(Tsq2EU7 zWped_rAWqmn|S>UzQPLzD(kzl;Q6#1eFp}u8=|jA7Vvt||3Zx;3b~#oyO`!Cose1Y74hF{qrD>f=WCTPG;16^9`U0g1xQ}bD zvytU9G&@x>P^nJ*Dfvk3aGeSQjmW#kM^0qH07Kv<58>qD9&*6Ra6c`lny5c_r z3|16G_>v*rE8eKlsTpnb^%r^>cb#m1@GJ|5nr+m}Onii*8pY1wI9jNeoo2e~w-fGM z`nJ-8lER|o>0_6aaF*0>kRGFfSI3>yiGpaoV$gt0i2j8`Gzhk~kM%MeOzHH9L@C2LZ3zA1#r|EC zhWuv9?-DOwY|You08ax>s3xjEwAgqoc$8z&=*n<%098T)YxH@l7P9@UEzh4QW6(3N z1`xgYma5kbcS%~oi^jw2tJu2`#*nYuMVMx=AEnI!rye)VG@X^0hD_Ow6QH9IM9~=e zwe^fQDO9bNVRAJfTLbLRJAYTIreQi`1_F4n(nwKg_d8rgNB(Oi81i+#R|``tT^m2< z`ik)Nm%a#JT{N0)&>WLMJo6HeWiYa-<3}l5A%SnboqrkS_590w^)hZ2fC<126S=ch zNk>+SHR&1?->`+eAr%Rn6>BiLX^Zc=doK*_KWF8BZ!c-C;w66$l)ePtk)jwR zbp6rQxxKx?ZKDG22QgB(_^vBPzD>vCJJ|mm*|?R9`LKS)6zUrvrQ#K#O-&N|;JdCI ze6#re;GE`LJ9z6wGZn8`-9y?7d`BX8t*{E&)MD6H7vijYXhT(i1zZg%bcj@R#E-gq zi3^)e%j`ep0t?|LVWSW=Y}6r9+6R2+-iCZ3{Ukfv&g)1bE$Fuo(H zmSi>WVXd=fuYlF?mB*i;SuxCH4S;XCw4xHIoZ>;-B#z#tz|70i_=U~ZKve$?3;+9Gt24VPj9)vaR8 zMYvvGRoUCCL>-8zXhVQ(0;brJVrs98H?=3i1oU0%X;5y4kIY$O#sU9gZ}6&EkCtxU z-8HTfjtx;`9%6<|hZWzEybWS@wzs)+!yDYzDoFopFDYDnC%1NdH^0Xq@)oqapFuuP zRiJsehepD82v?vY=+-T4@U1uP&{74u;6q6$jqiwdc)6PLsjo&3_eK*ndio;|1Aywe|yrvk{L`g#nd#h1Hk`c#}=2f+n z2|>m_it{OBz2c>S@Eyq?5t1m(r*C^3NHyNXcYUOA@g3PnPTZ7AF%4V0;Ch%QH4JY) zWdu4m4RzDm^$FTN*bqowP~)NQvey@=5!^LHrI_P8*x?PnS;wZu1=lg^kvgMoI~L3AM-`I{Dl5xv-1mOeFsQXO z3}tR(6%0Nua!zeTA8%v3qv0#K4D{s+u0LP>1H&Q;9ekTBg?g`t5W;vSRMMgF^_>69UtCTY{drRL`Mm+L-e}P< zR%VkY$-I0t+1N$5xP?Co%QFr|3x~6<`Ki6x3lv&-64H1}&oWkZoH23k8h2e2*|gH{ z5)%&T>^NP!W4#+a(MO4FF8cii6ng2`-&l(O@~NRb#Xr2pK%u;9X>2Ji&7d`Z8)~CI zt&Mfit~!(%ol0ZJlDTVSU86$OkYv)VscRf>BK=C4S1Pq11it#A{PnE->N={F>)g;Y z4~66!PodJs3>EmI4eXngqc=YUJsWFWMrzo(pX29mVwX}#|0~-KRVoFga3;RP9@L6Y zqtTO%b;ug2hytL2*GN0(+HIp!n#5b}mTWi^OPLYf@B26LB6Qq4ft5dJhS$H&-eXAm z;i;oNKAi$lCfx8UvJ?M7mQ;I6qCEB_Qal#EeIsGF z;R(%mYj0SkMfsBrYdjvr0jux>hFau&x45{Z#@iuchZ{cM%}JIxYvza)7+@a*>sJa8 z#0~$8MhD(vbLcwr8sA0!#~?D*V-8y$jlMy>h3?K_tC!Gn_{X3#=!`7-<2+>Fe6WCB zg|5tHYf{mOn#cZxZqH*A_`dVm)|B_Bx04}HJz$U@a-uuUXoKr|9$QygS+WxR%vm|UE7O{u$VK47OgfaSO+M0`tKA(ojOoKHwlb- zbs)P*C_DT9U(faoGhw58{5GqQKZ8vJvj@iB57oZI-sa!Fum6QYMf=&3=y15c3abAH z{9np32R3Bdu&^@#b&H6e2-7R$9_%m7ar+P=+Kl^P=dJ96Sk$d@BH4( zSdVPftiAn8-};~;aKj18PM(diX8GFffm8P3ORyOX?dSsPq3*--qflNGwgviqCCi{8 z5o{_t-W9fI^`?#WP?>J*bRlGf=fy(=mLx$`d@Woh(x_OaHq~J zP-C-@>6Sr(XYnE^H47!)GVCt*kV~ld)3b#77j7jqIC3SS;hxh8jS3DYp!|VMS-$IS zLoVK5t49?d7`C9y-@&lX;urmH7)qf>cMYLv*A&Kxn*7RE<-uElt=_-hH`I4Mf0p1R z8hSL6G0ON#M34WAR-N$QvX5Aq+-R&o5m*{OUiUHE%RrK&MKr-5!HGpqiHfx)r`qf= z`2TY*3GoA@j41U3psEZ$Lnlk29_If(FB0<49VTbLU?m41m&bp*fy*JM-=V_O2Dzca zf@M1o>G74mG#nSaZ(Dlz5Fx97Z4D*O?9S@{y9QglHbDS?susIgi|{sMg73=7auWbd zP#%Q4CP#J*{oHoz-M>J{{$kNX$Vt!;o`BoYz3ON75dfPFjMZ*7H|&YzD=rKVY}%(BCZE2v1gTqPMRb zgmbb?Qw*|Z$K_y>0dIWNpitSL%=i`@HB=W4*|1*jcUa)L(MU$6wbrk_urj(5NZTBmt%iCA|z{OOmkxzO(t(G7A*_?6L<_a$>c3E z#jaS#gRJIL3(&x+Y)`ahDq9ab?dPdwf3PM$hQh+2C%$e{jK3IKEIw3 z{5Y838Bn{chF1LOt6=*mo?rUC;i1b}gX;SXYID`lW;6ViB0Naw<5m$K^og}wQgfA4 z{RyR^)BiI{gN*zUkQ~{y6;RY=`H)`>X9cHNw34Vt(Eq40uU$pKnjl<~k)Kw@_@N-I zZY)0tmWzk|+b#zQ%7|P0K`tagneKQau+N%{MC<*-{r+Siw=FQpgs_TDt=($p z9{%sE9Ws#_^Z6QcWuO*rl8H>5ZG=_9rnif*2bZj-kRLo>}2Zy%$feF9w z$9{nx-2|HquI@^0ZCAAmy`k8TSO){1z;zi2cowxT1L2pxW!MhFJElxvn-Qyc>*wXi z?9hEXTGN=7F#=czH)saRX&k!WnEj|!%gU?$TQwW!-|DYC|27qu@atA`!4&!_lnv39 zEL9R!Ys$WcnlxoOG_)y9EywY#n_(ke_D7}~-|vK>i56WCWgEWy==&(FH7n%uOs=aq zl^@ywVv|4DWw#0Y5K9!u=@4=hn0v0bqxTg5<rme6$bc( zpRpeQ*w6Sog(^G11A(cv5na0tyH-LYYM=~%V;VIFUGz70Le)zfWBKu=jpuc!$`gnL zOCRcthOIUVZbCwaQ9iSr-i#>Lq@J4vqt9&llvRt(Asa$MF z^qBUc>rdI+0a?Qqp0x*&$msb+;r?2v&*3;$vlQTzEC zf3sI85;b2MWUPQ=5hry>M;qHRf}aV|fQ)6`Ad>MRZOkXy=0>y}gJ9`w%=hZaP7=HY zY096(Tj-RV=-XTPU&#Ganhy3H2}qArJkRytHY|h>s(!X>;V}r?977Gl+Y;&{gr8hk2{hflss`h+5R!s=!%zqQ;B^)-HjzTG`6zq?PT(R~^Yt zrl540b3P(be-vvZKR6!L50%aUtr{5#YOi|++fGkG_A11>*V>FVC14L{ux*!RvTOOx zne097KZZJa0^5QlCg1e0z`NGwaDGY`OA=IJRo)mRW{}_oV#&fK&RD^ppr)IR0iig% zO*EabT%ZN$T_cqP1OHvmope}=67F!<$PneE+W)?3C+V}&L?N6$`=2KXMS4pTlD-Bf z6vJ!OtWql_BSrao4^EAS_x#6sVQOFWKa=g&)t-`)HP)KsV}qqD7fLo&vx_(KiN(qw zu^s1Kb+h5J9X`qm{$J@bQko2xUc+mc|7z*7gnv-FY*CpqQQ2S&aKj?qO;tubq<=_q zd+=Qq4!&9Z2uZWMc*O2gMul`gTyC9LUp!*+Iit!viZQ*$WRq-pn*rcmMG}gg z+!b}%SOcHH;H|*zxYwTTcn0r!ra>LPQo@{^)%N^rV>C&@#CMKAdk^lxb&iM+DV{^z zBE`SFs}new=9#iX9>( z8EUFmF23UVhPos@hj>es3bow`aMbXsQGP~6aC`HrCm1+f^r{n40;}^occ1(Lr2PXu z`^KoSq(UkM_x;uwK`2Y^KK<4>ko1@UvOev7QDCmwm*plBB6D58EM+b@Yt4Xqer;?{ zx=7~DjyjLt-vMahhUd*L4znfMRB%_#^Tz7p=wzQa)+hDHNpxGnN=MHdWs)HwYg>0)J+txn$VsE3- zu=f`??3?wpCXQDKABkOb931quyN7($r^bO)q}S=v!>`(Hmu~%xQQF0a`F2MR7%ADU zpD}n>7QiUJ^%L*%E51$C^(+ht%$}}lIU#^y&~cTAs@iN76V&Hos2(bTK*NjLF)8D$ zNwy|kQ?lS#AO$`a$;7YKagC&_KyH8w zG$?O2Rig!-j~;2dXU1FzPvM4jli4!HGEzaMl1OmlDO9$ROlPI%JLBoBd61%OLi}-s zGr5Vzd3|+g-#~~g;D$Ahc~D4Hw+Q78BBU~hy)}16>oELA4ie@^wBs(*=++Fb4dJoL zVO$k;1)=!+Ii>0Vq3WQ;dk>zFKMEScHLb$Mfn#1glRqJv zX?p-b9zfg2atd`uu&)Qzz5Gz6aaZw3v;;RwZ z6=MY0ZqL#b!_^?RfOtmc9pgIr!SLfIC2hPt*T->xgauxoz;z|46Eib+JeMVly7(q^ zc$|VZ6BzAfxUz>Xig2L^*ztBT$3V*{W$Ap?4tySLpZPh^{&QsRrX(q36t{NcB=a4v zJJ*g7#@p`0BU4YdZUyuFR;Y3kS6->AfZ$s2X-OO$sEVuiJ3n}m%w=g&Mk?2c_|E+{ zSG~{#sL=$4^;6(!M8*vDiBqdO1q;XS;NRx$GQ8=L2I27$7Eu7$BQ+61Lh^Uko zQLCb+845h@OPi9ePf!0G-2rUxptoM^xj}Y09p2Yzf$3v0)T}ZUiNfRwW}pF(VAjc zWLolq6ie|J?6+{$t76^x(!L0D+@f9^g~DdrdMRO!3;sRt#U;C|OT7`xz2QEzlkQlQ zN{;eC^_Oun3C5x`g2pf7KF6eWGH43o+E9c7WRygkhmKEDkR(MjM*tnmK2uE??(`uF zNRdLhM~85c7$tJkdMMYA5bWiBx}w*ON{&&0DM*iun@y1WXkfIq6^LOgw05Kd<%MHT zACKgQyT$O$bS{tRXaeZ?hL2Zo2WHuh8uwPfi15a|-kf``dZjm4KaQ{kR8{v)=ZkhB7-X3~^%z^{ZU;9A5BTgHHA5n0A;$^qOEHx;OlZ)gP5m(W8AjA&Mm^(b!o{Gy$R5$!f-Qq_=iFh00RwOi*Aa8jJ2 z6bf98a=UP=+)R#|cjX=s-AO#KcZVu@`TW{@Tqs58v;4x1es=(cJ5ae~ASaX9?Ut;` zGr7&~m-5kXa(b#77nSC%LSl!Q$0G%j?T+IV>T+U|m5KLMDs|mm$)3g4k}*p{NgSfq zM5_aRk*c*=TUwT{vknwZ5s`s*B`)>v4o0#&n!HG1^qutxmIMOA<3(f+D)8S<&vvd zOR8-+{-wxW@D4A&W{g)~)6G1d5)217j#A3NR_3Q(GW;}o&4qWo>5Kk&^M{H+TIeJR zj}={k)cxs`oDxa$$sNf#C0%DwO7&5+4ablai6#`XTsxc_iHBV%0p1~jTTQr_3`(hk zYodRJLB~xxD4n6uq#aI$^s(kie1xdZ+-n3rxhsUZu&h_N{!aUb!eJN{q7;<2P?I(z zikpJk?8avVK(ro}?!;{?CsV8ft&jJuSR(OcxBBT%pSTWPgwlf|7e?B0Q!Uo4G1iO> zWttL=yvWLRAzdc!vVJ6&MMz4f)8bA_$Wq1A=~x?-$o6rp*Z<_MN>X9vUXNc7&x7(w zxZ$O=SSX4L1W=CTxHGOv@I*Xe10rTPcoN%3xwMSaKzKVOri-_uHq5*3x7{EOpv1<- zw~195Kq;{Y0w}nO*Xo5hfC9fEfC9fEfU;nUh6XSi0H=wCsz$NJs~S0@DZP1!rZj&g z5FkZ3v{JREwgw@Q^q3n=qCUOUkjVS-Hj!Rw=511sg2;+A*%8Z1e6Bs+ zM*&tLv-=Ec_!>2f3wJ$IfLLb+9xGBI3 zOq6w+t1wVin08sn;k9Q#q;bQW?)%0y!L>9~>`MEN@J^P{r<{=wN}+ZLn<=zEa54$- z=-TI0V?O^Vl^|s8eO1RKlL3!P-`6(g!|R#`8Hvh~+JCHa0JncSWe)Ua_R+-4a_$_- z_2gk!L<1vnL${vhWD@t>u}$*esT*<+5|Cu01s{5o3lQLL;Y>22EeyBt^z3IG0o&!C z9Hu1Ik+{L6#=(~8+O4~R;Nj*R&j`D9f-OsV9)cdfF!-Y(M*gqzrmy_GOW8jxJQm?aBFxhQrYDbv)K1*6 z2=`Z7N|7yy_{`U82Lzwsyi@yZH-l&gstN7wN6Em&o#{(z}VM*C_TlY9(S z*v?LBM@sb)UV8k;C56hmNJeR^=)ensf8hF{vtgzRdAB3*ZNvz?AFWB>ct$8Wn>)^= zq3D}%L<{*98}0E;vv}$QeAQ1=9z!7i3Z`OcPGE3|&d6MFAQVC7k?&zgOde(>7!46- zrX?LF28u96kf>a+^#O1MZY4a>eCz^=#>JRQygHqZ9$h6XEXm3+_H6z=i z=7yqq;IiUo@&IBfBX+I_soSb!$Rlg%oW6Y+|-TcH$$$P>O;qVbHXcQK0v;$NPaovVO4Mwx=t z44`de{er&%0B)W@b_Jt|PU^b1aqhG>k6~dDH%}msD~jFg49BoqthwO#s3ZK64-><7 zYc;7F_*IPOTh|t$#^+|?DZM(7E^)`w9_Ybnjq9O#k*11j#&Y7%QK4r50B)Y09a~>S zE5?>(w~fKOUDRQgce3Amo3)xe4g4wwbzuV$DxBwM&#~oZs)g!e5zHZFJo-B&L5ioK<=2pG>`Z6Wx?O4a!0Ie8i*?5R2$Lz`J;^pl&dojFv|@&2u1PJBmCpIlXq&8X5pHDe$XqzmUcH}!vCYGy{ql&%fUoOxeR}3XL{BwYr4;bw#QKpU zNPGlku3(MTjK9c5fU0NjnJ5uvj4joYY|T!4MYRAvI_|wETlMH9g6(Qagp|uH2$QPg z0O?410br99bQ0vILCY&}PKh|2WDEP0R!GzPq#MAZgTdVYkb@PrQ*K}KOb-213jH#lU7k@j( zRG~w`RLwm1=$fsgtf@A&<^YvU2GnmyIF@SAy7?3w6q;;e)ZlMj-*82F$U?xaoCp5j zyFgX7nm9F}-rxPqzXgE7t%3)rZYv2^WznR4lp#u92&6KwZu<%*5+LCg>;dh|HO@X( z8e#HNgV?)aiHBT>Rr3IqvVnlAsS>BIk=sj|0Uz8vak{_RiPP6Aaq2z(KIg)ziU&?h zw>d$rPBoQ&)$UdF09AcA0TqarC#$2>!y5VDd*_CC_d2nfI6@sa1b-Vg!_`4gZU{Kw z1T`$hR6X5L?rtV2<}b zo8tZp>&jrep9|oOtf@%x=pk{i3wzU1^23QW7d>wui+*kwM_pbuuNi;_z4V45Xj+mnV zU_P~Bl8L3@m~Z%1%qyt`D`vk>HkDOl>cWQ;Q>CkC-oifVeeoo}3c~%U&+B#-wD~GObxD zst29O2f9DY6p&XiHKVp0Qcqj1HQN6q4 zq@J;*8)|)SBa&`3Z5#XcY+&k zY?>`4%Q{YFcg;0}7Td|bAsAKBIR@c@A^yQap}TqNmQiYs|9tg1_!@4WL;PE!8#lA% zRo3d-^}N*tpRt&Re|c(eCc_Oh(vqfrW#(W({KtAwj<|VpP0vw~3SCZDwzeuui{{TH z8g9*K3T>Nd3Ra_57fd5x(T}0f_GzYIHIkz#y>D zJBF%L@V4g%-p5;$ar4B!*-AG>qHIvkZ+IWFiCP_5@CMupt{u3ZvB?8(Q>gSho!a2! z#*ItHo&?(B<|+QI*Gn)=v!>-*;6JtF_T|Jpcf`T7=jM0ZaN}}@_p@dt!D+r~0sAlN zKPnlNC~lsnqwy9u+&(GUjcggYc#ncAf}+@wWN5$Jg)&E~GZWI}I!{Cf7rGHKr;Hsw z(570So3}6UFEvgJG52w>`sFzuxgWd1M%pYuIN%zU{WBl3C;Hz2khpnjyf#PNU}G#v zDcFBgsZ}hah>A!%Mxne>>KsX_0{2uAtxmh~h_Jsx!i5MDXA^k}ck3_RFr#4IC&{AP zIbEJmHtT%=h?^(D+MRI&jfKK(nXW;|^O;6u+PdLPIE(;pp1p5#)(tcg%9W^IX76n7 z^>r+07igv3CJ~S>n0oj;+MQskq(<5A&Lkr_>>`D}%v2W*duAn`$E~Yw#G}$ch2fnW zs$|YAJ*M81#38rcKx2T!xiXPh81drCX}VK=wI_kRxOoCS`@0)xpA^^~tyVdhm)7WW zp$^Q+aPwfWys1Cma|4aHj)av!7dQB1hS8?N32H~lI{w-_%Yeaf^F-5VXej||73IKJ&ygQQPumwv z{h4)ty+>|Vit4;5bS9f<>tSWk?QC`2x~e}g`0a?(6}65#CxXzK{wAibinwu$u=$^% zj|V`6qF`#}O2T&+3^1A0_#9k=&foNevBk|Z0CT7|f#f*6&!ke*elUQ@XJQllMYVAW zX_V5_l<3-O(V>2(a%!Bqk4`suFbISRH%~h^?KSuK#ldg{ysibf;sIy@OQ=iAW`y|v9g53>d zZJj5RI|M=O2TxJG>`aj%VamyC|G@!$+*jdFBezb=h8p< z<^p_XM-zy~Xvr=9PAtcu!KkKiLh| zjI&bGRFhI#_Qn&}6I0zlvH&sVEdoh4UjsO%R)#0<40kqAw|xav+!9gba0r zSurS-9!uR|;;cF8swuzj`MyoA8J(wiy}QN@vX3Pz-I_JLdsaq@m${-$oKd>^|2n(!_$G_yAKFrAi+~&j6+}@HDdi9l zRIVP-mbL+UQq;FTZ9|hbZA#h{T8>Z!MFas+9#BpV*Q?whiYOo|%JHfQc%TA`h$zV6 zfgJjqNuFaTP15NvpU>pOALQGa-PxJh+1c4v5l~qJUta#S_+uS4#a5mR>lQXDej@YQ z_FX)_qwF3ytOG-?yTDd04dL?J>(>9C7z0y*M7>7RS3&Z|Cwav%-AWep@_mBy*9n0) z7)X=d&M*IU?;&wlT6+_@;k1q$Csmd37qWlryzVC*(_R0Z8bP-sQ#n77 zk)KO*ueynsg5=lJcsb6>XGX8i0%b#@YW(|UosR@tL4{d@S4Vk%{7mZBV_=+%e3aVG zyQZVY+6ry_l#l3r>3n{6J!oFd(_Al}mfrG{VGyMwQO~jQhR$0W91c{08m#%Gcs%^7M{acaf6X=F;BJwWV<6BQMD5f_M}<7RyzSA5<{V4=h3&wK zbr6dq(K(-Tla7dq3OFO-N?$PD*?UG4u(a^ywF4U0Oh-+y*~(41u@c)snSW~@-5a)? zNOZrR(oTnsQ5`f#{+QzNXUhN%i5l4t@6jO>p-~_|`=Q2La%5RV^Bh;ra8ehzBO%vUtp|K+V^;5(3L#n;xHV0rr2LG77Bobw1#B?Zef4+P!H{MGJi zx9C&N!SeBH-a+8Ao;tFBmR z$lFZO6$_4#QXKjGGu7|cbiTeN7}Rx3twh5g0xTrqE!FG{@w~oIEu90~WhBb##i=^0 z@Q4PaIm-|=mZPY~W$gw!RntZ-(*CD|I)5<*5_@ACz$9&57%cxb zI^s5trmXp5?g~%mGwF6Eou$f2U%2 zrQSOc+A25fody7jMD?!YnP9mlKcY2fN#w>xHaYSC#@RE)kE7|h^mYp8ZJ9&Gfw*Os6O_i#p3hPk*Zdt5?rOBnouF7*J z^5Uj{j#f>B0!#xE)xP8Z=)5I3s_GH{hELn}Oj{Vi*7!x2N=xYIJ!mv<$u6E5aZA>@ zn92qr28i1vdpa!(`*3k*E0YGlHM(kH$Rk@|Yl}n;d4Ud=0`Fc`nZV>$;X^lmwA#B`0OZj=4YgxD+_;(g0-NO) zz9CsQa?ED~U`K-#u0dg_?oy#*N}Tn`a<0kAXcGa2lt?s-anB%yw~Ras9L%yWC;lKq zo$7uN7>V9*t&CG3V=+EwBi_AvecLapWxw4Ixb<^6nu>lzpW%9)|4YJhY z<2(=cTt0)l9fPXosS`uzx?_fdm|?b*l<{w_H#<7J`2?61q%ch#;qSX@dSxn*iMC2; z!|7+Kc-7UEKi_}0YGA3%7e^^@$&PVS9Yxnpz5AAN&ig-fQH=@>@{Z*wh$GBU_Mbb# zR0^->@z@k!E23=vG8#aQxS}&mX7?LLJj8JiZ8@R}PN!z5NtRxM3kHny^K^6AA$6Tl zke*`{S)nbGx!A_8?Cb48|JpaGbp_g3B=35jck1)t<+(5K2m69V*YBocg)bD`$ zVXY0`*XR3u;17xFpKFQ&ISjimu#Z;csMYR`a_SSx&y8?i4vUK`qu4~1?k7w$6hxt~ zs-KnW?adFp*C$~DNQgwG>^f5cO@{6T`DV6%d#6imch!p0VEWvw5QEbbAXp`Mh+dLl z>%oaS%A@CZ1*hBqVmDL%)j7GpnvNkS6WwyS2@E9(41 z$uE1^7^l2-_?4|NJxJ8)ty!fo8E3Xx@+50{-8+2ufdjUVe7j$b{2{Q2L=}J4YYJ*A z)KnGJ4G9yCtuc+0Ua%ypf>XrJ8x+J?$!UkW~E4vyNHt%eYEdX8^bAV=0`UD}g=nt2M?L!$bA_H6|(v%DhOsOf*Gzq z{GrRakeYyQqTXuRdUuFCcn!}{i@_3A?*G6vx$RJv1@4f5cC#JV$9HUQh>qWhUwVv) zAz}$=k{dKuDrT>2F;b%DX9D~MkFB&jO2&FyU#H(TtFN4_K8Mu~NOXQp2Nc9)DUYv$ zzfS40vNP<#k#r8-L2=bV1u)T+2jxOsOaAT9g$e3g1Ue!P;pw9aAUv`VxaUL{qST_x zp%!8WJl%Hkzr5V%kKImPR~H+#vc_)|zH&^(@PdimQVQ+B*cVK(#l5pN9PuF0CE_@# z3T%efU1rI9n*Gl5``wRh{1NOS5*@?Oeo!D|tR+%~dj4PcC6leYKW(B~FRC}!eo_!K zY=M0XnUnU9JC3MtBs4KJ6*rL~=j4-1d7FSqOLn`OfaW35<(73`;VJ==yIj>1W9{%< zZHtGxx8g4aFCH!tvFBlUx5J~hfhjxRgsX+8K@=n;@IWW zo&z)_%4NS$1rZt<=bI(9?1bSvdM-ZRU=!dW!D4g!dvvET#Z4m=&~&NT46TgW7OO$O z3rWSWc#-G=Zq!_ryxd#}r%1K-XjrrEGktO6`h6d}U;P41D*Ib4G&Z5}92DyY-m?f> z7BMBF%#cTZS50hd1r&24d2IjmysKf<4-gz8(EubZQUOeMz~;cO7CCDjREe(`Q^6;+ zRUn5!7t(S#$z%!xv&YIq|0Wf(Yd^_#p)}32x1T*JnrWss(mCe#+-C~HCdpJ?s?CFSdSkrtD1z-Bc1eBnF=8Em(26y&BlQL@h%k@G@xz2U*X6F zi4JFjQ3~QvxSw3;;NKLNXRmbUw)#A-0A$#TtJv2E*8bzDR`ZKg3)e{s-bieAP#Ua?mc`>E@!Zek*{u(11i4+f=A91`Wpsxvs6h1?EL+JmSb=Ay@tOoQ2^r|<-jJ*&jyUl#3LZO7b+`LFf)rFeuQ#-XkzTw z``1!EAv@;u(!K3t)e)5{%=Jo-`O7A|YL42~0g&>&d%Al1&-jeZzPNp0_MhOhkm$4* zS7?AGQhC0=8|Jmw+~*x1Sb7d-9LclhJWYlmEL}Zm{z~2sRm^BmxBu;Ag)eLY4L7{F z?sVy_RTj_wrNBFqI1AVH6mwOt43oIMr*`$HsdDr6ye*NKrJ|C~fm&KOTTqH`huZ^O zNh998KIj}6!*f`~Nkg#3Pb-ka?f7_|pUk;e2sUT_o(rCl^M*V4tP1CQyWG>K&c%Ju zXFcS{4M@~p?VTeVH}dQiD3|upWyG`jr7r?g71$peUUz59_?~f>1)Ky@vjnnT{$9j` zJG&D51si$FCU@tx7ZwW~4V6rG8#fClM{jXEo8RHakS0^AQ~-zE>>YCYnD;xq3qy@W zwe+)10%|%q9jnihn)`juV)WFF_rYO|0g2kpueLRmce@&LOK*+kQ(te2S$QB@zp;LY zz+aqHX3EVn*$cR1XLR2F{Iu^D!R0?Bnk)-{S3r)bhUfX%WmwyWhNf%>EkUBg`P+U0 zG}dI7*KLjn8^qYiixn(%C@+65FGCGrfDAr6X+ay{35kX}m%kDC8Y=O%PkVH#HMT{j zoTZ(DN&cl_Yi5nmqPD9dT>yea?;PF#qkL^^M0<{i+Jc9F=zCRM^PNtEh!DhqRjWr) zPGnN#0|!9skW6&UiU?pfT$1^lau7-EQ1{*K(VhYo*NI)jCw3T^P!>UD-!(+_Dk02Z;hrxLsr})@~`U z&nqBzIxAOniHDVpM5P{ohX|aKn8cLY*!j@jVrWTeK%#~#xU&cuFWJXgoa|`B|NKn4 zPlS!ZXG3`b2XN}tSfv{J`28X#v@qan=$*ol(uMg|FA+2adUfW?wzr@|J;Ut2KI73h zeufc6q8d>2FhRAz6Vdgk?=!EOu-~cbJ)N$l14LkG+hw<~ed6q=C$ByQtRm5ooiQDndXJ)aoqjIqU8ciS=bugB5 zz6%(^>@@U7(ORQWmHKU>+-xULrNk@zl&ywSG#T+BVXnawS{4lP%9Na+rXgap0w$vS z@zUPsVpdHLHQ<(|fL*C9&)n_qJ$6R_rS>E;%X-T*cfnH^kdT8EwQyTjXC2#l1IMBOOJ^69%<5G*XJ5zIgVm}?p5zD1xW+y9=m*_L8eRP za5$T9HjU#K3-wxZV@5YHlSsj2XPtZkfbl6}q7r7mr2uG6)K92}gz^6yX8_4;v6|SX zMUMJJUcMbh+g0LYOKvoqaqXhY6g+$jo&Vuvp?1>6@2P3Q@E(go zL3NQDX~N>+?!DImH$CHlxOnfO^E+~4gMttO<}7X4$PibLZlaIe)F7w=qEaL}o$Z=6 zG7PCToql=pJX{3Y_9`Ih*DFxMgOPw#SXIV0pqDyZe|EtxABoDh{&s+}_&1zR?<0f6 zpl83ZgO(vt`Q~;7sC4$2-+gbpCwx!f;Al5cpCK@Tov8Br8!frVhhPuS#XS80{Ir6f z*Sfc8;kpWt1W8Ym;TV6QASI+`MD_Msf_}Jgo-{Up_NBLc<4x@A;SBM5@$gO>cYQZ= zq;I%h&$U!bIXuU}kE>?!gF1Kj zbMaR8{?BWwX2By^9xOLp#zPuhj{s=2qBUZ^{geZKjzp)n@xvNiG;?ZC8V_d-$g2b> zBt5x;!tPSxoT(YnJ=x;^arb9N-+6bcX4{@e7rJHXD`tF683z+dGya!lRZeoi)Q2Xk9_ea zRbA-(HW{qJMfDWr^%j@vpU5ChQGB2R+D)d?ah81cwn~Jg%Xe}N@aXi|17SwIIV2e4cJJmc$9%7~T{>J;pE}s{=s#}b4jwJa zt<4{@H*ToT9@|to{;7`jZK}E_=x{xq?8Ub4Uwf5rz@J4xwsBtf=jk8^R#>3WR9{|A z6gaG70Nv&i$4^`ubnQNp&&!djlbvz1$n)#3$=f9jQ>058*f00j>mRy?NX!qs&Ldk z|DnQx|BdR&*1?W{1b^upa9yg#UliY;&zs`>u#pN#b+FK=0Y=xgh&3JDQX2iaZ++=7 zT!V`e=cAqXgoyL&PI*9td=!7|u-nS`d%+cNz7h8yC{jS8tD(&Z4J=!N)i5rAb|5qG zGAw*>gk-f+jeTrsn$@f@3$~I- zG#k=otcD0%=yK?$Jl8@m%nlO^nal#0TP`Kr+KP| znrbW0x79Tt8s@q)1%9k@IO_5(b9MLk{RrB{s4GH=cNws?y zL!!&)A%E3@28$gqWJq+_c5RY3e9pU_^u95>V-6&Lkf?+c;SgO}t8uVkp&NA}zcTod zNlnWNjDT4HL^El3?9p&DBrBA^b5FD6ot{;8V80Fk+RMK+CF%rSW_=H9kO|O4y3~LB zlIGsEWb%RI?zO+`dkvzV7iz@{18R-FKC594FAvmi7ScXK(V_g!*X}&%=a;pgr$Zqn z|775e8`rk{2by3Z(M0@LR~pF!Pw<|Px@YaTnfJlML85uknvlk-YNc9A`BkldpI)=q z3fgXM1knba!3$v;WTMFmhO(GlWiP4)T}LZ!)G?KJ z)c{fU9)DOvO|P)!7n^NX_9Y6DSBlypPD34GD=36Qg?xGN4-ui9qhQhHQ#`TX9mfTFXaaXWQhFU-Hh=a(iF7)F0v`B)W>nRA{`VB4b>=`SHQmF5Cc( zzR|dax6e51jXcj&8)=O5wCqvgx2oxYV}|7)6b zSvG5-4UGU-K#%QA^~71!(7m!jg9XbnhJWHJmw5bqmz^3wvc+y=-_7YgcYcqnFjPp? zo?nED07WyP1Tf&uyC~vOjUzYg>HY+)P9!=7_aAI5uZ1}n#HdHnHQ$@Ff4`Imf6I&5 z#{Xt}{4&&aBGFYH2QTp|;$>Q)ou93e?^-=p7oIf2Ae^e|l%E>Qb5HWlKGO>4tv(9l zjzq^k={JqJ7-+#(%HAAl{-Cf{oIB=*L| z*lPzgB)Y(>?*&AsXE&c^v6fo+*ATvY>*bOEgZ9cu6tp)yXs+mR3`kyQIg1l4Hhgeb zuSbX83u9Pc4HVtG$t;y{Hyy@xBd0W90J0-djmEd{boouC{Pyu>J32M#40uS?cO6gA zI8C;g7$&cyNA|_DZ{!Y!>;V#0=#&xiCqME6_Q9>c+vWfRheSb+Tk`?TdaV?RW?R6tP+Mvm zuVJPX0ca5v>TpHw@WF;TdtuXqL~;)yHQlF#$vp-)=9aMj8o&L$AW#w{IwP@9Y5ZkY zn;{mqv3>T>&2QPJoz>BkoLSF>8HP&GGnsvj!YEp?AaZaTJ3Gvf5bJx;VE^WQwl4xv zuHIdYK+%CJ1-!w;!zx-RFz9svOLej<1wQ-*l)=vVib$|;6VI5JtVO0W_y>j} z7KIwV&J7h6m@ToJpNK_M$AR%iQZ&yfqdzOJoKZdw6&NYsuMy{$1AXNHtCbo^qQ?(qYzt-A(@NYqQ`>_Akf zTkce;%2vUCtJ>Jx)V!_AD)oJf-qBc1mCTG-4&+DSSA90>B^8kh|J1u0VzS9z=ztf$ z*nYp==Ac9sl?w0Jsi3Boc26@oO8F0^8HcRCaOEP5CK6>eZwYkNOZW>(O>p>@1>JLgM+i z^HV@7w@W6!$1SxYl)t;aknla+2SB1;as5|ehGCG_t;ge1O%hMv)CYi&sMk1j48h7I z{?(G;iO*c>4>(BFYYhE1%#b`zDuT`_{ClzQeY~~n*dWk9`10cIgYUu&DVDq{cKr3n z(TCRhE^2kaYX_-;svx}*>Dc%>?Oe=>pW$bw@z5ueZRJxV(~k6j-3<~oA9tP&n|~pq z6{qhuz7!2H^TG?-pO1xM#fvoz>*z6#;>!e-kFcu*HQhlPCTYb~SOe=FT}{60;osGA z8|sr2pgb*=?~}*1Yg6I74D(M9P~TK1zmQgam1`z!g6P5<5FTzY!V6zTY={0tKT@$jQzxBS9n1#dPQtZcs|w*&4a+ zaz(RFuvn3(+mHk_P_8l1vhpb2#*J@>KPAH(DI*g-|td);H^cNhG=uZtJ2mnrbN+7r48}?ZHCI;ql~# z4{irQBzj4xMU)PT&spZC;yva(_Wi08ZNA^W5>S!oxZc{JtK9TYUZ`MPH$MI*m~SLH zj^WWde;Ia1zzG-UTStWGi~8Qjy6KS6)$RX->75SQ*jTD7`91xzve*S2O#N+1cT{`zTppmV{di8fNCjXA3bKR>TtL_%ncG% z$~kZhp{hCbzJ>esM0k+Bx8J$|LDT6BHR>mC{F|3$*6bgcKdOH>`stj-IP#0@v1>9u zS^SZF9`2YM&cm>g)JV;NSb5_=5w~#C=wYAs?dUr+4~>^^{)3mPexu#yB`%yiAgUsl z<8=WOq>?-f|4o$ixx-h$6<&+`9xt8H6GL=Vqs>ubVuv#!15XsHE&Ax$!>EK8UvJWu zbNnfKAu8>uB%LqVb;851?33EP<)7XG6B+5AP0CqJTDUy+(ePHx^Jy`dq(If_I(zjF zDtG1FnjG{1tSuxu9St(&jn^YubJT6$tGgGk1ua3M%sI2<$Nu6SSGtas-L2Yl%E`EF zUBV1ViSl3e8J*Ss1U^6K#4oziO`~*BqvWvrts3(V?HcSpySgnKucS18|Tl&9es1+h9rPPYHpBIuSSGJoV@l?9S-tL zHfudK2d{Nz^8oe_NRj32#~XFO~G>Qj87h3NIQfLKfn? z--W&d24DLmQK__va?ewNUB`tk(`Eb{o0FFuUae}Chza*zU#ieSv$3>}ovN8vP|;NF zg)M@*YNk8njaPXdwb|QClFx#4NOTmtkJA|&0<9M8(6^c$3BPjw;iw9Hp#!@)Qrv>^ zI&KCemZ3Fq8Q0Ru1FyO_*LPLx7{frj>+u4+@y`G4xuQ0grs4k^6Li#Ao1+kJF;`lw zR&N96zb&L#_DuJ(%_jl0tv*qgyGRKxU(N!e8F}ZrrxDCv0UWZ;kJt&4?*1pe2xw{S zJA4~1J0E=2_xAr28IaO5`i84Ol+;fA!~zS#0@w8XZ%6e-1pNXcBADn6A$ zb7Yk(!wv9CinCBEgMA?vPb^!YO3`n1xFN$~FXlJ!aNjaPr-6waD&-d&!VUGjeWhlD zsFY7_1Rx)GRaBo5(h~1?dRb%nSa1`}aXh>Uew@xuZ_JP0x%5*|a3p#~W4s5bUY!zd zKWQvkIlTQ7p-}PzL>=PHUGmA0CXt-DTYZNYpW&spD|@e7JmqEaXz1_;v&U5gx5L88 z!)yj!(zk!+#)X1k8+(VbF!JTHIN%V8&S0}cZnPLH_7?Es&cE>z6LIv6=fz`gynvk@ zYO91%d;wYm^h7*kepEO#Iq(S$FCP8gAKv$L=jc{Y=YT}j<@k9wpc3*0z@s;g#E_JZ zVc)B6z(k1bE$qy|n&f->st?ss{`Oq+2yAy+sv$8DfI%^HXnc46@|4LCFd}I~2-@SS z8GgeJm)daF5P+sRvQv!u|;SEF5Nh2s!)$smg2oPYLJXDOSSKYOMWN! ziIz_mz{ME@5=FWJNZEl707yBNT+6aooSq~u5Z$H)S48+G#pzj#7ykV9Mr?&|t8Vv{Po9FMc&@h>!#0lf@?w*xGhVXi5?4N4G-w^X zv(8~1*0PDmSIE9XHjw1C<4lgl1KN{s9r~8Sr{mE9j@$PHj=?@HF;OYuJuLFZyRJNV zZ7uu}i;q{3SJeFlwlr(^Vb&~b!T1!jmtL*EjZJI!_p2pvEbVVZLP|uf?!M_{X?6_$ zh^2wMyTtTa)|`x7t6GnhlUbAF zy3IKn#0M!f?(lEvQ=Jj-rz1l`yuw6chA4O3*iq&^!qsnMGI*DHLN{zv__4$S0rafZ z{P>@5wxRq3&jfe{t?uI8xVZ+xUK}AO?9Kw>Jdv2#gX5<_4IKJU8YbcD(_Lr8Z4fIS znL>i{RxwILhS~Li@?Zhow0RFGckF7>PI(%y_<;mW%;?(HYJiD1Fpks_itwejW_=vn zM~oyJW`eri7?wS#LImgK19y0Y!k?VcBp=|R{y!h0&gNRlijpXxVbmli6h0ihbJT=AkhW_ZJss}P@5hE>FJ5k+|%ae<>!_+iB?;IeTGe? zH_ubq$qk`L?y>(lY3+QF3iClK1S!f-ip8{`vob6)kGBBhfk?FkRkgp@J zSCFGYaPMSy=Rl~n__iM58ed!p%1H%Q1zlLbaIM^0(r1^>%WIb-v0ZZo`laMS!hIOf zMeTkdF(KZq++S6{-9DFTC%|QiiLI-TBt#z&so0HYq8D-Indn7z2Sf07lSsThN1H;r zI|Wz|^$)WbTeCIJQElp{@OczkQiAYzgBD#pt2k#yae>DEJlRL%aK1d+N0&SOws8m0 z1Qv2j@Qtdb|ckQ{#A|lcIX0 zt$){Ppu2TPbmx)d5fJ>bc$jiG3Cq}K*eu%&dvVb}(^MUW?r4{u;1TKC5gDfl52b{= zBVmyk9P=mt11b~bizg}*2Mu6J(C>U)T^@G{5~{INdr3xw6<0eFz1QirGim{xv0XN3{?Zhv$_}MFi2ug zV)01Bvhf4K3&J9a@I?%LF_o;)wO1IE0LStY zi-}xLws8F5<4k8^cs{+(ZI6Z~qe*CQMk#Jcs6yMpSAA%>%&;-My@n6?mN7CUw;xmJ zur7)sQ;r$pNlt&J4YPx<=+B(i)2B$q{kq2d;nun<@aPbx*!5^G#m>TCx$FY~%mI>c zh*7l7oSNThr60O-yuD z#nJX)8doRhZ|M|6TPT>w^CdcYv@yWZeP*EGoYWmmq6jmLw;}o_pgk~bA6H<_&d5!- z&B{`fAO9m<%sr@x3nX8Xbj@Ps$6T^pwKPI=M8pS-7<_kfwy$?14N=&75F-c*4~Q8( zcge_;Amp%6LE%KqxQsO0{i^mHB8Bw3%v_Ta2S54><6waO;K#Ay%|?R}oXc(2>|X$4 z8w(9Zi2W4Wvx|#Vd!mf`%qC`)oKcfsW%5}c+LiMci7@C}Q;G`s^UhcCte00jY0+P& zDh0^(2WvyG2Q1%YGY+6L8+zmTev3IK$O3V=yL`qoMmzV`&vnBNtoZ$xF7Lg`i#BokaXVcvrBR>^;lJ#zOJ?|`9dtEDI`qy#x=6K`2)y(c zzr2;MpNYO>@2>t1cGS~MJ%v|)4|*aKs0xdevJ$Mh*5X1f>_%2zWImQr*1}(zI5Ac@ zFg&8y;9640%{F9Bj6O^WLYl-Mj*8F4KHbXx3pf4PY^OZC_RfW|*=BF9yLdf)zkk5{SC^>2*OMlTR z>QKZB6-H%zZkeHoDV@4Ix@y|U=R&7H+qNn-a(AWm;i!li0hN_$GuuR@-P{$LF@lT8 zIFepDv;B_|GhZ8CX)_#*usxj?I_rnc5m_a%q1m5(P?a;eLul@{O;z@L%%OQtK3M3?cwnBM?|4 zAXpbXbl*`8nHxcz!cVqEm{M{utuz54VbI+^6CTYDu6xw0x^g+ zVi9Y^B-V&ctjoIOg<@S^cC`wzyU2~*!T3E;AxMy(gL}g79)r6kL`HUt>=w~IqH98r zZawioa%M?fJn+H<6ELEQAyrT76)hC17TIU?iPC8#`OoNQDKKNtp}GzV@`{?cD~Ial z2t0LS8@#;QlR-vhEkx!28lyf)2mY*cxsHB!(yU*u_obL{{UT+T&20vuzFyxj zrJW~9H_l#YEwHJ2TU644MwLst>WORZo>l3DRXQc*h@tJ5-dLp*bmQu!iVg(D)aNf4 zM)*>-b@E|-M87=EO&@mC zdvI?#;ga|uMv1VfWF=3W*PHk^gP47St}oFkqL@Vd%(5in6l3B~>6kABguS%sYwkJ> zC_$OIV*L(WUN8gPXf)4_}$wE-AEZobudRpE?1^`x8)Uu#JuuX{m=_AGAxZG z)_-jF^ki%HY-_q*HFby1@yRRtVbVD!1Fq^PDzNk?$Cxe(r03B?M4EMUINCvz@#lEv zjH($|ZTPyGV1O1JRe$)*(H$1bHks9oqIbJ@JJWSIdEhHLsX$-FPUrhmMpNX2yxFVc9WvZX>B1&TUT%TT%WfUj{&Zm2zi3R)i7o3xwHobcd|_s>)uzd6N2Gn>2t8N{ z>@Oy~P{aM|!Fmk$GubCbOoqvs?09W=pyST7zG{f89=?8o%rU6`zH)9Ibx9G{VaB%V z2xvRPvF}YKy(w7m2VT_W$QtJFeOWivbIalPR`||>mS@4JTLs4#+f+R@BzJBIFt5?! zfBSt$uT9(Kc1CrBR~G8zW(IoD6ppE-tM&==k^hOJ_3t8FoP(y0p~SS}@4=2stvJW} z!$YJ~!e`#n*EKO{U#oJ)SzUbvk{<_n`)Onr?6aBU@Wxo$;g?mi4k-=1y|o@1Sa!W< zsfz{_r76Pa7{30hL%&xZfcU<$LG_-!HqVnK8fieziX!PQ%rT0qs?|+8WdapsBA+-? z-}O}yD_D__?jjxprD&!)PcaAZWw}K#QwA$dk zUoc;Ps#3Qh_{7(kW;zPRqLn{3r*Ss2?^#`_8fy8L>vgpvYR5L{>W!!cUTpU1e&F=| zWb9!^(ZWM>34+AFWb0w3qts-=FIO~W$$}qsU0s$_Y;sC%o0a)Z*RH8&JxId3a?PpM zO#MwaNH9H*zJI6pdmwh+BR=JN#et!rz^9h$hYL9~bnS*exJchx*G{xQ>PAWuhd$FF zcm=pyE6Dc8l`RU|f!|WyV4d5(;q6c8zSTpxg8q=C6}k>X(JtNBsoRI!!DzxFjY^Nq zD9EuFLduLLKZ|Ps%^FC>&*mU9V3ICN$|6hyviA>t85uoUHzLH@KdmeY$titnISMC} zm1&epk-jNRhTwwEKA!jk4IPs;FX~l8Q{=*ndU=@m@0aw_Ffk?H8lTwx!phB{BAwzY zJkB8{d;6&B~F+3c!WFmxt6Zq|JukES==s{4$UhPp}3>$)x!b5~8ewo1~Z z@&i+2exh0DFPO1iN)*?Au>a~ON?sBO>5SLsW8wj6@np;q^#v*N>=9<4RHTq=*}6u2 z#ZjicWYK{R`tk01r9sP0Z&LgLqZBBptuMssCf(;NE?Ct!%bnF`dD%-lzj6jS<8yUN zdHyu-z!~IxF;_=}oJo79jjW28{%nuEsga*lSsxxVbVk6|s`r+-NStZF4*`J-*n=`q0MD8|zul=585qVFp*_$7D zBci}Qe{aE!uOf=ZOx;^_YFEVUekDU^?>|*FxA~Nzb2tAHG4J}|p(TsfHL03^GIZ#I z8KqSZY}XB47`HZ}l$;w%gPg02U~N^B9pMab?#vUyn@M{SEjVutr>9 zjrgE7-~?;L3#|b+SR;OD4LHIY@kDFD71oF^tN~~6cN*RdrC%WK@DGSTtPzJ;BOb9X z>#~r3E-&}mOT(Lp*Pi$nA+QNS6B^!B4Q!H)lhqy6(rUv1^AOZoqL~E!&@4~q5=e5< z^ps3{j#brPP_Uko=-}(R|FTY{Yf1Oo3TE0=rJX{LVfFR6F88QS=ZBy6o$ekzrEM=7Ri*0fQt*fUUxY7TB+m|I6xR-^guXeHxhl3wziAM| zjMkHBJ9HgsduyI*-$;<0yR*~<1ZkA5lSxhLo8Vh6-iPEoVim(C@z+5Sn*0c7*g?M)YFV&c%BA}HayLwyDc=*@fl`m zI{^`Z3J(@wlMZ1m%VFxu$y*O9H;<+~Gln#Hh}lBye=}>z-$WN=VmJf-V@UbK%z7q? z4|@c{!~COepD~ISk<;c@$ku2h0O(=$ zEirPyw@0tTpRYS^A67-4WBiffZrnL`AGudCc(=n>C6suA@gWP>8X*0F7~1&_Krtgm zIKT^~X@5>JGaB|TsHWUgR=Jy~M@7?Bi@pWg`PT9GV~UH$*s^2NK&NrsU68r!E_0qKoXy$L;I=98e_|sbEZi^cL0JL2Cb; z9?tyCxb4rMMl!>trZX-GQCrG-OIcviko)_$m|($v9uuo?uPKC0PRHxJD_NG%un##j z22Ab51pQhA9n5_N`W{N}xLtet_(N8GxXR<;e5b=2ka@U1ly5piKUe6d=RC!+@yqAw zD+~chuf~s0w#Wky4@(OYHBaA&_|Ek9QMUj2(8>BVAt7T;tojh&8m>PjjO${uUU6Xo zMG!wOMW4e__$xB?iqSRtc&ByxG$C_Cbn`(TNQo-OIxokns%`&=uD|2Hnd+{??wRE# znpQOD)rl#7;Fn{OIzkE75^GVm`d}&B72Py9lsiIu{?I?9mpVe2^hd=p)9=ygg46ry zLS+XP@j!x0b#kXSqD<$IX0Y@aTs!SljERz>n|jp*I_d!v*%qz9#qzNr4cG#_@ zZ9`f;8E5rcRnN#sTwS4&Zy#swks4OycsLtC;+HbLLFB=Y7)usGA>GRU z^YOcC3!}(FNJzND(aeW>Gf(Mgcqd@_gbt9&;e|zNJ0-zx_Z(P7pP?4sp`K&NE=YHL zH;)-D3TZ;W>X*+Ggi{;ErzkldabkKo0wQUCTJq`h(+3KQl>p4 z*EUzp2&KL5N@X%7y^gdpE4zrW){TcHzR~_cwhW?*SisdGRk5lY;i)rlYYNj{G~4Mn zqo*-s7Aw(h_4375K>U zzt>;yEi7%mxJj?HszJ&3%wCb52TVygLEIdr;Pt{ zux=RRild4o|HKdeds@RBwI=cDiiro*;Hga4`AQ6)!x_3anGP;80HUuOjZXZrQ;$ce zGwA62qk5nde8I=6jptM3Bmn-Ph2dZ5s@uUhhFmBHeT6^nY}Lv4EH2*&h}lR?4=Rc; ziq&Zk>d%PsfS>k|K7)~%pdJ~QG@7kJgt?t6Mg1_M01h8fH8APUg}c=cZaKa)TCeEv zD0r4(h+I#8PT<9{FO>iVm5|g^>a_C4Dcwrt<+oThCb~Ue@y+AFZ-+6t1 zA8I6MKJkpaxK1LrShFn@3b4e|AMD*(6K4UDZi;$$F5; z;({l5g;Gq%*bCC_>brg^Y}&HYC^W6|KYZaTOzKs~)O1Bkq`)-#(!Aa+tH_Bj&40E- zGQ=NGQe|muS=?{H@xPHV@2Rh*k@fE}x21*1$Zbz#?@y z60L=W)?zj7PIc_KG^Vj$hM))UXEHe&ETere$M*Gq3%D1Hw2zo#8*E$5S9`2W!e`$BT%h`w%!y^Qa9RDT>Zi2pCd{?9_}WfZZ4oE$BrbZU#SyThpDbd+-L zu!2&nH(a`;f#PB%aocX+H_+z`f_+{))zvPaYB3vd_ie@eJ4foWmVCtDy4EJ@_}m`T z;gZWMmpVQP_S_;k3L-s2&GB*PmsX$tBUo3lqA?j2;@wR0b*mdCdidJ$+?x%lB>QNs zvRZS8IH+V#Z};@9B#;A1WLms(G?(g(x8j)x(Q*qmPEz8$(QbWg(UZbKId z>Aa4FJoOYv%;t4e#?iHvDG=`^K-b8LfXy04#2o|Xf8&NzDj14szM%C2l zJNgk4HTA|F{e%wEPV4$!t&YxkcmcSY3&@#v%GnhZS&{AaV?;qrzj?lseh=rgcvm+t z3j6JYd|J=<0X^FNyvEEx8mHy(HP4p{Uv^!PKWDAh3J zno`DqRO4P0;ubNB5H;O{^c^VKE@s#;ZHF4(^b6Uy1?FiB>E_2OQWupVWqxcI_pyfL zBR{q$rPd>p*v51n@BQx{8A;oNHt9NEZjrShtq30q}^<9D(gnq%-M~# zh-*v%JfmZkTtp%NW{{rsXQ<>@9+uzR0i=e7N)Gp^64DZi!OBykamwhk`dcRHNpy&J zFwJh~1B2LuE&?QH!`O~=Y>gVQia8!=JwF-1n)wGBu$e+6)u**0I6QFJ11yCk_rY}^ zyb8F*QVWuC_M%Mn!wUrGX;U*9g0DFdEc(9NKJWhPN6^JbXa2;X1arge=N+ zY%C><23;*ps9+Q)fJ|mt#i)cfMAJs!U*9M5Z{VB1$NWFYo3KWPQdLAZR^vIP=Kf>L_k+Q^pUm&ZDw)!hh?ytIiEeDRzTqLlpB-R2 z!jOpXjV$rrW%MP7AB9+RRIs^_tc_%6!IQ=w>~R*Jyv%pcHdg9M(sYg`^ZT$(#HU7( zPZpZm$K%=s#jEodhub3xZPxDf^I5I^{D~pw;`6$LAn#5F4q+7|j-nmH^dV0UVRQ7U zUnY^ihOmz^I&vwRT_~hhOP^{V#h#!~{Sn39a6Sd{Gv`NBE2?uR4sGAb7bw_QPl98) zrV5KZ)E$|%=+0)II0-!D6*p|w-Kmc+<-t9HRCQzm#Ij8bFOiJMD2H9Ok6$<`oSVjDg>l# zs*5_5NNex3`x6ehr8ai`ZvW(Yyk64_<;-!p^9R zR|0r_$e7RADW$72FHfz`OP#jx!My2fm)4|C zo0(@_kXtij@Tk1BDM>Zy!Cmq)2KK1Q_}e#cW>DjrnP)ELW&ZU?jqL;P%d@_3l$!P8 z#mm|6{hpfh&}Wx(H-3?7zyGz%c}w0-%^&W#T#)`uYGM20%SFQ;NG)!#B5!v1nwr^{ zit^_A&aavK*}Zx5E>5j!T(YfS-uzF8)GTrDV2wD!8u5fR z;tFfT7uJX~tPyWmBkr(9{9%naq&46XYs4k30iReSPNC}Lg?Pm;5Vu$(ez8UzV~u#m zx_(?o;-7)e=mAWzu=dh5p=Y;V-THKogv7;&ZoTn;a)nI%CUQzyy?p9K?i*oSK;X=( zb8|od&LOuySEpi<@*r2_;u0!vzyE?=D-*9M$|-+@TYe}AgV=2t**%_92mT z+7*A{UiOyoCA0}74zTn^>G{jL-v|B*W+)c1s}Ybuq1F}UkBa(Of5ZPjxSr%)VduK$ zMu3R-xhms$9ymUh`9E&|$J|bFoIx4=Za6(L`>Xb4pMvJYB2wm<91W_^wOCF5y3Sho zK})$8>lml-7g(5ng4-suDKKzBZHi@e?AG?>lQ;Tr|I*L!@|UMtZvX1y`Ik>`zrFp;rysri z^>Z!yee>3j9f`fle8{nQ#t`yNAFeGaf5Y5Vu=fzaQnAZB@PplAja}0ky2l!afHe*S zYa9yJI2^2TNLb^ru*RWbjl-ig3=wM_CaqzpSbue~^?CXQjv2qeabt~R#~R1af8Uo| z&By_0C-9S(Wn^4k1NGuZ9p70Al)I8#8OItdu@;*ZqslwELD>+lReqR-4C!XyI9n}BF~Vi8OkvS z8m3fY5vtGIIzD)bdJtsV7)~*|DtapD>{C0XbDqZ0z{&7dO_xb2a2hKBpK`6}yr@yspjYVHOMo&gqUsrDQ$K*20@9>4CqF1;ZfkC$lfzQ; zEsbgJYHq8xAGov|&0VF@j{<99u6>@h;4YLL52~!HHg%xpGn4L%IF3JklYK>|L7C7I#eN1IQD9 z2m($S;OxkEl8=B5dW7tKiB-(2pyA*qFSBtBHCe^j7Qc8C+p^Z70yOqP+y9AK$=w15 zyG59ttm3gcE??NhPua=ttm7h^_?X@7hjJHLjFgY`|KOINQ5=5-qG3I~cbF&37DV1ZF}=Y?BhHJ`!N2?+8K5WGi5iD(4T zIs3ZJus?DDn>pmZk(|<;p>kqckZmKmOtw?%?g$dLg$**m)Oij4lQ6T`jwE#y7ep60 zosU+I;yw``WvbZFI*)?aBmB^K5*>`&yIXoznSdy|J$rX!ov2oeA4w!-W`R|GHyiCz zdjx6W`}1E71?*rEyBY^V*{-@xm_`C=uJM5su6FwIfbrb4X)e@J)f3SNDXLFhiW1QY z^D9~gF`31n7&Jsa6;Pa{fa1U3wruPH(LyYuRh^OnC|2FUK&4LdeQZqa6VtAKXto)B z-9W?tNLU8joytW8muP|Mg z`4!`?J9XrSd}nYn<*i5GD+RK`B9hie9PJSa=}hEm$T1EV)%$_kBb&k z*u?2gC@xI1YTJ;g1RR~tU%q+&6h`r}h|@U?^7aeUw4GkcA1UHO#5@S3V!pv#Za(KU z10H>V>qLdk;T7iX)C?d@nWCxgPU8{0+Novrd9|SRZZcEN_|Bk*wCkq}^Tm*G>(vO%PXA?d2^oqw$Xn3UUh^>R` ztRAJATs}V`t7BxS~Nl}bZtLpjg z?%6@hu|7S&{M5J>x8c#-WX}W298VL`8ZG1`yNF5iWH{aO(S=-s(?$is9|ucs{pHdB z#HaPXQLYs+npcBf)1(YoGKMX$plSBzp zME6C3hYNXB;5R+?{4ocN6^khF<8Z51rm7V{qkpTGvgNWsX8&dE7RePVfQBRpK-G=~ zG&>DyaLi8;+_dl(#ggz_D7=tnm zQm^dq46~Vk)xfP}$j}gP!7U^BB{@9P%<_3AZY5qlB>WJR=`_b@@*-C0^af-ozRP#U zw~f@4$cyT`xFO&li)czDfSm-n?P_WVnrcjb%;QG7cKb9Ylk>TW5~uOCd}lUA<2!+) ze*|+1i#XNMw!+M;47Igl6rcRl_p_7TH_7qMGTClAk)TAizUTDj*P8)?n~|>j6h*Sz zT;a?1vG&@UjBofZ7}&CiI5HU}+C?kBxpy1%fklL5QU+Wjr*6E9GMRzfG1_yFussgu z?IjCi*`cIu2QJb(xX;jpC#*Gzug*!OuA^BvcEP~v9amZffg!!N12?Iba%ZCWz>b^` zBeWIPiThp;%@C$D*N>6ChIvU;_O?IO?;AnsTh_9Q=P8KfE-3x1we>0e!Ow!y*And$ zV`C(&9oIx5B}zyMR0@SrSVZ@Y?2T4tDFs)pt-wMa*E&UcNH&~Qjt6O!d~{dVr|EO` zhkc>8ROm<)`T)?>h+#4)ND%U2j)n^p*73n4tH^9sboZ^Nl3b6GBu0%Lb!@Y;Za$I@3XwdZE*h3;X zJi}hd`x40JOLG2oWj#R|ad0*FO6@gW?>D&vwbpdSZBF7{nZ$NZ8BF8{hsV2Xn^7I% zfg&%hQl>E=^d|g-)!YantMv2rTasUewq7NpzUP#}0D^yYY=^lSvHZX_mh8Lw<$JDY zDIE^%@~nFVlv5zlirSLJg+*YdfbF0leZ7+6^sL~WU{>ec`^LPD3-efLoJ?#Z-j-f{^!WFPL54`@ z-vz;HiGr-&@W|TxTh47P`*sHeM0Sua_ZyV!)p3`M;CC$3cD zV8I{EWN(qdz=vMoI=MW=!;=ld0iuD=ZMh-za&V+UDep<_g@<0Q)#`wU4!YNAyQYa@ zYf}hRH6`1|s2VY0orNX;K{)4-QEIVTOc z!ynggb3?^Fwox~^&QveB32b1#HZs;uU?MbR;T1)taF+w8sQPYkYyxD#d0~;GDiO}c zQ$rO!keg(8G)#8IBxqD2wx{7ypd$K1@;e!t(yl~7Ri~?@4E3%kaCaxYe#{(w?hKH? z8PYk^ptQ*s+h(35hi-CZ#9%X2=(D$-Y}Y}7%BH1e@{Qk7vCCc=*NK_eF;eZX+2uOU)oR7^_!+Kz6Db5E-lnMBX% z7a@o48sn|HmEO&i&*=PDQ9xNlq%_i^qoSPDN>sE}xAeWIi7Ml%NnhHcTO+MH&#B2k zltlkXBe^B*lc5I1L@#fMB!dW~%0W(tbT3Z0gE+^JvwI z7bZZz5>TVk3bZIX;^CeQ$ugwp<5Jw$#LBviwQ9pIjYj8+MZTM;I5I2Blbt5U_F| zyH4Mk^MXMsI754IU#+W+y=_|W-s=wmCkB90j zpI+y-N5lGCG`a6XMZ5`i%MQNkL&If;jp6Mze89Jiks-PLm_mnj5iBGhGsKge{!ANY z2Vc>jIjyHpk&63ujrqf^bywigAxyFB(Of#>zNeMZPs3;Q#P>+_*RRL4yVeJ+5-fV8 zlUOzLM>soYbB*CGT?-(upio@b5Ptjldtn1mk{xCJ!h~~5;7K#TAX^m|>bw#;pQqSbq5}!&O~tuRC|%u43S7X!vcSzkMKK+Y6fVikSc< zDTP$%*{;ra&fGB!=Q^mrgXm&NSA)KN4;-v`fEKVZix`9)Tot2(`c=I8QCgIC+8j^a zkpi|g7Ni~6Os&>DhRLW)S^`7W@#PJSSvnvZug(#WdJL3!zAbD^8pWbX&-77v z#?0TzG9J;BUt4<5Zx|E`-^gAg0TJf#o(T8)&UV9Q7!wveSSEJnygXI21|6m9P4{il zksqGY30s$|=S|zhj=+9|ed4uJ!V*q@U$Y-Zhy~FbYg4r-+-G)h-($1nr&;EH>H)BVJ1H+R%|`IFb$7`w8_A>^Ajkee;8-8h>GXlu+9 zni-pCe&3*>nIUt{5p)uN&S~j88^(f#PGYj!BvxEz8HR+08(XZ>=>pxK08^gM8~r2v zl><_i!Gn%t?}}wMg&PHy`Cu=y4EzR`f!{tzEYOr!EU-+hlV!}5%>WpGa%MZzmJg0J z22{4@%? z@)Re2pP4_}MKUM^v7_;-ZnMx0GsM_b4-cQ9B)~U_DyV7)Y`+-)L(Dw*8x{#v z;R={^L4^n4i$C~(P*kX*x?_Uquunr5ZcR>Nnp~W%wy^4^9sT%}7&2^x~dCu!wPpIpqsqM*qrETMWPz$H~?v ze4ZR3#SVUg#&O>UO-;&8%3R`!WVH=^;TUP#_$f{x+5UrTr_VRqy!DzV3~3W9w-Tit z;U|dYxRZsdL*AN38z&*LMy1SCL1?Utm9~bT03~92OLX%-Gbp}E#XzId$$mm({)42A z;ioo;gD#Oh;jqY_wJb)F7|H3OMx`L5DBZLvj&`xb4|$qK4LTBpcG+Ml2>5CBZcb2q zZ}m=?=BZ(AoEgwh+Aw}%-1p{)a)vPdjg1u2g+*L|-B4SoB-StKGw+*Xby1we1nUy1 zjc>ZYX$DOe8R6C}_)QXgBWSY7h{1K%mc{9XM)Lwa6Ch0TlP!&C_@?*0W8M;k$+j2`!X#W~65uBgCYaJj zh4&|qr4R6kJ8hhqJygm-_z4;h=ez>2qct89UrGjK$|k#c)#-JwCi)xM_}_ zr4LoyV>(3vfg?2)!`>K%r-0BTk3FTKMw&qiPA@LEIVb8~d-hEG%mS4Tr0eGBAzGkJ2LmmRv(}g*a(wt;Y z;_bQV>W4}EH%QL#k|H7`Th!8CGS2j-=tzFvq;x7gp=aDc+K!pu^}MOMaH-P$X(lBU zQhMYMq?wL+Q`I&$?8m(2urjfnjQZ51w0D}EIs&JwZYLW)HQm;CzMaRfJ7j97gY>#9 zUzoB<&0&)tnR?Rn5Lxyp&88);cY8xNWdhn3Gd(4RLqz-U`hDLk;6Sqo5=h{CODQA8{#K+Gfidm z&=RTYZtAUv*Z7+5rk{1PH;z!zXnuI&iusTUiA5qB@3rFX25MQ4g6w#e94<0NHCR+s zbLhDk|Ib$R^8f6+12v>3)U;B50K1O?r2`x)es-#{op8ANFKtY-0=7_v4JRw%5pIKa z2Y*8DZ)+;nLxbc<3hY{;&23n1Zp`0oYiiDjXSHw8lWm<$eyom#eGz*)ncBgQ#Qb#Q zFEk|Z(#L@T!vH8O68=lDro(N&YBEvWXvjQIW>=WDv;G&;^Z0HnOstMEkcwA~v&oI8 zO@(C2ZDTVxV=&M2Lsprx8R6-WY-5$4OnBPVRr1OjN*KQncq3>O5XLCdEyS#J;+$KT z`r?8rfa2A(41SS)kATcY;kzNkoMCj*42j%m3MQ9FvEE1^@l01rA1pn!7f$YVZr-Ff zXVd??{vaId3umT`BR9j$Em#OQnn=Ue=KdT6@4+?-SY-<5uv>3Z*4jK&kor4Yn?I!_ zmN|u+%KJu`R_Y*;iG_ch&LI3Vnri)X{ejlRnrs{gt7}d0;3lt@nHcDV1rk6D^zTC# z-5~6V|0n((%!5sIEbt`B?`evlXcW~RSuoeE#9#lOj;l3}2dR4HQ8yhs}+B z0w(qeQqjSzv?@&eR|CG?{mA-cQSW1uzn5v{MolUn?o3;gb(dvUcj*U9yxp1*p{VFM;6zi=7uHn7wtKcP ziA?8A?}9w8NH=#RqYb9T82qAxaz1&*U^+*iAaahbXf4x9w#(0;Pyb`*31lT%IzWY%R9z+xgK*~Btq{Hd2E+) z7V|LqeV1{qR4;YgZwwH$(H!#Deq#{@pyrxZ3v1AC#ur(-+exaQF%irO#W;J8S|Zs0 zqso~IgmV8cW_E*l=|(0!WLDY|AX<e*tNa`jyKIO_XbBoo-;To7Ji_9%Zn6EMI0?2v?uhe(?aM-r^;S)caN|@2ecOye1y~@@cx40dgiJmKSUk z)40K!sUTC{GsUwmS=@K5S{Z!+1`*(6-E_Q)sQryd01caSvSU{v%qC=wG$-Uefl3B_Ie zW!)|lW)f^%y0yXB9QIi+JdE@47_XTg6)y-{yA=}ADIu{F8)oN*76K(;(@ z6vQA|w$YeQU*usvnleQHqOo0lZ?28EBqYa$*ACU&D#vXJ1gv9`U_Pk;uGUo(7u0pA zAhS-HhO$SVt4<}aoHBJ4?cS4c82$m1pD!XE+zuz|1J3GalR>9VMa&AaevxU3@M6ef z(-hGJeoapXoP`&49Ls_E55HMXk8^f|x*r4PL|j`0w2wvNexz8lfmT!{G~D~k`eG&y z{w#pvPnN%HeBaNoJ4s?R@D&41tr=4OzOg&gfKru)=*=zh>fl;U@VgEe zA7%8=1|RjI@e!T$9X&8Gfg>Xtk-Z-qn^I90IQzu)C4lcGBr4yiD9W%avum_Z5Rz~F zRG)f270IR@0fU|6mlYW2FplRhO(m&C#??TG@Z;3vvUm9w#l}?(eK{`P+=s83ZTw0n zz6U`r=?~dlViYzoMQs{%^AYeN9wFV56jyR2F3roN=mEYX(|xY?Dmw=APCo=q{Hp)YP;WO;+W$d6qQ zfi6<|kj1C=o1a7GzOg;s_3kF;)urnG^ZzF8Qh}H=KrtFXGczG_EY&pb?B5oNwF}^6XXQLUxlGA!qB58TsI7AR2?$`Mxw~eQy z(In70e&mjyA(+J7GWvOLgvNa_eUy&+qmYlD#G4N)$c0JDc9AE=p0X15oiSol!_0?~Cr9)drvWA%3vKy}M$%8BR%pIvE!Sh4Rml$etP}HHxQ59wWmRUv| z(dJ>o)5oICDZpZ=OULZ*QO%YuXtC#qj$#Bfvtc=-eC*%Elkqj!*?!9DE z3WmGGQRJ_y5Y*jy$@GR0)SaGTR0{L+;PgExgpB*{F)2NXqJ@mv2aT`YW1249yngCq zMaz>4+KA7LW`4*gMxBW+BuKF=Sx88-r_Zz(Kx9)b0Qj$wDn;{cv*PNGu!>MiB<~DR z3@!avMDmL9%H#s^@FslFBbF@Tz=;bZ%t{+5ssF`~7-?=`qOiLytC|u;bwrK0|CVJ% zC$z9gk*F!x@}Cu%+E^%LqEo**PI*a#lHvbz@pUT4R$VB&F$L^iED|{u4QGMmY1oiQ zAzOn2x0OC(Vjek>1o9S_6ZzXo=5{(CSh#_IPG!|K*?gH#`L6IUIB_d@+bhw7C2>;td zrJD_;8B(~};Gbt=;+%O%p_X=lY5V_!q?K6p9&mFB^ze@pytH@mpH4NG;t8{5MigXZ z2M`j_ZWMcy--Dt3r8q5eAgTGEcY{I}m;>u~8{?;*u|Q(%o`hcZRN+3n*BIQHP3d zq2K?G`5s7|qbHWqFOG+^0i^2=v+K4qOogUFBMB_|I~5bvz;EyXOGg(ZfHF_8#AFwT zW5U7~QociZ(V3n$2PaxdFVAYV)7%qIJrp)zP&>-6@9mi`+@Kxh#7%-VJ012fsLnY> z1{`}CK$`A1cdCmb`+jq8ydn_$#3N8^ITIGNE!c`DXSWr@rhI?f+c<}TLp+;Yt z*Go<&KJlgb&z6)I;FpJOpX8gb6r*m!y#zFK_t3Diyc8G_7PLj;=2&OJS=s6*2%`pp zYg#NOayi+O3S>_g#ogZ?KF)BYEX6Vh!hqrr-RVTP36}?!ZzzYgbS!Ae#oK1gQ;lX& zTy*%xeAJB#KB&e#jv4Lh!DBwaK>dabxWyg|YT*R+t$ppUkbMYSODa&u@Qr7zjcvxX_f4G1r!6?>-_UH$(kU zV~jBIOMeEx)TQ@)_~RGMTlC=jI)6ynWpf)UT<5$xF~tviF_5sEiV8^Bw_bG9+z=1N z6zPE9^N0Q+y>$9lb+fdg@VO0Art$xP5%Wi8%F63F9Cy`P+B_!Vx z?Oc=TCOm=# z6PaAV#KO^}1#pRvS|mxBvpFkuzT}lTmVT0n`w_ouIM*_=lQ076C3xHfxU%TAMqdM% zUz5#~Es80Q6jL`RTh_S1q+h&#pXEviH<*#IeW&)EwLLhVKMs!^CoLi^it9+UMQZad zh_uLU-uEIc!zKNA+Rs@2e$*7fI%_q|qL_?G2_a{gMQXtF!z?}9A|Mca^R%6A=Hr8Q zZG}H?C3_}W6jOU$WEM!~PPR0ZxNH+9TLd3LycSJlB~qTROk{`}WwxP%hv9o-n@{?V zs}cqu*;P?c3a;kjt}@ho+O_t$llQ;uEwuN<1P!PLUn!7`nkYj?$BB|gsXGwz_~3IP zK#Ew<9dNP3Bx|0Uc&2vH2i+`jlm}3fl7}NK1rjZen~bUS$}+uV1CP@Si&T0g+KY2C z)C?}#a@=rBs(3~#flp@g#c<1SI&o&V#rER!iF1gmUrU(18tTsXkGo`EL* zIjcjI5A^E8kOw9zix5iBpG~yHOJw@sNtRSm8KVTDw?sAbUNnpamjMfgm0Z(1qS&f% zy^s6k(9a4il@ef96k6^`4OFtc$hp7MEvkb1sVj-?Xs6-$qkHmfbDm?HivBWAXN-7NQiQ0%!E2lP z-1;2;iUk+WU4)WkD@wE43e;2bKmn2d9W8b4)E?=yobb>Vny>NfwymZV=j{w@cA4^}Q@vI%i)weJtU0c0_I_rLz=KRv+hvV=u0s z`Z)KK-}mec1{w$^pU$@^9n&sYWE~b*M!OXem7Z%CSY}C5_3P^>p<-*)Xy^!wR5&GA zXTi=-Ey5{#yd}*ormv2-ES4xilo~XPLh1lXi6N>uElW$Z{4U%fF`hyyl9lY_YJZUgP9E-ssdnw|%{SVlN04DAI<%~GpG>T$r;-NkC! zQy>RbyMzv3?1zMfYfuiVjncE??I$}Prot5Pf@j6Mm_E){U@Nl0y*vsGNp*w(!GIXc z2#F?oA;vO6=2&>zwBLB3^@^bNUn^3Uo9^kzE_O`^{VuLpVj@x`xqa)uMyawpuk2gX zn2uY0k_82dYK;mIE!vW5oFc2Gt>XEORC#~$;`zrjK+a*2O3J7_o0=smWS)%5w#=)2 zgUI(e7F(?wL`XuOr7J~X|BsV`$AYOame@xqb0gKR2S!--xhI}~WuzsN8RM3g9vvky z85t6iG1Q!7*CJ8eX^;P<#AG^cJ07+uEs_y;-V=?$iI+kGMlk}HG%iL(MhmBx`^Rvv zOTB3RYz!C7#0!Y^cmva^(^Lth79hhkvRxgRsCJo#VRp6jKw2w(sN%>tk3D zQ{%>{VG8+;pS{5XyNZW|c!$xCtA@j!<4!bT2Od%7zEaKARh-(SP|f4v#TDyN%JA$M)145th*P+FQr=>k;PJq3$ij)qeX5OTg>O) z!|jAKPM_*gLtYDmBRt~<<< z`l1P6^8u48Tq#!gy+tu)6B=&J?+Vg4GSgMD&$lnAf~8z9EEN06-A7vCW;Rv(!R>w1 zQ9k&(vT3$=JJWwQz03?W(h!mo<0Qx%?c&0^-qT(VrX^g&h< z-CCGy%n5?2O19?MRn@P0JkF^nJ;vh_i^l{_1XN|G=Vn3<&iDI<3>E2`f@k z9;Hl^q9*0V3@#7Hsg0xG=%>B5;gLJwL14iJ{R!d8<5gyqZm*;-OR1RCe1$3<3|7-HaZ4n`NO2lEYnkVjTNTr_AM z{2xmLujcqQ{i!UE@*?XayqlJ4Xhgic4qo+g>27|t`M$KUQI~yGd zJ4MiJxchMiG?cY@k@a%y@oxf4T3TjzU-|Vpw}D=<1jyPs!I7w*-p#elt~)skuN0D! zNGl%^z+u*c=^2I7lVPn6gOl2ZH~!}qH`}g9Uvj6jw(*Vs+1-eoRA%^z-%Hk)jD0)@L)$=i zlMqm~&j8zqwppqwVC{cST00-u4~rc7`7OjoW8vyytF2fRI+|t9{UCAW&<_a}Ta7O+ z1evQ9`pT^(eRhFt#UdBtZNkXdPTq~Q%ymXrH^Ioq)xNDbt^{jgMgbhVt!-9Bp^b+r zdCQ2fu$|au{9TZ>RA9&lnbKZtaG1RqWSMl3{oLlfvL2PQb-xZIp}Ti8E!ex<>9>tL z0R33xv=Ratu1=bc%d{30!GflAXi6hb)fF42I`T|^~wmb(P(S# z%wiWyt8%ov&Du(JZlu^Gr1%wNNEL&+r0Bus|G5re$0DcmRJg0b3IAw%vx+v(IsZw} z<25itSQ?bdI42s8$#=GxV9zbE&&HsnwpOK5Qck2JAK{RWEg zMcWDsF(*qK%0#753KB@p*-?YUHWOx8g$r)AHTp*0j$1lN#ls?3S5FQW+lL zqSDf|D=#;s8MR4#2n2SVvL?P5b{0u!M_GJHXIbvZv`Hdkx@vP|qzIF{9Nuv6q;p(R z>EIYlk3weA%71uERjKQmDmf1ChlEUL!!c;sYHd=Q(Jtrc39uCI64wQ`JbSjF1GLC5 zsc4lWF?1@~+Wzj5C?A<|nmDpJYffG*>rTmp0#QhR$Va`s{Y%eBO`8ra!Yx>KB4Z%O!uY?r+c>;szFP%eC)ex=fD}k zBFFN>v%E;&XzymN)mtG~Cee=H%7Z&TCToiliPsfE5|Z3RPAYKY6CA-@TVBRYt(3U% zS1$X2*DNou129E$VR-rhce7CicVRfa{&lBz^rSn`EpoT_r-fc5xLVgVMwhk#b9DN{UgS`!Hj)-V6d;th690%B!Z_FxkpUYIXKD7KKYF-hcxhvp4J>jvr#_ODMxF%A7>k^*Us&aCa$E*v z#cPhmTyC>w{{jdzH^E=>alZeQ7YT{;ZmNZ&0{*=7RXoJ{u*f;;@k%ce+F#eWohG!A zJu|!m`&X8?e!&e;RFP&6o|F&u4!ozbd@ZDAxTI6G-Bzd-9jnIyOP`M#wB3u8cGorS zpmDOvPJFMje5vz2a(SG$pB52vpYUG9exW~-6r?k0L{w-p?efUS^wr=}P3TROUPUb@ zp@I``lqG=tExtQS$CxOxcoUhA)%qmdp_uO7QVVq_hCMXGMM84z;Co6kG~jQ0iK2Fp zD2GJj$^ofu8Ly^Z@T(SKK6l1zRRr5uqZq6F`PB(qfkm*$7J;s!bnZ;>vY-o0#=1C>pQ$TA}miN5jZe~QbH7#R$ zG;Yw*250l@UQ62>z!-tjR7SLZu&YfJ9@b2o6`I8@E11OYZo5>;T3X*QrJZM5UIN%~ zH9pQ>Xf3d5HaPQtzZT;@C6jEM>}>&27wGG5Fxhq&qB4GzcOW2fUQ_q`BdyuC`>k`O zU@Adb88o=GE!YQGXv|#!y+fa61*yfK!-&x>zhQo zTaC9)PqLPHXw*}iR6PUHjE`|Q5S4D#Y;LXmRX_9s3X$;2j(Ih6#028&#*ni3gu`WVw(qh1XdLQQ~|#xSJ&5btJMjGw&kV~Zldr@_)v zCQ7c3VH}&!1Z&hWrVHCf9)|z{7I`~!CNbopA>LtHT*%eod)6QJ_42|ZH|Q$U$!Bre zKzhn-xZ%pwmN)WF0YhqXwYfVTJNLZy2TU~<`E(~1xu-j+I0K^j)5pQSW{qT+2u?+* z=vBzaS5fS48BF$KSeVqTSQ<|^?_yvQvB>#w&TMz9ldM?~QY-buh@N;RQJO9#AL~Ad z2D-##a;7b>z@Da=mB<7Ay_N%pH>Oq(X-o+o~g=1uV^Etu)=hkTnCnTWM(}{N4)RSZs*2Uh8!Q@-Bt@!%dYn<^^D-<-pM!;-qlJwdHr8J}w0MiXdWvezGbcp)K9h(v4MW+J+`HO-kAnTEGwl0Rd%EUIl@o$nv2G zF1R6^EFTKUE+UH}0wT+iMFkcAndIFjOFR8@&g5{8=IPu!b7$txojdpKoj9`Qk6HM! z#kmak98p7WhywsLD-9nAc?+0oKPJ^}uXJ1+`#U0d~IjGpDC==9F<+CkxnRQWN zPYB6x@{YW~%|8zTgS?^%l#Dq9DdVl9|_%86ez2))o( z0Y%No)*CIw9^L1t{#nh*lq8rlB${=RVX0GEp&kg*IymU!-JTA+JpL!rWp~U?FRtVX_s{givLf z617*RVqI=lV6)8je6v$sF;Qv3#B%GM^l~`CLZZC7#w(yu+frf#|H@5_IrTT&{;&TU zz(k^%v7to@ZYnI82!kUc)o!-taxIkp_18K#mDUVhi~~wN*iJ0nMsQnpmeFEj2OR1t zrb>QdlEO7eE(`hfi8kb5qoG%MxKQu7Hhgr2>x(i4CB|9|CD;6;@%gJ3{TK2Z8YIeF z#Pje1WV|+vvv!(y>CoB*GC`s!duG%WzKE;-Ng8!%i(XVl2qBpv*TA0q$fqtGg*21X zook}Jt(vQ#LN|~SvlT-OuI)Ot=gx&#C}BpT%lzkg3NA=B!Dg}+vrC25doyafOP49I z36Aj&?y}J@Z1L*!@CzVdBpUHvUkUH{_0zWIL_!O*+>ub*Hx)M0jQJ2j3Yf0 zz||p9`98Tu!PJ|J%=v-rqR}_xUXZr4_nV-1NYsEG+^C=?Lp=a{RS08K-A8>Nf2aWH z`6aBv1fx4qH(*;$;bkN5l=7GO0kgM(6GWn$ycYoFT2c^qm*;V*9*_DE*-Z<3Y6=DR zpmxk`VjP7OVvhykjva+zw|R$sn6DDnl+E+o2q?7!3$R*mB= zpJkr;jJ*jzF$HmhiNIUI#`lzwMH$Kpl}j;I)u&G>oUdEzghja2C+=*0UjfZ9!P%VA zUY(OGrBS1|O{^IdByV++4dsRsCsgV&C7`d-Z%($fgQA9GREPo#eU)tR3?&n^jb5F1 zq5x%_P)O)CgCXhEco)Wl=oGrAa!_%hwZS`tWt;7 zys5$}IIJW%^~7oH#Mu`J-QbidyTbLC3M1NJg?jY@xYAR~mT}_+!@INs|Aa){bWqD6 zVQeffgeZOJ(Sd6K0g2YqnZuMZCP4!Zrkdy@Kk4{Z7@&pKfIEv+!kMjtgq1p8Hb#B# zl%i~DtuU4fmu#$N_9^FwooCjX76g$ne0jy$!`lQ2n__q;D(VU*YTr6`2onA^)Cgnd zJLjZ-a>5GfCM3F|`gRNw7WCug3H5h+B}-?wl%3mMg9KaupfG0k;DdU_wl#3nghUm7 z+<$~f3vc6p`$Y0a*t2MmC`i^|MR4g*b_`bt+1EZ^y3}ZU$Djg@rlU_DEi_7jjWSqs z`S*@4cm2<7|GTb|p+Sp#Ugl<9Mm_nwYc&iPi4M7ck}%cGQz~^uCDny4DM3P`INt3v zwauc-X4wd3n&8!n>g;($&;oZ=5JjCfQbC0+0R*DnxnFrV=Cv8qhhHDIwj2~6iN>ME zQ9(k{GrU^@8*A4Yv=__`5@oGRj?goQceuHs`+bwNf+#C}@|5vK8zxpGrL<(%ttM&p zV55j%l(RQ23MlO9;VB-j)fcuEy7v?V%M=7$O6F>$^GEdle(w+9Cy^*$rsoyZD5y3H zz?akCp}qR(hN3QpVzHk57o97@XMxs+WbFG4`H&o|-O^sta`)>i8 zfFxm#0bK>5Z`h=OMmfyYxHO=)i!@qV|A`Qp2QyrCmAF1{wzJoZu$qx*mTuvv3S+T0 zTXD6@*W9%tVPdfeWp3QwAR#r1ms3hhZ~BdtEud0<0iMu2^iRze%zW%WDP3-Qy2pD* zmTgWe!*nMjOU-#kwi=q8C+BRP0!dyZWjUi@C;p%SCt7Wjvg7q!<<5I#>G)Jo6(l-& z1FkBdvG86+UP3muAL0U+b{{;wHh2{zD(zFh1qnU-^1`9u;qCkW4a$ooX|qR}yWUo@ z=P0Y9!NHmWY`9Q%Of<=_l3|84p zLcQv!z-QE~C2wza;J@-6GHO-3@vXfZPrnM8g{yE5+Z?5kBao3ih*3h`zi@8HuVK9?9b!Sex@O1SFbIG~M4siRD)>I|mbC17UFYQGT zFcKYg`<4V4TIs{JB_^(Lu2>sBs={^mA%c-%w^`tI8D8XIow~Z5O06?NiznvY0AB(iCiX`>q(>>q0hieJX)~dzb^X*yL$MgUu8i~d&J0gT( zCA_50j3n*IX^KNrt|Dd!hy5)V~ zZ@brR53Ybir1v^~5`E|T)Dm3XYqek|gXcORq`0EH{xq;qZ00vGYIiZIs0UbJB$|(T ze6R?Wkz=-)i&b~g164|cdBmPb>V}4jZ9}iSDq4axz#TOPq6g41{jtVSW354=p5k__ z2pDCs~QQ-ghWT$JyB##H=)Fq!_NRJ zBXxR-V@isMm2i_H8C?WY@EcOl-^SSdDYf($A+imTVZsi_Zl-C$8dQAZV_? z(dS;M*Wflt8HtMJ**uZKcsrCI7qk4f6PI$IHm|G;g_sYC&f@E45i-u01A9ZRpr0NX z*6$hw&Pa6GU9pRRL*eKr-%;%3t9W?+ri&9nbC4*P4^0+9(+z=-EPWLmo7Xx!z-}Fh zBA%KejoV<)!Jd^oNB&jlXGyTv*C2%uoPFjBh=ZSbJg*?SUy_p}{F2@YgK%%;xyikOTHss=y^Z}>O zN&4)475!DT6qr(h++QRDX4)Nv6WBf_Fo)L`y8)es9?_<1^nX&npi4FT^;bm>@loCE zME9$@0f#M*+P(g+fA#2RufQB4(Iq{5sR$Znv)Bsx{a1DeZ(b%@9m;0T8zN$s8A@Et zP6PkoN-Z7A=G5gPXriIml+U+iofbRyt(B}T-Od!P5Fz!pQd_Y($86{8<(EUFemes? zjzk$<{FaEC47HefaPk=)ST$uCp{gIhdwul};Hi-4gnqQHmY`e2Ytx|?3uWx=dXX{g zvQ)s|b47oCw3BDWz)Ge|=J)@KkZI;JLms>&U9~piNE`NQ|He%iB@(qcS2l=%(GV&6 zz&#NlmuGF$X`f_tsEAv=E8KX2w`1*`({F5J+_wSI*f8>aktyi-Wz8$&SJ?g-_gVT8 zu+vAJ@I|u-b3PU^qf9n)j=@sQKO+C7#w)>pgW4fcM&J5e1kEfiiO|DcQE3LNOn1aJ z+V|R2a8XE9_b%-aF?GeJ0w^Chs9j5?o@KACrRxkx7|7{myEl9(&8Q*AJ6sGLEtZ#c z9V!LMbl_j_7V(BbHUTn6-f3WGz@waV4@duA2!lqVn63AVm>FPj3M#49^A7LS4eLcn z$pwD%wTPJxnv`!c_^NmS4OfSFbXE5~Btk-d%kJ)d?Pm=-{akN-ZqMX*+JiShqL8WI zh>&T(q>UevsRvG#$hqaP2njEGfbpqDK(Btjml~gT$3)BwBaFP#0LrP(L8=?OQ;{z@ zDA)OF`M?>Eew!Aa8%-M}ix{#=Fp1LgZn1F43nW3!{ zjINqTI+2=RM95@Eajt=V3i|8$J>S)Ya2|=y<1Gm=8Y1xGTnND>LsV4;?eL3SZYq-7O+=w>AZi@1!HQZMdO{obHJNK__gTFEjgC}U^sJ8alAQ`%8CqTM+& z9})pGp_{ff$55RlN{eG}9a{`6B2l~ZSbGsQ5jwp>c1vv>D{bh}^h~F^-@|kw(UAvr z6d~b)B-1B=OW4r=Oi%@2A&E;yic~swk$Ei4H5vFFJ@n6?sP(yYxrUBA^l=eWZ_b7N zmK>d`or2#AjUrv&=bOMZB2iD%v6l#$4Bilq>e<$!*}vflmmw-gQgaDyB_{V4F`>C8 z1b(a>7w&4dpV{y}obqUpr~z8nUql>MR$gX-LK442ch_b(y`BY_{>u5R_W%${&1Z$H z&L9zVq!Ak2Rv!PT7klUL`kj~j0$rDXL$RIE_>EfJ);h|@(0d!#0^Te1xU4)Q+X^Y+ zBPb!Az}oR59_*H^`4g%UKB^Zt-GSK>MNC-RR;YX~QTlvTxm`M#H!0{aB+QT~r%@>) zY65iDE{0p4>^i~FcXou70v?dlD*_ljLIfRRG}|5Q08PDYsH9sMq_K~Oa2#5%K!;70 zWp`HbR>kS9HIBwY-W7@3p^_XCSXWq$D)m9LUtIkYEJP$!a_A2!dBuOt($Ee0rab=U z^R?C2c3%e&Bx*7qwF*1t@^UGrSYYqa(Y(1xpPQm2UgzMbKym)TCPj zADBJvEgW_3pN7kOX9_)D;U$sO@1jwSnKesfEZu11r##d-K`)ItJVyjfG?c(v%kvd+ z00}?VcJkx*K%mno+PFAv*y^QkEghJ-LIlLb za)G1VYGfXjVHlzIs$??zx@>QWxQPyU7L4l$g!f+6hNoZA8CJuuOR#IUIhS2lP=9-u z2TNdpNYsa{UM)-zcy%L#uTFifCHM*?Vgy_-tQU%w@HV1t7tK8PMt$h-2t+|HZBh+P zSB~8Vxk{lgp7BltcqQ^fLE9KYzpuBckfPwJa=86#&to6D_xiLrb}x((iJFkkJ5<0! zjP^o@Zw%;+39w+*(?_F?KL1m}4mH?qY*u4Wbop^H%p{V?DwJ`$SJH#?P73qW?{?&SVkkEz3Md;GjMCeAiu0p<%1O`SH7Dr6=Bgk?St+JM_$*q;oO;Q zv{W0Oc}4f+U0}meTmrrrQZQV7pENq<(;DD3k?3SRcQ;r#yMkA*dvW!&3!lSY42f1= zef>wU5IL?k_sZkU;Du2q0R)L^_VIh_;SGn1e(n%ITiE*O4a}R~0HTKC)?aGS7)LI@ z3gqt3O2|IB&;lD1lULgiM^^pJBZ27Pn8Jj(sd8n8>Pbp8B@hM0iiK$gDUubE(jFkv(OXO$isz)`eS;@a1(sdrd-Zp{J>K7}MFPCtr>* z-R|#bx|%&*R0en2Jj}JwxS6A7ar+qIhYDUns(SM2Qod?bGY0ScP2}$qJq7~0@1TXC z%4W~6Eevj6o9m_3hLEn^<3(!zl8qL4c*xE#{cx(S0u{-=GBt8iTs&7Kfu%gorH0g} z56|q(D_#(=L>KB~(_gHu!B+>(7Pj+Mw>>A3z3UYPjOFTZD};Lm^=)~oEV}tJd(p<~ zU6~f`>H%08ZSmravz;^O(A@sVUi(OV*gCSTRI|33K zzO4-(P~n=b{8D)}+Rw>(wogr;U|6jUhpO&J-WHx)t!>2#*|5nq{LN24khzuiVN699 z>aB5iDaqL>BaCzuun%~I`oQvt3fF=C^3QRyjdpf!cFG@l+mqmN3M3k+efF*3dYgA{ zrG9sWg6Mye8H<8Si)!STjuz}XeH;=QLjD?UBaq6e8^Yu@+ExV&fB9$BBe(m2A3+Kt zm6Z3OxkwbgcFaK#*=1l4FUdK`@OQ3Qy0%ASY^wo1IyN0n6gzt^H~H+&2ni6%rRh)}V~84;0@%(bRp zQ9k3uB)~$F)6<^JV2=b3ZvfcsKU};$H6|xW5}=xYRfNl|Is$adAN}#SnU|ubKeJk~KO{?_tmLTDy-`_TMyh!tob3_!mZWiagqgzFh9E1Zyt% zpFE8dZt&u&K+WsL#ryb+{#X33jL#Lgh)9kmJKe#cdirSmTsF+ZU#8Uz9XsJvlFQ>q zkL_yhe+v7g$wQ8Kf?eLFR%p7~ZYg+N=EnCk<$0I`{iEu)K3(CiKNoMsy~D5i7l;x3 zk0{@W$ezA<0Ui*srkZB>*O-ShWx#H1{+e#sc-y})oaYq02=;ROpxu_S{_&PVBWY>8 zeSC-Ob8zUBB#zwtK{E>LM02i_oj`abX6PaR zA~_;q!Ww29=qy|LA=~J5B2E zf4n`OQSew6)s1&=`A^;b^LI^!2MdImbLyRyvPI&L%%5xRSed^Fw);KsV%}38I2b>b zZ*I1X*Nq=rH9lQ$y#EE<{#h9>BGT8x!Qb~=OQ2rC)S;hK0NLtN`qDO=|LJosF(~}` zvKN56i9bHL;U6z8M}gz`-&&|HQevng6bUwwR9;87}SqfT^0h8fDbN) z4qNly84LYtk?3Z7!~~f^XbV1$pLNlf9jLL~0b4O7n$vyY^k6z+)I%J_P@u)H`#RR{ z*_CeqA`%__)>$&AqYU|WW7TgLKvPh+EOdLc;lnFjD_@oYvJ80+?gLZ$?auafq@#VB zR~seN5q9k4rNGtGMF$oIV-M@#*vo4? zt5ylh&qo{T2%Gn4n{rwS3AZz+PJ=WM5=9yHnLH|Jv18yrq_kzx)NM~f>fuQtbEmf9 zpbA$9I6;@@$4~?gF3=FI6j zLc=e4%^a3}=}ygjd`V^`(*hOLwo?A>g{JqD_pgSTL86Ly=T{kZ2wahej)Z=*r~bD_ zA+ts-nhfXtNYpr7xFf@68L)2*J4Lwm>+r_WfQO{$1?Xyp>+OH*2s?N1)a&k3A3hWh zqeY?xuRTNSN=lJ#8|S}#*k6A$#lC=bq?5S4i42)E9_;IQ$R+!RSN@%w0;?Xcd$_G+ z)bs*d(Rf*N2dFEZ{jvJ({EN@|w>z^t3Psy_YBz7MTkR%vk-5;pYo&JOHegj;tm`l- z<|UYZB&r>=y33eZW{cGv@Of6J#=E>ued~()j%WJHpw+#1)oykFK|jNNO(b%vRm;_M za9v^LeqJlt|8*KMV;DdnQJsq(D)W|Xw({3)(St5|9zlZ6(K-A+QHD&1`u`FeyMpax z?|EhUAQL2Nm3F1dm{AaTKx<^#|1xr;uVqgz*$zcFNXp7ZO)eQJOs0;6U7rts1ef6jo@2qdaJbKaCO;qV3mSGfSR>dRre^#kwE z25*N%<&yP|j5^!^2{*Q=RTJucIqs27w z@vc)2bk|#W_A|F*eEnw`p^}S8{@n8$(>9Hn0wEz1oy8BX%b2=CJXy^%_`mq!?AwVM0!Is^VVWEJ!xENlB;!dGDJW+wxhP9a<93m8b!8^0HT^xDlLs*GORLA?( z50MlH`+WRA0;gsW9I99Y&YoxyA~f91<18(I@jB224HD%ntgXzMuEb=tvga)6+?c+L zKnRQC;EM(Vy}QVmsn9H%3n?V+a_e0EC*+?en(cg-zjNNz`BHmlI>_UFWyB0KTz{8? zOyB4(m!9saHG^vL(}QKqR9hZ+Qi%VV`nF`Ndz_EN$p~?vtY&KgyXIeQOXyHfr^uji zt19q<_YFF4C0yM;AC75}D5i6)jF|+*i|kSgebLs=^&SP4L!uEwy3-FeWs0#@;>^}8lH-F$Lwh$eOjmn$_671H_?&rq zu7;xN`{;cDRqeAVb)PSq9sdXLu*DZtc(JeB|NO$FpC-bDIq{21^3nl-Kg<|4LDvKJ>`gSQRKH(_*)S72DSlQ)KbEg!x-2#I_q899Z1uV)2SIMiA z;3I(GPKp=&_X9&itZD|L#j6{Sg$Uce4B<8!U)#0j-%|54>R3Wg$ODanZFtqpQQlg3 zn4=q?PA3KDAzoAzWpPBj3y?_ExljI9#TY~|aA~m0iIaG1(D$GGV{pu=!7)>dZ9gT$ zf;Y*70s}UxS{if`U;0i4jj|QOj@~U{PK)Bu^~<}9tt`C8fAO?%=o{X)_WGkY|CT0^ z`uJ{VWX6&Wrb=Qi8gl*AI<$cZ==5T%%~=^S(P)Q_vW0(gvMm0W;S!%zW15|lQPYeL zt67O}s=V8-Zn#A4c*uDGt)kPCy3>IA7H4hA<6%Ce!d3PQKo#2!#!3SkHJJKA4QiF< z+zQd~-_h`#)eSuA4p+C{!JiiKH>QW8rxj&@@j#+Jpy%%)n#75Q@o?pzS(c9%OI+cu zRW7)Tg+yK5zCS`VN#>j~c6c@*Xw|ho5c(id`#XmI_!9Oi{;bFCOpHm8=nT&f2h^%PY=$(X$%h_q`8&u7i7NBpR&J!e$?R%P zA?bvBWD_3_)#xE5G@c#bsyngMh%_n!utrtoR;AJ0Tz4V9ep?s{5*<#Hz6cZ%6{q6{ zlETj3Fq|v82~US=QVqH0an-o2JTv}Y#~QFQk!Zy5feKA;t}+|xN!p_FT}tlL{c{*7 z5>>wYgB1po&3O}jnhplaL+Q=Oj;3q_JS6J({?U0b^*CyHBS20@R(ZAb?6TtYX)tUg zn$N8n6)LzUg>sv^e0ntd+I?UQi2@yjlRZfyG5B00bZzq4{sgco`d3N{H#a>8%puW1 zHyNtJ9S04exO&%Vf9A)>flVYDl=O`gUjB}ENblOC8{^-HX2dIeWx(ShCG1p2{@j6I zYy_qR<6&(hFgo!G3es>x0egUI<)g9~n5ZD8LX-(DT=D~~d$0np&cPpb`mS|a301XJoZ#-CN>*Sq;LvL#+pD#kJLqCNP#Gi|ibd)b%#nto zfJ)=twxOWzTJw{DhNNN>xO_E5LDbtEg+?})6Cx8H{s<-$i3+OaFsA|v&&vyeA2Y?t+%43$7n{cbc}IcYB>zGZa4D zuU`jvdCgxsy<|(GE(WB4L?!WPmV%lJr6fiEmrM`e+gbWQ#&^-x13)BdXFeJ({CJMn z_@||IdUP!a$&jccsXJ2PEY=Yq$?u0PWhsMip?sx{Rv_V&)yCGkfnT?|_y9BxiE3TO z7zHvG+(?mXBig;t*|nX01_2#&uj%X(S}<9zk2IW zw5N_Fo|D=q(ADtUv%>lBwJkUs#Lesb{CyH842jylO9tWkN!|u=#f1}}4uR8hB&r{^ zbCux@HIHYz3}r1e@pfh}ox7IEW+8-ylGeOzNo_g;ZQiM-YyJcyg3Jd8NM42 zuXh8{X{$4YYoa3%nUmp(st_6 z!@}W(Url^qa_s?S#CW zpv(M&slxd)yp^D~;FPmgF9^;H+UA@+;}<`;ecU)W;FspebGwqO_6OEnnQH_afkb7O zzfi%{6;)Eq<{iHD|2nnpFmOvqbPY6FqCloWFCg&5{JIr&ErXn^f#p!)bZvYMaN$Yw zN|L@b=c`vAyV1;c>05|pFLC5ol>m_T|8TcaX$|)%^o)L~KHKiVt>e|NQ_*z5>8+ufv=la5>ZWlNsMC&6CmRU2&lqlNBDIYPA)>T;S_1mK8+-8WJ6r?Ub7} zoyAaGz>W?J*QB(W4)yRz)QsN!(G7>DEW&dpV_@IlGu>(vuw68>UDA?>?JE!0ht{k>^is^8+w!n|Iv-SWgL&JM zRY}i*{v**5e^*0`8j}q5`%odsE^hj2)}s;4puhx4;?SLNs&Ks#>P8fu4R_Tmdkc+* zn%g_g-FQ{+Dx8p>#Sf;u^p2E=Mu0GoB>wQfRk(g@;fB-M&E>Eu1B@ Date: Thu, 4 Jul 2019 22:48:23 +0000 Subject: [PATCH 083/255] net/http: stop ExampleServer_Shutdown from hanging on error Running the example code when not having permissions to bind to port 80 will cause the program to hang after printing the error message. Change-Id: I2433ba2629b362fc8f1731e40cab5eea72ec354f GitHub-Last-Rev: 0bb3dc08b6f646470fc6ff208ea12bca901a2299 GitHub-Pull-Request: golang/go#32947 Reviewed-on: https://go-review.googlesource.com/c/go/+/185157 Reviewed-by: Emmanuel Odeke Run-TryBot: Emmanuel Odeke TryBot-Result: Gobot Gobot --- src/net/http/example_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/net/http/example_test.go b/src/net/http/example_test.go index 2a09f5f6c6..a783b46618 100644 --- a/src/net/http/example_test.go +++ b/src/net/http/example_test.go @@ -132,7 +132,7 @@ func ExampleServer_Shutdown() { if err := srv.ListenAndServe(); err != http.ErrServerClosed { // Error starting or closing listener: - log.Printf("HTTP server ListenAndServe: %v", err) + log.Fatalf("HTTP server ListenAndServe: %v", err) } <-idleConnsClosed From e94472a36941157c79268ab3f33ca1b3e0eb56a4 Mon Sep 17 00:00:00 2001 From: Mohit Agarwal Date: Thu, 4 Jul 2019 21:21:02 +0530 Subject: [PATCH 084/255] doc/go1.13: fix links and a closing tag - fix link for `Time.Format` - fix closing tag for `go get` - add links for `runtime.Caller`, `runtime.Callers` - remove link for `TypedArrayOf` since it has been removed (CL 177537) Change-Id: I1dc38226e6d91c68fbd2f02c1acfad5327f4ebe8 Reviewed-on: https://go-review.googlesource.com/c/go/+/185038 Reviewed-by: Emmanuel Odeke --- doc/go1.13.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/go1.13.html b/doc/go1.13.html index 42546c4622..a4cea9b86a 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -229,7 +229,7 @@ go env -w GOPROXY=direct go env -w GOSUMDB=off -

    go get

    +

    go get

    In module-aware mode, @@ -743,8 +743,8 @@ godoc

    runtime

    - Tracebacks, runtime.Caller, - and runtime.Callers now refer to the function that + Tracebacks, runtime.Caller, + and runtime.Callers now refer to the function that initializes the global variables of PKG as PKG.init instead of PKG.init.ializers

    @@ -796,7 +796,7 @@ godoc
    syscall/js

    - TypedArrayOf has been replaced by + TypedArrayOf has been replaced by CopyBytesToGo and CopyBytesToJS for copying bytes between a byte slice and a Uint8Array.

    @@ -846,7 +846,7 @@ godoc
    time

    - Day-of-year is now supported by Format + Day-of-year is now supported by Format and Parse.

    From 9a00e64633ce3636d9ea94660168d96be3416df8 Mon Sep 17 00:00:00 2001 From: Keith Randall Date: Thu, 4 Jul 2019 10:23:58 -0400 Subject: [PATCH 085/255] test: add another test for issue 32680 Update #32680 Change-Id: I0318c22c22c5cd6ab6441d1aa2d1a40d20d71242 Reviewed-on: https://go-review.googlesource.com/c/go/+/185137 Run-TryBot: Keith Randall TryBot-Result: Gobot Gobot Reviewed-by: Emmanuel Odeke Reviewed-by: David Chase --- test/fixedbugs/issue32680b.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 test/fixedbugs/issue32680b.go diff --git a/test/fixedbugs/issue32680b.go b/test/fixedbugs/issue32680b.go new file mode 100644 index 0000000000..61e531701a --- /dev/null +++ b/test/fixedbugs/issue32680b.go @@ -0,0 +1,16 @@ +// compile + +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package p + +func hashBytesRaw(b0, b1, b2, b3, b7 byte) uint64 { + return (uint64(b0) | uint64(b1)<<8 | uint64(b2)<<16 | uint64(b3)<<24) +} + +func doStuff(data []byte) uint64 { + return hashBytesRaw(data[0], data[1], data[2], data[3], data[7]) + +} From 7aac3436dde7f247e8602f49317c17563def89ab Mon Sep 17 00:00:00 2001 From: Austin Clements Date: Thu, 27 Jun 2019 18:03:15 -0400 Subject: [PATCH 086/255] debug/elf: add version information to all dynamic symbols Currently, File.ImportedSymbols is the only API that exposes the GNU symbol version information for dynamic symbols. Unfortunately, it also filters to specific types of symbols, and only returns symbol names. The cgo tool is going to need symbol version information for more symbols. In order to support this and make the API more orthogonal, this CL adds version information to the Symbol type and updates File.DynamicSymbols to fill this in. This has the downside of increasing the size of Symbol, but seems to be the most natural API for exposing this. I also explored 1) adding a method to get the version information for the i'th dynamic symbol, but we don't use symbol indexes anywhere else in the API, and it's not clear if this index would be 0-based or 1-based, and 2) adding a DynamicSymbolVersions method that returns a slice of version information that parallels the DynamicSymbols slice, but that's less efficient to implement and harder to use. For #31912. Change-Id: I69052ac3894f7af2aa9561f7085275130e0cf717 Reviewed-on: https://go-review.googlesource.com/c/go/+/184099 Run-TryBot: Austin Clements TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- src/debug/elf/file.go | 40 +++++++++++++++++++++++++++-------- src/debug/elf/symbols_test.go | 4 ++++ 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/src/debug/elf/file.go b/src/debug/elf/file.go index f92a2b0052..79ef467145 100644 --- a/src/debug/elf/file.go +++ b/src/debug/elf/file.go @@ -171,6 +171,11 @@ type Symbol struct { Info, Other byte Section SectionIndex Value, Size uint64 + + // Version and Library are present only for the dynamic symbol + // table. + Version string + Library string } /* @@ -1228,12 +1233,23 @@ func (f *File) Symbols() ([]Symbol, error) { // DynamicSymbols returns the dynamic symbol table for f. The symbols // will be listed in the order they appear in f. // +// If f has a symbol version table, the returned Symbols will have +// initialized Version and Library fields. +// // For compatibility with Symbols, DynamicSymbols omits the null symbol at index 0. // After retrieving the symbols as symtab, an externally supplied index x // corresponds to symtab[x-1], not symtab[x]. func (f *File) DynamicSymbols() ([]Symbol, error) { - sym, _, err := f.getSymbols(SHT_DYNSYM) - return sym, err + sym, str, err := f.getSymbols(SHT_DYNSYM) + if err != nil { + return nil, err + } + if f.gnuVersionInit(str) { + for i := range sym { + sym[i].Library, sym[i].Version = f.gnuVersion(i) + } + } + return sym, nil } type ImportedSymbol struct { @@ -1256,7 +1272,8 @@ func (f *File) ImportedSymbols() ([]ImportedSymbol, error) { for i, s := range sym { if ST_BIND(s.Info) == STB_GLOBAL && s.Section == SHN_UNDEF { all = append(all, ImportedSymbol{Name: s.Name}) - f.gnuVersion(i, &all[len(all)-1]) + sym := &all[len(all)-1] + sym.Library, sym.Version = f.gnuVersion(i) } } return all, nil @@ -1269,11 +1286,16 @@ type verneed struct { // gnuVersionInit parses the GNU version tables // for use by calls to gnuVersion. -func (f *File) gnuVersionInit(str []byte) { +func (f *File) gnuVersionInit(str []byte) bool { + if f.gnuNeed != nil { + // Already initialized + return true + } + // Accumulate verneed information. vn := f.SectionByType(SHT_GNU_VERNEED) if vn == nil { - return + return false } d, _ := vn.Data() @@ -1328,17 +1350,18 @@ func (f *File) gnuVersionInit(str []byte) { // Versym parallels symbol table, indexing into verneed. vs := f.SectionByType(SHT_GNU_VERSYM) if vs == nil { - return + return false } d, _ = vs.Data() f.gnuNeed = need f.gnuVersym = d + return true } // gnuVersion adds Library and Version information to sym, // which came from offset i of the symbol table. -func (f *File) gnuVersion(i int, sym *ImportedSymbol) { +func (f *File) gnuVersion(i int) (library string, version string) { // Each entry is two bytes. i = (i + 1) * 2 if i >= len(f.gnuVersym) { @@ -1349,8 +1372,7 @@ func (f *File) gnuVersion(i int, sym *ImportedSymbol) { return } n := &f.gnuNeed[j] - sym.Library = n.File - sym.Version = n.Name + return n.File, n.Name } // ImportedLibraries returns the names of all libraries diff --git a/src/debug/elf/symbols_test.go b/src/debug/elf/symbols_test.go index 1b79520e3c..42f02312e8 100644 --- a/src/debug/elf/symbols_test.go +++ b/src/debug/elf/symbols_test.go @@ -819,6 +819,8 @@ var dynamicSymbolsGolden = map[string][]Symbol{ Section: 0x0, Value: 0x0, Size: 0x18C, + Version: "GLIBC_2.2.5", + Library: "libc.so.6", }, Symbol{ Name: "__libc_start_main", @@ -827,6 +829,8 @@ var dynamicSymbolsGolden = map[string][]Symbol{ Section: 0x0, Value: 0x0, Size: 0x1C2, + Version: "GLIBC_2.2.5", + Library: "libc.so.6", }, }, "testdata/go-relocation-test-clang-x86.obj": {}, From a2fb5cd823f5223070c3cce741dd5b3879bac21b Mon Sep 17 00:00:00 2001 From: Austin Clements Date: Thu, 27 Jun 2019 18:14:03 -0400 Subject: [PATCH 087/255] cmd/cgo: accept weak dynamic imports cgo produces dynamic imports for Go binaries by scanning the dynamic imports table of a binary produced by the system C compiler and linker. Currently, since it uses elf.File.ImportedSymbols, it only reads global symbols. Unfortunately, recent versions of lld emit weak symbol imports for several pthread symbols, which means the cgo tool doesn't emit dynamic imports for them, which ultimately causes linking of cgo binaries to fail. Fix this by using elf.File.DynamicSymbols instead and filtering down to both global and weak symbols. Fixes #31912. Change-Id: If346a7eca6733e3bfa2cccf74a9cda02a3e81d38 Reviewed-on: https://go-review.googlesource.com/c/go/+/184100 Run-TryBot: Austin Clements TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- src/cmd/cgo/out.go | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/src/cmd/cgo/out.go b/src/cmd/cgo/out.go index 488db52c2e..1fddbb6b54 100644 --- a/src/cmd/cgo/out.go +++ b/src/cmd/cgo/out.go @@ -268,6 +268,35 @@ func (p *Package) writeDefs() { } } +// elfImportedSymbols is like elf.File.ImportedSymbols, but it +// includes weak symbols. +// +// A bug in some versions of LLD (at least LLD 8) cause it to emit +// several pthreads symbols as weak, but we need to import those. See +// issue #31912 or https://bugs.llvm.org/show_bug.cgi?id=42442. +// +// When doing external linking, we hand everything off to the external +// linker, which will create its own dynamic symbol tables. For +// internal linking, this may turn weak imports into strong imports, +// which could cause dynamic linking to fail if a symbol really isn't +// defined. However, the standard library depends on everything it +// imports, and this is the primary use of dynamic symbol tables with +// internal linking. +func elfImportedSymbols(f *elf.File) []elf.ImportedSymbol { + syms, _ := f.DynamicSymbols() + var imports []elf.ImportedSymbol + for _, s := range syms { + if (elf.ST_BIND(s.Info) == elf.STB_GLOBAL || elf.ST_BIND(s.Info) == elf.STB_WEAK) && s.Section == elf.SHN_UNDEF { + imports = append(imports, elf.ImportedSymbol{ + Name: s.Name, + Library: s.Library, + Version: s.Version, + }) + } + } + return imports +} + func dynimport(obj string) { stdout := os.Stdout if *dynout != "" { @@ -290,7 +319,7 @@ func dynimport(obj string) { } } } - sym, _ := f.ImportedSymbols() + sym := elfImportedSymbols(f) for _, s := range sym { targ := s.Name if s.Version != "" { From 13327f219e5bb0f050eb41f25f9dd07ec3d56f32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Tue, 2 Jul 2019 23:56:41 +0200 Subject: [PATCH 088/255] encoding/json: obey SetEscapeHTML in all MarshalJSON cases MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It wasn't obeyed in the case where the MarshalJSON method uses a pointer receiver, and the encoder grabs the address of a value to find that method. addrMarshalerEncoder is the function that does this work, but it ignored opts.escapeHTML. Here's the before and after of the added test case, which was failing before the fix. Now the two cases are correct and consistent. {"NonPtr":"","Ptr":"\u003cstr\u003e"} {"NonPtr":"","Ptr":""} Fixes #32896. Change-Id: Idc53077ece074973558bd3bb5ad036380db0d02c Reviewed-on: https://go-review.googlesource.com/c/go/+/184757 Run-TryBot: Daniel Martí TryBot-Result: Gobot Gobot Reviewed-by: Emmanuel Odeke Reviewed-by: Caleb Spare --- src/encoding/json/encode.go | 4 ++-- src/encoding/json/stream_test.go | 26 ++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/encoding/json/encode.go b/src/encoding/json/encode.go index 464ee3ece4..3474d4a667 100644 --- a/src/encoding/json/encode.go +++ b/src/encoding/json/encode.go @@ -460,7 +460,7 @@ func marshalerEncoder(e *encodeState, v reflect.Value, opts encOpts) { } } -func addrMarshalerEncoder(e *encodeState, v reflect.Value, _ encOpts) { +func addrMarshalerEncoder(e *encodeState, v reflect.Value, opts encOpts) { va := v.Addr() if va.IsNil() { e.WriteString("null") @@ -470,7 +470,7 @@ func addrMarshalerEncoder(e *encodeState, v reflect.Value, _ encOpts) { b, err := m.MarshalJSON() if err == nil { // copy JSON into buffer, checking validity. - err = compact(&e.Buffer, b, true) + err = compact(&e.Buffer, b, opts.escapeHTML) } if err != nil { e.error(&MarshalerError{v.Type(), err}) diff --git a/src/encoding/json/stream_test.go b/src/encoding/json/stream_test.go index 1d1999da25..e3317ddeb0 100644 --- a/src/encoding/json/stream_test.go +++ b/src/encoding/json/stream_test.go @@ -90,6 +90,18 @@ func TestEncoderIndent(t *testing.T) { } } +type strMarshaler string + +func (s strMarshaler) MarshalJSON() ([]byte, error) { + return []byte(s), nil +} + +type strPtrMarshaler string + +func (s *strPtrMarshaler) MarshalJSON() ([]byte, error) { + return []byte(*s), nil +} + func TestEncoderSetEscapeHTML(t *testing.T) { var c C var ct CText @@ -97,6 +109,15 @@ func TestEncoderSetEscapeHTML(t *testing.T) { Valid int `json:"<>&#! "` Invalid int `json:"\\"` } + + // This case is particularly interesting, as we force the encoder to + // take the address of the Ptr field to use its MarshalJSON method. This + // is why the '&' is important. + marshalerStruct := &struct { + NonPtr strMarshaler + Ptr strPtrMarshaler + }{`""`, `""`} + for _, tt := range []struct { name string v interface{} @@ -111,6 +132,11 @@ func TestEncoderSetEscapeHTML(t *testing.T) { `{"\u003c\u003e\u0026#! ":0,"Invalid":0}`, `{"<>&#! ":0,"Invalid":0}`, }, + { + `""`, marshalerStruct, + `{"NonPtr":"\u003cstr\u003e","Ptr":"\u003cstr\u003e"}`, + `{"NonPtr":"","Ptr":""}`, + }, } { var buf bytes.Buffer enc := NewEncoder(&buf) From ddc8439b2f2d5ca85ccc02aa317d81351c62a62d Mon Sep 17 00:00:00 2001 From: Than McIntosh Date: Wed, 3 Jul 2019 14:42:32 -0400 Subject: [PATCH 089/255] test: add new test case for gccgo compiler bug Test case that causes incorrect compiler error from gccgo. Updates #32922 Change-Id: I59432a8e8770cf03eda293f6d110c081c18fa88b Reviewed-on: https://go-review.googlesource.com/c/go/+/184918 Run-TryBot: Than McIntosh TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor Reviewed-by: Cherry Zhang --- test/fixedbugs/issue32922.dir/a.go | 18 ++++++++++++++++++ test/fixedbugs/issue32922.dir/b.go | 11 +++++++++++ test/fixedbugs/issue32922.go | 11 +++++++++++ 3 files changed, 40 insertions(+) create mode 100644 test/fixedbugs/issue32922.dir/a.go create mode 100644 test/fixedbugs/issue32922.dir/b.go create mode 100644 test/fixedbugs/issue32922.go diff --git a/test/fixedbugs/issue32922.dir/a.go b/test/fixedbugs/issue32922.dir/a.go new file mode 100644 index 0000000000..b13c4b404d --- /dev/null +++ b/test/fixedbugs/issue32922.dir/a.go @@ -0,0 +1,18 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package a + +func A() int { + return p("count") +} + +func p(which string, args ...string) int { + switch which { + case "count", "something": + return 1 + default: + return 2 + } +} diff --git a/test/fixedbugs/issue32922.dir/b.go b/test/fixedbugs/issue32922.dir/b.go new file mode 100644 index 0000000000..fdaf42d3df --- /dev/null +++ b/test/fixedbugs/issue32922.dir/b.go @@ -0,0 +1,11 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package b + +import "./a" + +func B() int { + return 99 + a.A() +} diff --git a/test/fixedbugs/issue32922.go b/test/fixedbugs/issue32922.go new file mode 100644 index 0000000000..005c8e68cb --- /dev/null +++ b/test/fixedbugs/issue32922.go @@ -0,0 +1,11 @@ +// compiledir + +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// This directory contains a pair of packages that triggers a compiler +// error in gccgo (problem with the way inlinable call expressions are +// imported). See issue 32922 for details. + +package ignored From fbaf881cc62bd0e1f4c5e608217fd52106438dbb Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Fri, 28 Jun 2019 15:01:16 -0400 Subject: [PATCH 090/255] net/http: fix Transport.MaxConnsPerHost limits & idle pool races MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There were at least three races in the implementation of the pool of idle HTTP connections before this CL. The first race is that HTTP/2 connections can be shared for many requests, but each requesting goroutine would take the connection out of the pool and then immediately return it before using it; this created unnecessary, tiny little race windows during which another goroutine might dial a second connection instead of reusing the first. This CL changes the idle pool to just leave the HTTP/2 connection in the pool permanently (until there is reason to close it), instead of doing the take-it-out-put-it-back dance race. The second race is that “is there an idle connection?” and “register to wait for an idle connection” were implemented as two separate steps, in different critical sections. So a client could end up registered to wait for an idle connection and be waiting or perhaps dialing, not having noticed the idle connection sitting in the pool that arrived between the two steps. The third race is that t.getIdleConnCh assumes that the inability to send on the channel means the client doesn't need the result, when it could mean that the client has not yet entered the select. That is, the main dial does: idleConnCh := t.getIdleConnCh(cm) select { case v := <-dialc: ... case pc := <-idleConnCh ... ... } But then tryPutIdleConn does: waitingDialer := t.idleConnCh[key] // what getIdleConnCh(cm) returned select { case waitingDialer <- pconn: // We're done ... return nil default: if waitingDialer != nil { // They had populated this, but their dial won // first, so we can clean up this map entry. delete(t.idleConnCh, key) } } If the client has returned from getIdleConnCh but not yet reached the select, tryPutIdleConn will be unable to do the send, incorrectly conclude that the client does not care anymore, and put the connection in the idle pool instead, again leaving the client dialing unnecessarily while a connection sits in the idle pool. (It's also odd that the success case does not clean up the map entry, and also that the map has room for only a single waiting goroutine for a given host.) None of these races mattered too much before Go 1.11: at most they meant that connections were not reused quite as promptly as possible, or a few more than necessary would be created. But Go 1.11 added Transport.MaxConnsPerHost, which limited the number of connections created for a given host. The default is 0 (unlimited), but if a user did explicitly impose a low limit (2 is common), all these misplaced conns could easily add up to the entire limit, causing a deadlock. This was causing intermittent timeouts in TestTransportMaxConnsPerHost. The addition of the MaxConnsPerHost support added its own races. For example, here t.incHostConnCount could increment the count and return a channel ready for receiving, and then the client would not receive from it nor ever issue the decrement, because the select need not evaluate these two cases in order: select { case <-t.incHostConnCount(cmKey): // count below conn per host limit; proceed case pc := <-t.getIdleConnCh(cm): if trace != nil && trace.GotConn != nil { trace.GotConn(httptrace.GotConnInfo{Conn: pc.conn, Reused: pc.isReused()}) } return pc, nil ... } Obviously, unmatched increments are another way to get to a deadlock. TestTransportMaxConnsPerHost deadlocked approximately 100% of the time with a small random sleep added between incHostConnCount and the select: ch := t.incHostConnCount(cmKey): time.Sleep(time.Duration(rand.Intn(10))*time.Millisecond) select { case <-ch // count below conn per host limit; proceed case pc := <-t.getIdleConnCh(cm): ... } The limit also did not properly apply to HTTP/2, because of the decrement being attached to the underlying net.Conn.Close and net/http not having access to the underlying HTTP/2 conn. The alternate decrements for HTTP/2 may also have introduced spurious decrements (discussion in #29889). Perhaps those spurious decrements or other races caused the other intermittent non-deadlock failures in TestTransportMaxConnsPerHost, in which the HTTP/2 phase created too many connections (#31982). This CL replaces the buggy, racy code with new code that is hopefully neither buggy nor racy. Fixes #29889. Fixes #31982. Fixes #32336. Change-Id: I0dfac3a6fe8a6cdf5f0853722781fe2ec071ac97 Reviewed-on: https://go-review.googlesource.com/c/go/+/184262 Run-TryBot: Russ Cox TryBot-Result: Gobot Gobot Reviewed-by: Bryan C. Mills --- src/net/http/export_test.go | 28 +- src/net/http/serve_test.go | 23 +- src/net/http/transport.go | 624 +++++++++++++++++++-------------- src/net/http/transport_test.go | 30 +- 4 files changed, 417 insertions(+), 288 deletions(-) diff --git a/src/net/http/export_test.go b/src/net/http/export_test.go index f0dfa8cd33..d265cd3f72 100644 --- a/src/net/http/export_test.go +++ b/src/net/http/export_test.go @@ -166,30 +166,40 @@ func (t *Transport) IdleConnCountForTesting(scheme, addr string) int { return 0 } -func (t *Transport) IdleConnChMapSizeForTesting() int { +func (t *Transport) IdleConnWaitMapSizeForTesting() int { t.idleMu.Lock() defer t.idleMu.Unlock() - return len(t.idleConnCh) + return len(t.idleConnWait) } func (t *Transport) IsIdleForTesting() bool { t.idleMu.Lock() defer t.idleMu.Unlock() - return t.wantIdle + return t.closeIdle } -func (t *Transport) RequestIdleConnChForTesting() { - t.getIdleConnCh(connectMethod{nil, "http", "example.com", false}) +func (t *Transport) QueueForIdleConnForTesting() { + t.queueForIdleConn(nil) } +// PutIdleTestConn reports whether it was able to insert a fresh +// persistConn for scheme, addr into the idle connection pool. func (t *Transport) PutIdleTestConn(scheme, addr string) bool { c, _ := net.Pipe() key := connectMethodKey{"", scheme, addr, false} - select { - case <-t.incHostConnCount(key): - default: - return false + + if t.MaxConnsPerHost > 0 { + // Transport is tracking conns-per-host. + // Increment connection count to account + // for new persistConn created below. + t.connsPerHostMu.Lock() + if t.connsPerHost == nil { + t.connsPerHost = make(map[connectMethodKey]int) + } + t.connsPerHost[key]++ + t.connsPerHostMu.Unlock() } + return t.tryPutIdleConn(&persistConn{ t: t, conn: c, // dummy diff --git a/src/net/http/serve_test.go b/src/net/http/serve_test.go index e7ed15c3aa..61adda2604 100644 --- a/src/net/http/serve_test.go +++ b/src/net/http/serve_test.go @@ -2407,6 +2407,7 @@ func TestTimeoutHandlerRace(t *testing.T) { } // See issues 8209 and 8414. +// Both issues involved panics in the implementation of TimeoutHandler. func TestTimeoutHandlerRaceHeader(t *testing.T) { setParallel(t) defer afterTest(t) @@ -2434,7 +2435,9 @@ func TestTimeoutHandlerRaceHeader(t *testing.T) { defer func() { <-gate }() res, err := c.Get(ts.URL) if err != nil { - t.Error(err) + // We see ECONNRESET from the connection occasionally, + // and that's OK: this test is checking that the server does not panic. + t.Log(err) return } defer res.Body.Close() @@ -5507,19 +5510,23 @@ func TestServerSetKeepAlivesEnabledClosesConns(t *testing.T) { if a1 != a2 { t.Fatal("expected first two requests on same connection") } - var idle0 int - if !waitCondition(2*time.Second, 10*time.Millisecond, func() bool { - idle0 = tr.IdleConnKeyCountForTesting() - return idle0 == 1 - }) { - t.Fatalf("idle count before SetKeepAlivesEnabled called = %v; want 1", idle0) + addr := strings.TrimPrefix(ts.URL, "http://") + + // The two requests should have used the same connection, + // and there should not have been a second connection that + // was created by racing dial against reuse. + // (The first get was completed when the second get started.) + n := tr.IdleConnCountForTesting("http", addr) + if n != 1 { + t.Fatalf("idle count for %q after 2 gets = %d, want 1", addr, n) } + // SetKeepAlivesEnabled should discard idle conns. ts.Config.SetKeepAlivesEnabled(false) var idle1 int if !waitCondition(2*time.Second, 10*time.Millisecond, func() bool { - idle1 = tr.IdleConnKeyCountForTesting() + idle1 = tr.IdleConnCountForTesting("http", addr) return idle1 == 0 }) { t.Fatalf("idle count after SetKeepAlivesEnabled called = %v; want 0", idle1) diff --git a/src/net/http/transport.go b/src/net/http/transport.go index 26f642aa7a..2f9bdc2700 100644 --- a/src/net/http/transport.go +++ b/src/net/http/transport.go @@ -57,15 +57,6 @@ var DefaultTransport RoundTripper = &Transport{ // MaxIdleConnsPerHost. const DefaultMaxIdleConnsPerHost = 2 -// connsPerHostClosedCh is a closed channel used by MaxConnsPerHost -// for the property that receives from a closed channel return the -// zero value. -var connsPerHostClosedCh = make(chan struct{}) - -func init() { - close(connsPerHostClosedCh) -} - // Transport is an implementation of RoundTripper that supports HTTP, // HTTPS, and HTTP proxies (for either HTTP or HTTPS with CONNECT). // @@ -102,11 +93,11 @@ func init() { // request is treated as idempotent but the header is not sent on the // wire. type Transport struct { - idleMu sync.Mutex - wantIdle bool // user has requested to close all idle conns - idleConn map[connectMethodKey][]*persistConn // most recently used at end - idleConnCh map[connectMethodKey]chan *persistConn - idleLRU connLRU + idleMu sync.Mutex + closeIdle bool // user has requested to close all idle conns + idleConn map[connectMethodKey][]*persistConn // most recently used at end + idleConnWait map[connectMethodKey]wantConnQueue // waiting getConns + idleLRU connLRU reqMu sync.Mutex reqCanceler map[*Request]func(error) @@ -114,9 +105,9 @@ type Transport struct { altMu sync.Mutex // guards changing altProto only altProto atomic.Value // of nil or map[string]RoundTripper, key is URI scheme - connCountMu sync.Mutex - connPerHostCount map[connectMethodKey]int - connPerHostAvailable map[connectMethodKey]chan struct{} + connsPerHostMu sync.Mutex + connsPerHost map[connectMethodKey]int + connsPerHostWait map[connectMethodKey]wantConnQueue // waiting getConns // Proxy specifies a function to return a proxy for a given // Request. If the function returns a non-nil error, the @@ -203,11 +194,6 @@ type Transport struct { // active, and idle states. On limit violation, dials will block. // // Zero means no limit. - // - // For HTTP/2, this currently only controls the number of new - // connections being created at a time, instead of the total - // number. In practice, hosts using HTTP/2 only have about one - // idle connection, though. MaxConnsPerHost int // IdleConnTimeout is the maximum amount of time an idle @@ -543,7 +529,6 @@ func (t *Transport) roundTrip(req *Request) (*Response, error) { var resp *Response if pconn.alt != nil { // HTTP/2 path. - t.putOrCloseIdleConn(pconn) t.setReqCanceler(req, nil) // not cancelable with CancelRequest resp, err = pconn.alt.RoundTrip(req) } else { @@ -554,7 +539,6 @@ func (t *Transport) roundTrip(req *Request) (*Response, error) { } if http2isNoCachedConnError(err) { t.removeIdleConn(pconn) - t.decHostConnCount(cm.key()) // clean up the persistent connection } else if !pconn.shouldRetryRequest(req, err) { // Issue 16465: return underlying net.Conn.Read error from peek, // as we've historically done. @@ -665,8 +649,7 @@ func (t *Transport) CloseIdleConnections() { t.idleMu.Lock() m := t.idleConn t.idleConn = nil - t.idleConnCh = nil - t.wantIdle = true + t.closeIdle = true // close newly idle connections t.idleLRU = connLRU{} t.idleMu.Unlock() for _, conns := range m { @@ -762,7 +745,7 @@ func (cm *connectMethod) proxyAuth() string { var ( errKeepAlivesDisabled = errors.New("http: putIdleConn: keep alives disabled") errConnBroken = errors.New("http: putIdleConn: connection is in bad state") - errWantIdle = errors.New("http: putIdleConn: CloseIdleConnections was called") + errCloseIdle = errors.New("http: putIdleConn: CloseIdleConnections was called") errTooManyIdle = errors.New("http: putIdleConn: too many idle connections") errTooManyIdleHost = errors.New("http: putIdleConn: too many idle connections for host") errCloseIdleConns = errors.New("http: CloseIdleConnections called") @@ -821,29 +804,56 @@ func (t *Transport) tryPutIdleConn(pconn *persistConn) error { return errConnBroken } pconn.markReused() - key := pconn.cacheKey t.idleMu.Lock() defer t.idleMu.Unlock() - waitingDialer := t.idleConnCh[key] - select { - case waitingDialer <- pconn: - // We're done with this pconn and somebody else is - // currently waiting for a conn of this type (they're - // actively dialing, but this conn is ready - // first). Chrome calls this socket late binding. See - // https://insouciant.org/tech/connection-management-in-chromium/ + // HTTP/2 (pconn.alt != nil) connections do not come out of the idle list, + // because multiple goroutines can use them simultaneously. + // If this is an HTTP/2 connection being “returned,” we're done. + if pconn.alt != nil && t.idleLRU.m[pconn] != nil { return nil - default: - if waitingDialer != nil { - // They had populated this, but their dial won - // first, so we can clean up this map entry. - delete(t.idleConnCh, key) + } + + // Deliver pconn to goroutine waiting for idle connection, if any. + // (They may be actively dialing, but this conn is ready first. + // Chrome calls this socket late binding. + // See https://insouciant.org/tech/connection-management-in-chromium/.) + key := pconn.cacheKey + if q, ok := t.idleConnWait[key]; ok { + done := false + if pconn.alt == nil { + // HTTP/1. + // Loop over the waiting list until we find a w that isn't done already, and hand it pconn. + for q.len() > 0 { + w := q.popFront() + if w.tryDeliver(pconn, nil) { + done = true + break + } + } + } else { + // HTTP/2. + // Can hand the same pconn to everyone in the waiting list, + // and we still won't be done: we want to put it in the idle + // list unconditionally, for any future clients too. + for q.len() > 0 { + w := q.popFront() + w.tryDeliver(pconn, nil) + } + } + if q.len() == 0 { + delete(t.idleConnWait, key) + } else { + t.idleConnWait[key] = q + } + if done { + return nil } } - if t.wantIdle { - return errWantIdle + + if t.closeIdle { + return errCloseIdle } if t.idleConn == nil { t.idleConn = make(map[connectMethodKey][]*persistConn) @@ -864,71 +874,86 @@ func (t *Transport) tryPutIdleConn(pconn *persistConn) error { oldest.close(errTooManyIdle) t.removeIdleConnLocked(oldest) } - if t.IdleConnTimeout > 0 { + + // Set idle timer, but only for HTTP/1 (pconn.alt == nil). + // The HTTP/2 implementation manages the idle timer itself + // (see idleConnTimeout in h2_bundle.go). + if t.IdleConnTimeout > 0 && pconn.alt == nil { if pconn.idleTimer != nil { pconn.idleTimer.Reset(t.IdleConnTimeout) } else { - // idleTimer does not apply to HTTP/2 - if pconn.alt == nil { - pconn.idleTimer = time.AfterFunc(t.IdleConnTimeout, pconn.closeConnIfStillIdle) - } + pconn.idleTimer = time.AfterFunc(t.IdleConnTimeout, pconn.closeConnIfStillIdle) } } pconn.idleAt = time.Now() return nil } -// getIdleConnCh returns a channel to receive and return idle -// persistent connection for the given connectMethod. -// It may return nil, if persistent connections are not being used. -func (t *Transport) getIdleConnCh(cm connectMethod) chan *persistConn { +// queueForIdleConn queues w to receive the next idle connection for w.cm. +// As an optimization hint to the caller, queueForIdleConn reports whether +// it successfully delivered an already-idle connection. +func (t *Transport) queueForIdleConn(w *wantConn) (delivered bool) { if t.DisableKeepAlives { - return nil + return false } - key := cm.key() - t.idleMu.Lock() - defer t.idleMu.Unlock() - t.wantIdle = false - if t.idleConnCh == nil { - t.idleConnCh = make(map[connectMethodKey]chan *persistConn) - } - ch, ok := t.idleConnCh[key] - if !ok { - ch = make(chan *persistConn) - t.idleConnCh[key] = ch - } - return ch -} -func (t *Transport) getIdleConn(cm connectMethod) (pconn *persistConn, idleSince time.Time) { - key := cm.key() t.idleMu.Lock() defer t.idleMu.Unlock() - for { - pconns, ok := t.idleConn[key] - if !ok { - return nil, time.Time{} - } - if len(pconns) == 1 { - pconn = pconns[0] - delete(t.idleConn, key) - } else { - // 2 or more cached connections; use the most - // recently used one at the end. - pconn = pconns[len(pconns)-1] - t.idleConn[key] = pconns[:len(pconns)-1] - } - t.idleLRU.remove(pconn) - if pconn.isBroken() { - // There is a tiny window where this is - // possible, between the connecting dying and - // the persistConn readLoop calling - // Transport.removeIdleConn. Just skip it and - // carry on. - continue - } - return pconn, pconn.idleAt + + // Stop closing connections that become idle - we might want one. + // (That is, undo the effect of t.CloseIdleConnections.) + t.closeIdle = false + + if w == nil { + // Happens in test hook. + return false } + + // Look for most recently-used idle connection. + if list, ok := t.idleConn[w.key]; ok { + stop := false + delivered := false + for len(list) > 0 && !stop { + pconn := list[len(list)-1] + if pconn.isBroken() { + // persistConn.readLoop has marked the connection broken, + // but Transport.removeIdleConn has not yet removed it from the idle list. + // Drop on floor on behalf of Transport.removeIdleConn. + list = list[:len(list)-1] + continue + } + delivered = w.tryDeliver(pconn, nil) + if delivered { + if pconn.alt != nil { + // HTTP/2: multiple clients can share pconn. + // Leave it in the list. + } else { + // HTTP/1: only one client can use pconn. + // Remove it from the list. + t.idleLRU.remove(pconn) + list = list[:len(list)-1] + } + } + stop = true + } + if len(list) > 0 { + t.idleConn[w.key] = list + } else { + delete(t.idleConn, w.key) + } + if stop { + return delivered + } + } + + // Register to receive next connection that becomes idle. + if t.idleConnWait == nil { + t.idleConnWait = make(map[connectMethodKey]wantConnQueue) + } + q := t.idleConnWait[w.key] + q.pushBack(w) + t.idleConnWait[w.key] = q + return false } // removeIdleConn marks pconn as dead. @@ -1015,20 +1040,147 @@ func (t *Transport) dial(ctx context.Context, network, addr string) (net.Conn, e return zeroDialer.DialContext(ctx, network, addr) } +// A wantConn records state about a wanted connection +// (that is, an active call to getConn). +// The conn may be gotten by dialing or by finding an idle connection, +// or a cancellation may make the conn no longer wanted. +// These three options are racing against each other and use +// wantConn to coordinate and agree about the winning outcome. +type wantConn struct { + cm connectMethod + key connectMethodKey // cm.key() + ctx context.Context // context for dial + ready chan struct{} // closed when pc, err pair is delivered + + // hooks for testing to know when dials are done + // beforeDial is called in the getConn goroutine when the dial is queued. + // afterDial is called when the dial is completed or cancelled. + beforeDial func() + afterDial func() + + mu sync.Mutex // protects pc, err, close(ready) + pc *persistConn + err error +} + +// waiting reports whether w is still waiting for an answer (connection or error). +func (w *wantConn) waiting() bool { + select { + case <-w.ready: + return false + default: + return true + } +} + +// tryDeliver attempts to deliver pc, err to w and reports whether it succeeded. +func (w *wantConn) tryDeliver(pc *persistConn, err error) bool { + w.mu.Lock() + defer w.mu.Unlock() + + if w.pc != nil || w.err != nil { + return false + } + + w.pc = pc + w.err = err + if w.pc == nil && w.err == nil { + panic("net/http: internal error: misuse of tryDeliver") + } + close(w.ready) + return true +} + +// cancel marks w as no longer wanting a result (for example, due to cancellation). +// If a connection has been delivered already, cancel returns it with t.putOrCloseIdleConn. +func (w *wantConn) cancel(t *Transport, err error) { + w.mu.Lock() + if w.pc == nil && w.err == nil { + close(w.ready) // catch misbehavior in future delivery + } + pc := w.pc + w.pc = nil + w.err = err + w.mu.Unlock() + + if pc != nil { + t.putOrCloseIdleConn(pc) + } +} + +// A wantConnQueue is a queue of wantConns. +type wantConnQueue struct { + // This is a queue, not a deque. + // It is split into two stages - head[headPos:] and tail. + // popFront is trivial (headPos++) on the first stage, and + // pushBack is trivial (append) on the second stage. + // If the first stage is empty, popFront can swap the + // first and second stages to remedy the situation. + // + // This two-stage split is analogous to the use of two lists + // in Okasaki's purely functional queue but without the + // overhead of reversing the list when swapping stages. + head []*wantConn + headPos int + tail []*wantConn +} + +// len returns the number of items in the queue. +func (q *wantConnQueue) len() int { + return len(q.head) - q.headPos + len(q.tail) +} + +// pushBack adds w to the back of the queue. +func (q *wantConnQueue) pushBack(w *wantConn) { + q.tail = append(q.tail, w) +} + +// popFront removes and returns the w at the front of the queue. +func (q *wantConnQueue) popFront() *wantConn { + if q.headPos >= len(q.head) { + if len(q.tail) == 0 { + return nil + } + // Pick up tail as new head, clear tail. + q.head, q.headPos, q.tail = q.tail, 0, q.head[:0] + } + w := q.head[q.headPos] + q.head[q.headPos] = nil + q.headPos++ + return w +} + // getConn dials and creates a new persistConn to the target as // specified in the connectMethod. This includes doing a proxy CONNECT // and/or setting up TLS. If this doesn't return an error, the persistConn // is ready to write requests to. -func (t *Transport) getConn(treq *transportRequest, cm connectMethod) (*persistConn, error) { +func (t *Transport) getConn(treq *transportRequest, cm connectMethod) (pc *persistConn, err error) { req := treq.Request trace := treq.trace ctx := req.Context() if trace != nil && trace.GetConn != nil { trace.GetConn(cm.addr()) } - if pc, idleSince := t.getIdleConn(cm); pc != nil { + + w := &wantConn{ + cm: cm, + key: cm.key(), + ctx: ctx, + ready: make(chan struct{}, 1), + beforeDial: testHookPrePendingDial, + afterDial: testHookPostPendingDial, + } + defer func() { + if err != nil { + w.cancel(t, err) + } + }() + + // Queue for idle connection. + if delivered := t.queueForIdleConn(w); delivered { + pc := w.pc if trace != nil && trace.GotConn != nil { - trace.GotConn(pc.gotIdleConnTrace(idleSince)) + trace.GotConn(pc.gotIdleConnTrace(pc.idleAt)) } // set request canceler to some non-nil function so we // can detect whether it was cleared between now and when @@ -1037,108 +1189,44 @@ func (t *Transport) getConn(treq *transportRequest, cm connectMethod) (*persistC return pc, nil } - type dialRes struct { - pc *persistConn - err error - } - dialc := make(chan dialRes) - cmKey := cm.key() - - // Copy these hooks so we don't race on the postPendingDial in - // the goroutine we launch. Issue 11136. - testHookPrePendingDial := testHookPrePendingDial - testHookPostPendingDial := testHookPostPendingDial - - handlePendingDial := func() { - testHookPrePendingDial() - go func() { - if v := <-dialc; v.err == nil { - t.putOrCloseIdleConn(v.pc) - } else { - t.decHostConnCount(cmKey) - } - testHookPostPendingDial() - }() - } - cancelc := make(chan error, 1) t.setReqCanceler(req, func(err error) { cancelc <- err }) - if t.MaxConnsPerHost > 0 { - select { - case <-t.incHostConnCount(cmKey): - // count below conn per host limit; proceed - case pc := <-t.getIdleConnCh(cm): - if trace != nil && trace.GotConn != nil { - trace.GotConn(httptrace.GotConnInfo{Conn: pc.conn, Reused: pc.isReused()}) - } - return pc, nil - case <-req.Cancel: - return nil, errRequestCanceledConn - case <-req.Context().Done(): - return nil, req.Context().Err() - case err := <-cancelc: - if err == errRequestCanceled { - err = errRequestCanceledConn - } - return nil, err - } - } + // Queue for permission to dial. + t.queueForDial(w) - go func() { - pc, err := t.dialConn(ctx, cm) - dialc <- dialRes{pc, err} - }() - - idleConnCh := t.getIdleConnCh(cm) + // Wait for completion or cancellation. select { - case v := <-dialc: - // Our dial finished. - if v.pc != nil { - if trace != nil && trace.GotConn != nil && v.pc.alt == nil { - trace.GotConn(httptrace.GotConnInfo{Conn: v.pc.conn}) + case <-w.ready: + // Trace success but only for HTTP/1. + // HTTP/2 calls trace.GotConn itself. + if w.pc != nil && w.pc.alt == nil && trace != nil && trace.GotConn != nil { + trace.GotConn(httptrace.GotConnInfo{Conn: w.pc.conn, Reused: w.pc.isReused()}) + } + if w.err != nil { + // If the request has been cancelled, that's probably + // what caused w.err; if so, prefer to return the + // cancellation error (see golang.org/issue/16049). + select { + case <-req.Cancel: + return nil, errRequestCanceledConn + case <-req.Context().Done(): + return nil, req.Context().Err() + case err := <-cancelc: + if err == errRequestCanceled { + err = errRequestCanceledConn + } + return nil, err + default: + // return below } - return v.pc, nil } - // Our dial failed. See why to return a nicer error - // value. - t.decHostConnCount(cmKey) - select { - case <-req.Cancel: - // It was an error due to cancellation, so prioritize that - // error value. (Issue 16049) - return nil, errRequestCanceledConn - case <-req.Context().Done(): - return nil, req.Context().Err() - case err := <-cancelc: - if err == errRequestCanceled { - err = errRequestCanceledConn - } - return nil, err - default: - // It wasn't an error due to cancellation, so - // return the original error message: - return nil, v.err - } - case pc := <-idleConnCh: - // Another request finished first and its net.Conn - // became available before our dial. Or somebody - // else's dial that they didn't use. - // But our dial is still going, so give it away - // when it finishes: - handlePendingDial() - if trace != nil && trace.GotConn != nil { - trace.GotConn(httptrace.GotConnInfo{Conn: pc.conn, Reused: pc.isReused()}) - } - return pc, nil + return w.pc, w.err case <-req.Cancel: - handlePendingDial() return nil, errRequestCanceledConn case <-req.Context().Done(): - handlePendingDial() return nil, req.Context().Err() case err := <-cancelc: - handlePendingDial() if err == errRequestCanceled { err = errRequestCanceledConn } @@ -1146,81 +1234,102 @@ func (t *Transport) getConn(treq *transportRequest, cm connectMethod) (*persistC } } -// incHostConnCount increments the count of connections for a -// given host. It returns an already-closed channel if the count -// is not at its limit; otherwise it returns a channel which is -// notified when the count is below the limit. -func (t *Transport) incHostConnCount(cmKey connectMethodKey) <-chan struct{} { +// queueForDial queues w to wait for permission to begin dialing. +// Once w receives permission to dial, it will do so in a separate goroutine. +func (t *Transport) queueForDial(w *wantConn) { + w.beforeDial() if t.MaxConnsPerHost <= 0 { - return connsPerHostClosedCh + go t.dialConnFor(w) + return } - t.connCountMu.Lock() - defer t.connCountMu.Unlock() - if t.connPerHostCount[cmKey] == t.MaxConnsPerHost { - if t.connPerHostAvailable == nil { - t.connPerHostAvailable = make(map[connectMethodKey]chan struct{}) + + t.connsPerHostMu.Lock() + defer t.connsPerHostMu.Unlock() + + if n := t.connsPerHost[w.key]; n < t.MaxConnsPerHost { + if t.connsPerHost == nil { + t.connsPerHost = make(map[connectMethodKey]int) } - ch, ok := t.connPerHostAvailable[cmKey] - if !ok { - ch = make(chan struct{}) - t.connPerHostAvailable[cmKey] = ch - } - return ch + t.connsPerHost[w.key] = n + 1 + go t.dialConnFor(w) + return } - if t.connPerHostCount == nil { - t.connPerHostCount = make(map[connectMethodKey]int) + + if t.connsPerHostWait == nil { + t.connsPerHostWait = make(map[connectMethodKey]wantConnQueue) } - t.connPerHostCount[cmKey]++ - // return a closed channel to avoid race: if decHostConnCount is called - // after incHostConnCount and during the nil check, decHostConnCount - // will delete the channel since it's not being listened on yet. - return connsPerHostClosedCh + q := t.connsPerHostWait[w.key] + q.pushBack(w) + t.connsPerHostWait[w.key] = q } -// decHostConnCount decrements the count of connections -// for a given host. -// See Transport.MaxConnsPerHost. -func (t *Transport) decHostConnCount(cmKey connectMethodKey) { +// dialConnFor dials on behalf of w and delivers the result to w. +// dialConnFor has received permission to dial w.cm and is counted in t.connCount[w.cm.key()]. +// If the dial is cancelled or unsuccessful, dialConnFor decrements t.connCount[w.cm.key()]. +func (t *Transport) dialConnFor(w *wantConn) { + defer w.afterDial() + + pc, err := t.dialConn(w.ctx, w.cm) + delivered := w.tryDeliver(pc, err) + if err == nil && (!delivered || pc.alt != nil) { + // pconn was not passed to w, + // or it is HTTP/2 and can be shared. + // Add to the idle connection pool. + t.putOrCloseIdleConn(pc) + } + if err != nil { + t.decConnsPerHost(w.key) + } +} + +// decConnsPerHost decrements the per-host connection count for key, +// which may in turn give a different waiting goroutine permission to dial. +func (t *Transport) decConnsPerHost(key connectMethodKey) { if t.MaxConnsPerHost <= 0 { return } - t.connCountMu.Lock() - defer t.connCountMu.Unlock() - t.connPerHostCount[cmKey]-- - select { - case t.connPerHostAvailable[cmKey] <- struct{}{}: - default: - // close channel before deleting avoids getConn waiting forever in - // case getConn has reference to channel but hasn't started waiting. - // This could lead to more than MaxConnsPerHost in the unlikely case - // that > 1 go routine has fetched the channel but none started waiting. - if t.connPerHostAvailable[cmKey] != nil { - close(t.connPerHostAvailable[cmKey]) + + t.connsPerHostMu.Lock() + defer t.connsPerHostMu.Unlock() + n := t.connsPerHost[key] + if n == 0 { + // Shouldn't happen, but if it does, the counting is buggy and could + // easily lead to a silent deadlock, so report the problem loudly. + panic("net/http: internal error: connCount underflow") + } + + // Can we hand this count to a goroutine still waiting to dial? + // (Some goroutines on the wait list may have timed out or + // gotten a connection another way. If they're all gone, + // we don't want to kick off any spurious dial operations.) + if q := t.connsPerHostWait[key]; q.len() > 0 { + done := false + for q.len() > 0 { + w := q.popFront() + if w.waiting() { + go t.dialConnFor(w) + done = true + break + } + } + if q.len() == 0 { + delete(t.connsPerHostWait, key) + } else { + // q is a value (like a slice), so we have to store + // the updated q back into the map. + t.connsPerHostWait[key] = q + } + if done { + return } - delete(t.connPerHostAvailable, cmKey) } - if t.connPerHostCount[cmKey] == 0 { - delete(t.connPerHostCount, cmKey) - } -} -// connCloseListener wraps a connection, the transport that dialed it -// and the connected-to host key so the host connection count can be -// transparently decremented by whatever closes the embedded connection. -type connCloseListener struct { - net.Conn - t *Transport - cmKey connectMethodKey - didClose int32 -} - -func (c *connCloseListener) Close() error { - if atomic.AddInt32(&c.didClose, 1) != 1 { - return nil + // Otherwise, decrement the recorded count. + if n--; n == 0 { + delete(t.connsPerHost, key) + } else { + t.connsPerHost[key] = n } - err := c.Conn.Close() - c.t.decHostConnCount(c.cmKey) - return err } // The connect method and the transport can both specify a TLS @@ -1283,8 +1392,8 @@ func (pconn *persistConn) addTLS(name string, trace *httptrace.ClientTrace) erro return nil } -func (t *Transport) dialConn(ctx context.Context, cm connectMethod) (*persistConn, error) { - pconn := &persistConn{ +func (t *Transport) dialConn(ctx context.Context, cm connectMethod) (pconn *persistConn, err error) { + pconn = &persistConn{ t: t, cacheKey: cm.key(), reqch: make(chan requestAndChan, 1), @@ -1423,9 +1532,6 @@ func (t *Transport) dialConn(ctx context.Context, cm connectMethod) (*persistCon } } - if t.MaxConnsPerHost > 0 { - pconn.conn = &connCloseListener{Conn: pconn.conn, t: t, cmKey: pconn.cacheKey} - } pconn.br = bufio.NewReaderSize(pconn, t.readBufferSize()) pconn.bw = bufio.NewWriterSize(persistConnWriter{pconn}, t.writeBufferSize()) @@ -1631,7 +1737,7 @@ func (pc *persistConn) canceled() error { return pc.canceledErr } -// isReused reports whether this connection is in a known broken state. +// isReused reports whether this connection has been used before. func (pc *persistConn) isReused() bool { pc.mu.Lock() r := pc.reused @@ -2119,10 +2225,12 @@ func (pc *persistConn) wroteRequest() bool { // but the server has already replied. In this case, we don't // want to wait too long, and we want to return false so this // connection isn't re-used. + t := time.NewTimer(maxWriteWaitBeforeConnReuse) + defer t.Stop() select { case err := <-pc.writeErrCh: return err == nil - case <-time.After(maxWriteWaitBeforeConnReuse): + case <-t.C: return false } } @@ -2374,10 +2482,10 @@ func (pc *persistConn) closeLocked(err error) { pc.broken = true if pc.closed == nil { pc.closed = err - if pc.alt != nil { - // Clean up any host connection counting. - pc.t.decHostConnCount(pc.cacheKey) - } else { + pc.t.decConnsPerHost(pc.cacheKey) + // Close HTTP/1 (pc.alt == nil) connection. + // HTTP/2 closes its connection itself. + if pc.alt == nil { if err != errCallerOwnsConn { pc.conn.Close() } diff --git a/src/net/http/transport_test.go b/src/net/http/transport_test.go index 2b58e1daec..ea01a2017e 100644 --- a/src/net/http/transport_test.go +++ b/src/net/http/transport_test.go @@ -655,13 +655,17 @@ func TestTransportMaxConnsPerHost(t *testing.T) { expected := int32(tr.MaxConnsPerHost) if dialCnt != expected { - t.Errorf("Too many dials (%s): %d", scheme, dialCnt) + t.Errorf("round 1: too many dials (%s): %d != %d", scheme, dialCnt, expected) } if gotConnCnt != expected { - t.Errorf("Too many get connections (%s): %d", scheme, gotConnCnt) + t.Errorf("round 1: too many get connections (%s): %d != %d", scheme, gotConnCnt, expected) } if ts.TLS != nil && tlsHandshakeCnt != expected { - t.Errorf("Too many tls handshakes (%s): %d", scheme, tlsHandshakeCnt) + t.Errorf("round 1: too many tls handshakes (%s): %d != %d", scheme, tlsHandshakeCnt, expected) + } + + if t.Failed() { + t.FailNow() } (<-connCh).Close() @@ -670,13 +674,13 @@ func TestTransportMaxConnsPerHost(t *testing.T) { doReq() expected++ if dialCnt != expected { - t.Errorf("Too many dials (%s): %d", scheme, dialCnt) + t.Errorf("round 2: too many dials (%s): %d", scheme, dialCnt) } if gotConnCnt != expected { - t.Errorf("Too many get connections (%s): %d", scheme, gotConnCnt) + t.Errorf("round 2: too many get connections (%s): %d != %d", scheme, gotConnCnt, expected) } if ts.TLS != nil && tlsHandshakeCnt != expected { - t.Errorf("Too many tls handshakes (%s): %d", scheme, tlsHandshakeCnt) + t.Errorf("round 2: too many tls handshakes (%s): %d != %d", scheme, tlsHandshakeCnt, expected) } } @@ -2795,8 +2799,8 @@ func TestIdleConnChannelLeak(t *testing.T) { <-didRead } - if got := tr.IdleConnChMapSizeForTesting(); got != 0 { - t.Fatalf("ForDisableKeepAlives = %v, map size = %d; want 0", disableKeep, got) + if got := tr.IdleConnWaitMapSizeForTesting(); got != 0 { + t.Fatalf("for DisableKeepAlives = %v, map size = %d; want 0", disableKeep, got) } } } @@ -3378,9 +3382,9 @@ func TestTransportCloseIdleConnsThenReturn(t *testing.T) { } wantIdle("after second put", 0) - tr.RequestIdleConnChForTesting() // should toggle the transport out of idle mode + tr.QueueForIdleConnForTesting() // should toggle the transport out of idle mode if tr.IsIdleForTesting() { - t.Error("shouldn't be idle after RequestIdleConnChForTesting") + t.Error("shouldn't be idle after QueueForIdleConnForTesting") } if !tr.PutIdleTestConn("http", "example.com") { t.Fatal("after re-activation") @@ -3802,8 +3806,8 @@ func TestNoCrashReturningTransportAltConn(t *testing.T) { ln := newLocalListener(t) defer ln.Close() - handledPendingDial := make(chan bool, 1) - SetPendingDialHooks(nil, func() { handledPendingDial <- true }) + var wg sync.WaitGroup + SetPendingDialHooks(func() { wg.Add(1) }, wg.Done) defer SetPendingDialHooks(nil, nil) testDone := make(chan struct{}) @@ -3873,7 +3877,7 @@ func TestNoCrashReturningTransportAltConn(t *testing.T) { doReturned <- true <-madeRoundTripper - <-handledPendingDial + wg.Wait() } func TestTransportReuseConnection_Gzip_Chunked(t *testing.T) { From 0fddd668671c44a622be7d7ea71962be644d8218 Mon Sep 17 00:00:00 2001 From: Alexander Rakoczy Date: Mon, 8 Jul 2019 14:14:17 -0400 Subject: [PATCH 091/255] doc: document Go 1.11.12 Change-Id: I1b2e369befc58b3f88ac201442a2d9f76d87d54e Reviewed-on: https://go-review.googlesource.com/c/go/+/185257 Reviewed-by: Dmitri Shuralyov --- doc/devel/release.html | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/devel/release.html b/doc/devel/release.html index 6ab1c1b878..99106b4cd2 100644 --- a/doc/devel/release.html +++ b/doc/devel/release.html @@ -168,6 +168,12 @@ See the Go 1.11.11 milestone on our issue tracker for details.

    +

    +go1.11.12 (released 2019/07/08) includes fixes to the compiler and the linker. +See the Go +1.11.12 milestone on our issue tracker for details. +

    +

    go1.10 (released 2018/02/16)

    From c893ea8f8b5fc824b1fdd0b2e56d0cda5eacb02b Mon Sep 17 00:00:00 2001 From: Alexander Rakoczy Date: Mon, 8 Jul 2019 14:19:07 -0400 Subject: [PATCH 092/255] doc: document Go 1.12.7 Change-Id: Id5d2f4cc6bc310bed2516ce0f50c395802475f66 Reviewed-on: https://go-review.googlesource.com/c/go/+/185258 Reviewed-by: Dmitri Shuralyov --- doc/devel/release.html | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/devel/release.html b/doc/devel/release.html index 99106b4cd2..6bca2e5ff8 100644 --- a/doc/devel/release.html +++ b/doc/devel/release.html @@ -77,6 +77,13 @@ the go command, and the crypto/x509, net/http, and 1.12.6 milestone on our issue tracker for details.

    +

    +go1.12.7 (released 2019/07/08) includes fixes to cgo, the compiler, +and the linker. +See the Go +1.12.7 milestone on our issue tracker for details. +

    +

    go1.11 (released 2018/08/24)

    From a19c0ceda59b2223ca873b61f059c8ccb447fa80 Mon Sep 17 00:00:00 2001 From: Agniva De Sarker Date: Mon, 8 Jul 2019 20:33:42 +0530 Subject: [PATCH 093/255] Revert "go/parser: include more comments in a struct or interface" This reverts commit https://golang.org/cl/161177/. Reason for revert: this led to non-contiguous comments spaced by an empty line to be grouped into a single CommentGroup Fixes #32944 Updates #10858 Change-Id: I5e16663b308c3b560496da8e66c33befdf9ed9dd Reviewed-on: https://go-review.googlesource.com/c/go/+/185040 Reviewed-by: Robert Griesemer --- src/go/doc/testdata/issue10858.0.golden | 79 ------------------ src/go/doc/testdata/issue10858.1.golden | 79 ------------------ src/go/doc/testdata/issue10858.2.golden | 79 ------------------ src/go/doc/testdata/issue10858.go | 102 ------------------------ src/go/parser/parser.go | 15 +--- 5 files changed, 1 insertion(+), 353 deletions(-) delete mode 100644 src/go/doc/testdata/issue10858.0.golden delete mode 100644 src/go/doc/testdata/issue10858.1.golden delete mode 100644 src/go/doc/testdata/issue10858.2.golden delete mode 100644 src/go/doc/testdata/issue10858.go diff --git a/src/go/doc/testdata/issue10858.0.golden b/src/go/doc/testdata/issue10858.0.golden deleted file mode 100644 index 51f8f1e0d3..0000000000 --- a/src/go/doc/testdata/issue10858.0.golden +++ /dev/null @@ -1,79 +0,0 @@ -// -PACKAGE issue10858 - -IMPORTPATH - testdata/issue10858 - -IMPORTS - unsafe - -FILENAMES - testdata/issue10858.go - -CONSTANTS - // First line Second line - const ( - - // C1 comment - C1 int = 1 << 0 - - C2 int = 1 << 1 - - // C3 comment - // - // with a line gap - C3 int = 1 << 2 - ) - - -TYPES - // StructTag is a comment with 2 connecting lines - type StructTag string // adjacent comment - - // Get returns the value associated with key in the tag string. - func (tag StructTag) Get(key string) string - - // First line Second line - type Type interface { - // Should be present - - // Align returns the alignment in bytes of a value of - // this type when allocated in memory. - Align() int - - // FieldAlign returns the alignment in bytes of a value of - // this type when used as a field in a struct. - FieldAlign() int // adjacent comment - - // Ptr: Elem - // Slice: Elem - - // Bits returns the size of the type in bits. - - // - // It panics if the type's Kind is not one of the - // sized or unsized Int, Uint, Float, or Complex kinds. - Bits() int - } - - // NewType is a comment ending with this line. - func NewType() Type - - // TypeAlg is a copy of runtime.typeAlg - type TypeAlg struct { - // function for hashing objects of this type - // - // - // (ptr to object, seed) -> hash - Hash func(unsafe.Pointer, uintptr) uintptr - - // include - // include - - // include - - // function for comparing objects of this type - // (ptr to object A, ptr to object B) -> ==? - Equal func(unsafe.Pointer, unsafe.Pointer) bool - } - diff --git a/src/go/doc/testdata/issue10858.1.golden b/src/go/doc/testdata/issue10858.1.golden deleted file mode 100644 index 51f8f1e0d3..0000000000 --- a/src/go/doc/testdata/issue10858.1.golden +++ /dev/null @@ -1,79 +0,0 @@ -// -PACKAGE issue10858 - -IMPORTPATH - testdata/issue10858 - -IMPORTS - unsafe - -FILENAMES - testdata/issue10858.go - -CONSTANTS - // First line Second line - const ( - - // C1 comment - C1 int = 1 << 0 - - C2 int = 1 << 1 - - // C3 comment - // - // with a line gap - C3 int = 1 << 2 - ) - - -TYPES - // StructTag is a comment with 2 connecting lines - type StructTag string // adjacent comment - - // Get returns the value associated with key in the tag string. - func (tag StructTag) Get(key string) string - - // First line Second line - type Type interface { - // Should be present - - // Align returns the alignment in bytes of a value of - // this type when allocated in memory. - Align() int - - // FieldAlign returns the alignment in bytes of a value of - // this type when used as a field in a struct. - FieldAlign() int // adjacent comment - - // Ptr: Elem - // Slice: Elem - - // Bits returns the size of the type in bits. - - // - // It panics if the type's Kind is not one of the - // sized or unsized Int, Uint, Float, or Complex kinds. - Bits() int - } - - // NewType is a comment ending with this line. - func NewType() Type - - // TypeAlg is a copy of runtime.typeAlg - type TypeAlg struct { - // function for hashing objects of this type - // - // - // (ptr to object, seed) -> hash - Hash func(unsafe.Pointer, uintptr) uintptr - - // include - // include - - // include - - // function for comparing objects of this type - // (ptr to object A, ptr to object B) -> ==? - Equal func(unsafe.Pointer, unsafe.Pointer) bool - } - diff --git a/src/go/doc/testdata/issue10858.2.golden b/src/go/doc/testdata/issue10858.2.golden deleted file mode 100644 index 51f8f1e0d3..0000000000 --- a/src/go/doc/testdata/issue10858.2.golden +++ /dev/null @@ -1,79 +0,0 @@ -// -PACKAGE issue10858 - -IMPORTPATH - testdata/issue10858 - -IMPORTS - unsafe - -FILENAMES - testdata/issue10858.go - -CONSTANTS - // First line Second line - const ( - - // C1 comment - C1 int = 1 << 0 - - C2 int = 1 << 1 - - // C3 comment - // - // with a line gap - C3 int = 1 << 2 - ) - - -TYPES - // StructTag is a comment with 2 connecting lines - type StructTag string // adjacent comment - - // Get returns the value associated with key in the tag string. - func (tag StructTag) Get(key string) string - - // First line Second line - type Type interface { - // Should be present - - // Align returns the alignment in bytes of a value of - // this type when allocated in memory. - Align() int - - // FieldAlign returns the alignment in bytes of a value of - // this type when used as a field in a struct. - FieldAlign() int // adjacent comment - - // Ptr: Elem - // Slice: Elem - - // Bits returns the size of the type in bits. - - // - // It panics if the type's Kind is not one of the - // sized or unsized Int, Uint, Float, or Complex kinds. - Bits() int - } - - // NewType is a comment ending with this line. - func NewType() Type - - // TypeAlg is a copy of runtime.typeAlg - type TypeAlg struct { - // function for hashing objects of this type - // - // - // (ptr to object, seed) -> hash - Hash func(unsafe.Pointer, uintptr) uintptr - - // include - // include - - // include - - // function for comparing objects of this type - // (ptr to object A, ptr to object B) -> ==? - Equal func(unsafe.Pointer, unsafe.Pointer) bool - } - diff --git a/src/go/doc/testdata/issue10858.go b/src/go/doc/testdata/issue10858.go deleted file mode 100644 index aebea50651..0000000000 --- a/src/go/doc/testdata/issue10858.go +++ /dev/null @@ -1,102 +0,0 @@ -package issue10858 - -import "unsafe" - -// Should be ignored - -// First line -// -// Second line -type Type interface { - // Should be present - - // Align returns the alignment in bytes of a value of - // this type when allocated in memory. - Align() int - - // FieldAlign returns the alignment in bytes of a value of - // this type when used as a field in a struct. - FieldAlign() int // adjacent comment - - // Ptr: Elem - // Slice: Elem - - // Bits returns the size of the type in bits. - - // - // It panics if the type's Kind is not one of the - // sized or unsized Int, Uint, Float, or Complex kinds. - Bits() int - - // Should be ignored -} - -// Should be ignored - -// NewType is a comment -// -// ending with this line. -func NewType() Type {} - -// Ignore - -// First line -// -// Second line -const ( - // Should be ignored - - // C1 comment - C1 int = 1 << 0 - - // Should - // - // be ignored - - C2 int = 1 << 1 - - // C3 comment - // - // with a line gap - C3 int = 1 << 2 - - // Should be ignored -) - -// Should be ignored - -// Should be ignored - -// TypeAlg is a -// copy of runtime.typeAlg -type TypeAlg struct { - // function for hashing objects of this type - // - // - // (ptr to object, seed) -> hash - Hash func(unsafe.Pointer, uintptr) uintptr - - // include - // include - - // include - - // function for comparing objects of this type - // (ptr to object A, ptr to object B) -> ==? - Equal func(unsafe.Pointer, unsafe.Pointer) bool - // Should be ignored -} - -// Should be ignored - -// StructTag is a comment -// -// -// with 2 connecting lines -type StructTag string // adjacent comment - -// Should be ignored - -// Get returns the value associated with key in the tag string. -func (tag StructTag) Get(key string) string { -} diff --git a/src/go/parser/parser.go b/src/go/parser/parser.go index 9294bb6b3e..ba16b65224 100644 --- a/src/go/parser/parser.go +++ b/src/go/parser/parser.go @@ -63,7 +63,6 @@ type parser struct { topScope *ast.Scope // top-most scope; may be pkgScope unresolved []*ast.Ident // unresolved identifiers imports []*ast.ImportSpec // list of imports - inStruct bool // if set, parser is parsing a struct or interface (for comment collection) // Label scopes // (maintained by open/close LabelScope) @@ -338,15 +337,7 @@ func (p *parser) next() { // consume successor comments, if any endline = -1 for p.tok == token.COMMENT { - n := 1 - // When inside a struct (or interface), we don't want to lose comments - // separated from individual field (or method) documentation by empty - // lines. Allow for some white space in this case and collect those - // comments as a group. See issue #10858 for details. - if p.inStruct { - n = 2 - } - comment, endline = p.consumeCommentGroup(n) + comment, endline = p.consumeCommentGroup(1) } if endline+1 == p.file.Line(p.pos) { @@ -757,7 +748,6 @@ func (p *parser) parseStructType() *ast.StructType { } pos := p.expect(token.STRUCT) - p.inStruct = true lbrace := p.expect(token.LBRACE) scope := ast.NewScope(nil) // struct scope var list []*ast.Field @@ -768,7 +758,6 @@ func (p *parser) parseStructType() *ast.StructType { list = append(list, p.parseFieldDecl(scope)) } rbrace := p.expect(token.RBRACE) - p.inStruct = false return &ast.StructType{ Struct: pos, @@ -970,7 +959,6 @@ func (p *parser) parseInterfaceType() *ast.InterfaceType { } pos := p.expect(token.INTERFACE) - p.inStruct = true lbrace := p.expect(token.LBRACE) scope := ast.NewScope(nil) // interface scope var list []*ast.Field @@ -978,7 +966,6 @@ func (p *parser) parseInterfaceType() *ast.InterfaceType { list = append(list, p.parseMethodSpec(scope)) } rbrace := p.expect(token.RBRACE) - p.inStruct = false return &ast.InterfaceType{ Interface: pos, From 06ef108cec98b3dfc0fba3f49e733a18eb9badd5 Mon Sep 17 00:00:00 2001 From: LE Manh Cuong Date: Sun, 7 Jul 2019 23:08:20 +0700 Subject: [PATCH 094/255] cmd/compile: fix unsafeValue handles OLSH/ORSH wrong For OLSH/ORSH, the right node is not a uintptr-typed. However, unsafeValue still be called recursively for it, causing the compiler crashes. To fixing, the right node only needs to be evaluated for side-effects, so just discard its value. Fixes #32959 Change-Id: I34d5aa0823a0545f6dad1ec34774235ecf11addc Reviewed-on: https://go-review.googlesource.com/c/go/+/185039 Run-TryBot: Cuong Manh Le TryBot-Result: Gobot Gobot Reviewed-by: David Chase Reviewed-by: Matthew Dempsky --- src/cmd/compile/internal/gc/escape.go | 7 ++++++- test/fixedbugs/issue32959.go | 17 +++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 test/fixedbugs/issue32959.go diff --git a/src/cmd/compile/internal/gc/escape.go b/src/cmd/compile/internal/gc/escape.go index 47ce853858..f92f4a7a6c 100644 --- a/src/cmd/compile/internal/gc/escape.go +++ b/src/cmd/compile/internal/gc/escape.go @@ -614,9 +614,14 @@ func (e *Escape) unsafeValue(k EscHole, n *Node) { } case OPLUS, ONEG, OBITNOT: e.unsafeValue(k, n.Left) - case OADD, OSUB, OOR, OXOR, OMUL, ODIV, OMOD, OLSH, ORSH, OAND, OANDNOT: + case OADD, OSUB, OOR, OXOR, OMUL, ODIV, OMOD, OAND, OANDNOT: e.unsafeValue(k, n.Left) e.unsafeValue(k, n.Right) + case OLSH, ORSH: + e.unsafeValue(k, n.Left) + // RHS need not be uintptr-typed (#32959) and can't meaningfully + // flow pointers anyway. + e.discard(n.Right) default: e.exprSkipInit(e.discardHole(), n) } diff --git a/test/fixedbugs/issue32959.go b/test/fixedbugs/issue32959.go new file mode 100644 index 0000000000..a0dc789a04 --- /dev/null +++ b/test/fixedbugs/issue32959.go @@ -0,0 +1,17 @@ +// compile + +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Test escape analysis with shifting constant + +package main + +import "unsafe" + +func main() { + var l uint64 + var p unsafe.Pointer + _ = unsafe.Pointer(uintptr(p) + (uintptr(l) >> 1)) +} From 84fce9832b7d1dfb8d39eb7cb76d689e306c4eed Mon Sep 17 00:00:00 2001 From: Gernot Vormayr Date: Mon, 8 Jul 2019 01:27:10 +0200 Subject: [PATCH 095/255] cmd/cgo: fix check for conversion of ptr to struct field According to the documentation "When passing a pointer to a field in a struct, the Go memory in question is the memory occupied by the field, not the entire struct.". checkAddr states that this should also work with type conversions, which is implemented in isType. However, ast.StarExpr must be enclosed in ast.ParenExpr according to the go spec (see example below), which is not considered in the checks. Example: // struct Si { int i; int *p; }; void f(struct I *x) {} import "C" type S { p *int i C.struct_Si } func main() { v := &S{new(int)} C.f((*C.struct_I)(&v.i)) // <- panic } This example will cause cgo to emit a cgoCheck that checks the whole struct S instead of just S.i causing the panic "cgo argument has Go pointer to Go pointer". This patch fixes this situation by adding support for ast.ParenExpr to isType and adds a test, that fails without the fix. Fixes #32970. Change-Id: I15ea28c98f839e9fa708859ed107a2e5f1483133 Reviewed-on: https://go-review.googlesource.com/c/go/+/185098 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- misc/cgo/errors/ptr_test.go | 9 +++++++++ src/cmd/cgo/gcc.go | 2 ++ 2 files changed, 11 insertions(+) diff --git a/misc/cgo/errors/ptr_test.go b/misc/cgo/errors/ptr_test.go index 522ef2adfd..4a46b6023b 100644 --- a/misc/cgo/errors/ptr_test.go +++ b/misc/cgo/errors/ptr_test.go @@ -423,6 +423,15 @@ var ptrTests = []ptrTest{ body: `t := reflect.StructOf([]reflect.StructField{{Name: "MyInt38", Type: reflect.TypeOf(MyInt38(0)), Anonymous: true}}); v := reflect.New(t).Elem(); v.Interface().(Getter38).Get()`, fail: false, }, + { + // Test that a converted address of a struct field results + // in a check for just that field and not the whole struct. + name: "structfieldcast", + c: `struct S40i { int i; int* p; }; void f40(struct S40i* p) {}`, + support: `type S40 struct { p *int; a C.struct_S40i }`, + body: `s := &S40{p: new(int)}; C.f40((*C.struct_S40i)(&s.a))`, + fail: false, + }, } func TestPointerChecks(t *testing.T) { diff --git a/src/cmd/cgo/gcc.go b/src/cmd/cgo/gcc.go index d4e8186cab..1bd3e2417c 100644 --- a/src/cmd/cgo/gcc.go +++ b/src/cmd/cgo/gcc.go @@ -1239,6 +1239,8 @@ func (p *Package) isType(t ast.Expr) bool { if strings.HasPrefix(t.Name, "_Ctype_") { return true } + case *ast.ParenExpr: + return p.isType(t.X) case *ast.StarExpr: return p.isType(t.X) case *ast.ArrayType, *ast.StructType, *ast.FuncType, *ast.InterfaceType, From 726b1bf9871f4905d85a53051301f636e8273328 Mon Sep 17 00:00:00 2001 From: Austin Clements Date: Tue, 11 Jun 2019 13:29:53 -0400 Subject: [PATCH 096/255] runtime: expand comments on runtime panic checks This adds comments explaining why it's important that some panics are allowed in the runtime (even though this isn't ideal). Change-Id: I04c6fc4f792f3793f951619ccaea6bfef2f1763c Reviewed-on: https://go-review.googlesource.com/c/go/+/181737 Reviewed-by: Keith Randall --- src/runtime/panic.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/runtime/panic.go b/src/runtime/panic.go index ce26eb540d..5f33cd7c0c 100644 --- a/src/runtime/panic.go +++ b/src/runtime/panic.go @@ -29,13 +29,24 @@ func panicCheck1(pc uintptr, msg string) { } // Same as above, but calling from the runtime is allowed. +// +// Using this function is necessary for any panic that may be +// generated by runtime.sigpanic, since those are always called by the +// runtime. func panicCheck2(err string) { + // panic allocates, so to avoid recursive malloc, turn panics + // during malloc into throws. gp := getg() if gp != nil && gp.m != nil && gp.m.mallocing != 0 { throw(err) } } +// Many of the following panic entry-points turn into throws when they +// happen in various runtime contexts. These should never happen in +// the runtime, and if they do, they indicate a serious issue and +// should not be caught by user code. +// // The panic{Index,Slice,divide,shift} functions are called by // code generated by the compiler for out of bounds index expressions, // out of bounds slice expressions, division by zero, and shift by negative. @@ -49,6 +60,11 @@ func panicCheck2(err string) { // runtime package we turn the panic into a throw. That will dump the // entire runtime stack for easier debugging. // +// The entry points called by the signal handler will be called from +// runtime.sigpanic, so we can't disallow calls from the runtime to +// these (they always look like they're called from the runtime). +// Hence, for these, we just check for clearly bad runtime conditions. +// // The panic{Index,Slice} functions are implemented in assembly and tail call // to the goPanic{Index,Slice} functions below. This is done so we can use // a space-minimal register calling convention. From 0067586953f7a6b6048e2abaec8794cbaccd0168 Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Tue, 25 Jun 2019 14:43:06 -0400 Subject: [PATCH 097/255] cmd/go: add a Latest field to the output of 'go mod download -json' Fixes #32239 Change-Id: I5723abaa9b6bed7e8fb2d95f749a4e03ecc8741b Reviewed-on: https://go-review.googlesource.com/c/go/+/183841 Run-TryBot: Bryan C. Mills TryBot-Result: Gobot Gobot Reviewed-by: Jay Conrod --- src/cmd/go/alldocs.go | 1 + src/cmd/go/internal/modcmd/download.go | 25 +++++++++++++++++++ src/cmd/go/testdata/script/mod_download.txt | 4 ++- .../testdata/script/mod_download_latest.txt | 20 +++++++++++++++ .../go/testdata/script/mod_list_upgrade.txt | 20 +++++++++++++++ 5 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 src/cmd/go/testdata/script/mod_download_latest.txt diff --git a/src/cmd/go/alldocs.go b/src/cmd/go/alldocs.go index 6541e085cc..44d07c1197 100644 --- a/src/cmd/go/alldocs.go +++ b/src/cmd/go/alldocs.go @@ -1008,6 +1008,7 @@ // Dir string // absolute path to cached source root directory // Sum string // checksum for path, version (as in go.sum) // GoModSum string // checksum for go.mod (as in go.sum) +// Latest bool // would @latest resolve to this version? // } // // See 'go help modules' for more about module queries. diff --git a/src/cmd/go/internal/modcmd/download.go b/src/cmd/go/internal/modcmd/download.go index 71b660d6fd..1137982e47 100644 --- a/src/cmd/go/internal/modcmd/download.go +++ b/src/cmd/go/internal/modcmd/download.go @@ -43,6 +43,7 @@ corresponding to this Go struct: Dir string // absolute path to cached source root directory Sum string // checksum for path, version (as in go.sum) GoModSum string // checksum for go.mod (as in go.sum) + Latest bool // would @latest resolve to this version? } See 'go help modules' for more about module queries. @@ -65,6 +66,7 @@ type moduleJSON struct { Dir string `json:",omitempty"` Sum string `json:",omitempty"` GoModSum string `json:",omitempty"` + Latest bool `json:",omitempty"` } func runDownload(cmd *base.Command, args []string) { @@ -98,6 +100,26 @@ func runDownload(cmd *base.Command, args []string) { work.Add(m) } + latest := map[string]string{} // path → version + if *downloadJSON { + // We need to populate the Latest field, but if the main module depends on a + // version newer than latest — or if the version requested on the command + // line is itself newer than latest — that's not trivial to determine from + // the info returned by ListModules. Instead, we issue a separate + // ListModules request for "latest", which should be inexpensive relative to + // downloading the modules. + var latestArgs []string + for _, m := range mods { + latestArgs = append(latestArgs, m.Path+"@latest") + } + + for _, info := range modload.ListModules(latestArgs, listU, listVersions) { + if info.Version != "" { + latest[info.Path] = info.Version + } + } + } + work.Do(10, func(item interface{}) { m := item.(*moduleJSON) var err error @@ -128,6 +150,9 @@ func runDownload(cmd *base.Command, args []string) { m.Error = err.Error() return } + if latest[m.Path] == m.Version { + m.Latest = true + } }) if *downloadJSON { diff --git a/src/cmd/go/testdata/script/mod_download.txt b/src/cmd/go/testdata/script/mod_download.txt index c6729c71a2..75e4acbab0 100644 --- a/src/cmd/go/testdata/script/mod_download.txt +++ b/src/cmd/go/testdata/script/mod_download.txt @@ -17,6 +17,7 @@ stderr 'this.domain.is.invalid' stdout '"Error": ".*this.domain.is.invalid.*"' # download -json with version should print JSON +# and download the .info file for the 'latest' version. go mod download -json 'rsc.io/quote@<=v1.5.0' stdout '^\t"Path": "rsc.io/quote"' stdout '^\t"Version": "v1.5.0"' @@ -27,13 +28,14 @@ stdout '^\t"Sum": "h1:6fJa6E\+wGadANKkUMlZ0DhXFpoKlslOQDCo259XtdIE="' # hash of stdout '^\t"GoModSum": "h1:LzX7hefJvL54yjefDEDHNONDjII0t9xZLPXsUe\+TKr0="' ! stdout '"Error"' +exists $GOPATH/pkg/mod/cache/download/rsc.io/quote/@v/v1.5.2.info + # download queries above should not have added to go.mod. go list -m all ! stdout rsc.io # add to go.mod so we can test non-query downloads go mod edit -require rsc.io/quote@v1.5.2 -! exists $GOPATH/pkg/mod/cache/download/rsc.io/quote/@v/v1.5.2.info ! exists $GOPATH/pkg/mod/cache/download/rsc.io/quote/@v/v1.5.2.mod ! exists $GOPATH/pkg/mod/cache/download/rsc.io/quote/@v/v1.5.2.zip diff --git a/src/cmd/go/testdata/script/mod_download_latest.txt b/src/cmd/go/testdata/script/mod_download_latest.txt new file mode 100644 index 0000000000..60d860e4da --- /dev/null +++ b/src/cmd/go/testdata/script/mod_download_latest.txt @@ -0,0 +1,20 @@ +env GO111MODULE=on + +# If the module is the latest version of itself, +# the Latest field should be set. +go mod download -json rsc.io/quote@v1.5.2 +stdout '"Latest":\s*true' + +# If the module is older than latest, the field should be unset. +go mod download -json rsc.io/quote@v1.5.1 +! stdout '"Latest":' + +# If the module is newer than "latest", the field should be unset... +go mod download -json rsc.io/quote@v1.5.3-pre1 +! stdout '"Latest":' + +# ...even if that version is also what is required by the main module. +go mod init example.com +go mod edit -require rsc.io/quote@v1.5.3-pre1 +go mod download -json rsc.io/quote@v1.5.3-pre1 +! stdout '"Latest":' diff --git a/src/cmd/go/testdata/script/mod_list_upgrade.txt b/src/cmd/go/testdata/script/mod_list_upgrade.txt index 474df0dc26..f2d0649092 100644 --- a/src/cmd/go/testdata/script/mod_list_upgrade.txt +++ b/src/cmd/go/testdata/script/mod_list_upgrade.txt @@ -1,8 +1,28 @@ env GO111MODULE=on +# If the current version is not latest, 'go list -u' should include its upgrade. go list -m -u all stdout 'rsc.io/quote v1.2.0 \[v1\.5\.2\]' +# If the current version is latest, 'go list -u' should omit the upgrade. +go get -d rsc.io/quote@v1.5.2 +go list -m -u all +stdout 'rsc.io/quote v1.5.2$' + +# If the current version is newer than latest, 'go list -u' should +# omit the upgrade. +go get -d rsc.io/quote@v1.5.3-pre1 +go list -m -u all +stdout 'rsc.io/quote v1.5.3-pre1$' + +# If the current build list has a higher version and the user asks about +# a lower one, -u should report the upgrade for the lower one +# but leave the build list unchanged. +go list -m -u rsc.io/quote@v1.5.1 +stdout 'rsc.io/quote v1.5.1 \[v1.5.2\]$' +go list -m -u rsc.io/quote +stdout 'rsc.io/quote v1.5.3-pre1$' + -- go.mod -- module x require rsc.io/quote v1.2.0 From a05c13206450322844dd67cdf2acac430338c7cd Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Tue, 9 Jul 2019 17:33:58 -0400 Subject: [PATCH 098/255] cmd/go/internal/modload: remove unused warnPattern function Change-Id: I6cf66870952d4c652912dd50a0b9af41bdc79dce Reviewed-on: https://go-review.googlesource.com/c/go/+/185346 Run-TryBot: Bryan C. Mills TryBot-Result: Gobot Gobot Reviewed-by: Emmanuel Odeke Reviewed-by: Jay Conrod --- src/cmd/go/internal/modload/load.go | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/cmd/go/internal/modload/load.go b/src/cmd/go/internal/modload/load.go index 1e9a1a3c35..992fa70b79 100644 --- a/src/cmd/go/internal/modload/load.go +++ b/src/cmd/go/internal/modload/load.go @@ -247,16 +247,6 @@ func pathInModuleCache(dir string) string { return "" } -// warnPattern returns list, the result of matching pattern, -// but if list is empty then first it prints a warning about -// the pattern not matching any packages. -func warnPattern(pattern string, list []string) []string { - if len(list) == 0 { - fmt.Fprintf(os.Stderr, "warning: %q matched no packages\n", pattern) - } - return list -} - // ImportFromFiles adds modules to the build list as needed // to satisfy the imports in the named Go source files. func ImportFromFiles(gofiles []string) { From a1bcee4f1c196681397f1140e4338d056a188a3e Mon Sep 17 00:00:00 2001 From: Cherry Zhang Date: Wed, 10 Jul 2019 10:58:59 -0400 Subject: [PATCH 099/255] test: add a test for gccgo bug in handling break statement in a select Gccgo CL 184998 added optimizations for one- and two-case select statements. But it didn't handle break statement in the select case correctly. The fix is CL 185519. This CL adds a test. Change-Id: Ide1b199f106172b41dd77c1f6e0d662fccdd8cc5 Reviewed-on: https://go-review.googlesource.com/c/go/+/185520 Run-TryBot: Cherry Zhang TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- test/chan/select8.go | 55 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 test/chan/select8.go diff --git a/test/chan/select8.go b/test/chan/select8.go new file mode 100644 index 0000000000..20bca3a0f9 --- /dev/null +++ b/test/chan/select8.go @@ -0,0 +1,55 @@ +// run + +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Test break statements in a select. +// Gccgo had a bug in handling this. +// Test 1,2,3-case selects, so it covers both the general +// code path and the specialized optimizations for one- +// and two-case selects. + +package main + +var ch = make(chan int) + +func main() { + go func() { + for { + ch <- 5 + } + }() + + select { + case <-ch: + break + panic("unreachable") + } + + select { + default: + break + panic("unreachable") + } + + select { + case <-ch: + break + panic("unreachable") + default: + break + panic("unreachable") + } + + select { + case <-ch: + break + panic("unreachable") + case ch <- 10: + panic("unreachable") + default: + break + panic("unreachable") + } +} From 9d56dd8ea30068aa3b3211939b50407b10edb50e Mon Sep 17 00:00:00 2001 From: Than McIntosh Date: Wed, 10 Jul 2019 09:12:24 -0400 Subject: [PATCH 100/255] test: new testcase for gccgo compiler bug Updates #33013 Change-Id: I3db062b37860bb0c6c99a553408b47cf0313531e Reviewed-on: https://go-review.googlesource.com/c/go/+/185517 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- test/fixedbugs/issue33013.dir/a.go | 9 +++++++++ test/fixedbugs/issue33013.dir/b.go | 24 ++++++++++++++++++++++++ test/fixedbugs/issue33013.dir/c.go | 19 +++++++++++++++++++ test/fixedbugs/issue33013.dir/d.go | 16 ++++++++++++++++ test/fixedbugs/issue33013.go | 9 +++++++++ 5 files changed, 77 insertions(+) create mode 100644 test/fixedbugs/issue33013.dir/a.go create mode 100644 test/fixedbugs/issue33013.dir/b.go create mode 100644 test/fixedbugs/issue33013.dir/c.go create mode 100644 test/fixedbugs/issue33013.dir/d.go create mode 100644 test/fixedbugs/issue33013.go diff --git a/test/fixedbugs/issue33013.dir/a.go b/test/fixedbugs/issue33013.dir/a.go new file mode 100644 index 0000000000..056be88aea --- /dev/null +++ b/test/fixedbugs/issue33013.dir/a.go @@ -0,0 +1,9 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package a + +type G interface { + UsesEmpty(p interface{}) int +} diff --git a/test/fixedbugs/issue33013.dir/b.go b/test/fixedbugs/issue33013.dir/b.go new file mode 100644 index 0000000000..5694b58282 --- /dev/null +++ b/test/fixedbugs/issue33013.dir/b.go @@ -0,0 +1,24 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package b + +import "a" + +type Service uint64 +type ServiceDesc struct { + X int + uc +} + +type uc interface { + f() a.G +} + +var q int + +func RS(svcd *ServiceDesc, server interface{}, qq uint8) *Service { + defer func() { q += int(qq) }() + return nil +} diff --git a/test/fixedbugs/issue33013.dir/c.go b/test/fixedbugs/issue33013.dir/c.go new file mode 100644 index 0000000000..bfdc0b535f --- /dev/null +++ b/test/fixedbugs/issue33013.dir/c.go @@ -0,0 +1,19 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package c + +import ( + "a" + "b" +) + +type BI interface { + Something(s int64) int64 + Another(pxp a.G) int32 +} + +func BRS(sd *b.ServiceDesc, server BI, xyz int) *b.Service { + return b.RS(sd, server, 7) +} diff --git a/test/fixedbugs/issue33013.dir/d.go b/test/fixedbugs/issue33013.dir/d.go new file mode 100644 index 0000000000..f4fff4ac62 --- /dev/null +++ b/test/fixedbugs/issue33013.dir/d.go @@ -0,0 +1,16 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package d + +import ( + "b" + "c" +) + +var GA b.Service + +func C() { + c.BRS(nil, nil, 22) +} diff --git a/test/fixedbugs/issue33013.go b/test/fixedbugs/issue33013.go new file mode 100644 index 0000000000..e363cf500f --- /dev/null +++ b/test/fixedbugs/issue33013.go @@ -0,0 +1,9 @@ +// compiledir + +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Issue 33013: gccgo compiler error with inlinable function + +package ignored From 80cca23b59fe75ba588f7ddee7adb48a6afe2eb7 Mon Sep 17 00:00:00 2001 From: Francesco Renzi Date: Tue, 9 Jul 2019 14:43:10 +0100 Subject: [PATCH 101/255] strings: document that order of pairs matters in NewReplacer Update NewReplacer documentation to specify that in the case of multiple matches at the same position, the matching old/new pair that appears first in NewReplacer arguments takes precedence. Fixes #32699 Change-Id: I9d0616d28e5cd8c9bfa301be201f2b0ebf361dff Reviewed-on: https://go-review.googlesource.com/c/go/+/185099 Reviewed-by: Ian Lance Taylor Reviewed-by: Rob Pike --- src/strings/replace.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/strings/replace.go b/src/strings/replace.go index ccab1fb861..e28d428879 100644 --- a/src/strings/replace.go +++ b/src/strings/replace.go @@ -25,7 +25,8 @@ type replacer interface { // NewReplacer returns a new Replacer from a list of old, new string // pairs. Replacements are performed in the order they appear in the -// target string, without overlapping matches. +// target string, without overlapping matches. The old string +// comparisons are done in argument order. // // NewReplacer panics if given an odd number of arguments. func NewReplacer(oldnew ...string) *Replacer { From a5f3823c27d93f16dfde56509071a20130e0c731 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Chigot?= Date: Thu, 11 Jul 2019 09:43:38 +0200 Subject: [PATCH 102/255] net: set TestNotTemporaryRead flaky for AIX MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This test sometimes times out when the machine is busy. The reason behind is still a bit blurry. But it seems to comes from the fact that on AIX, once a listen is performed a socket, every connection will be accepted even before an accept is made (which only occurs when a machine is busy). On Linux, a socket is created as a "passive socket" which seems to wait for the accept before allowing incoming connections. Updates #29685 Change-Id: I41b053b7d5f5b4420b72d6a217be72e41220d769 Reviewed-on: https://go-review.googlesource.com/c/go/+/185717 Run-TryBot: Clément Chigot Reviewed-by: Ian Lance Taylor --- src/net/net_test.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/net/net_test.go b/src/net/net_test.go index 2b5845bb15..463ae8856d 100644 --- a/src/net/net_test.go +++ b/src/net/net_test.go @@ -525,6 +525,9 @@ func TestNotTemporaryRead(t *testing.T) { if runtime.GOOS == "freebsd" { testenv.SkipFlaky(t, 25289) } + if runtime.GOOS == "aix" { + testenv.SkipFlaky(t, 29685) + } t.Parallel() server := func(cs *TCPConn) error { cs.SetLinger(0) From e0739d12007f4fabbbef91deee9de9923d5924d8 Mon Sep 17 00:00:00 2001 From: Cherry Zhang Date: Thu, 11 Jul 2019 16:09:50 -0400 Subject: [PATCH 103/255] test: add a test for gccgo bug #33062. Gccgo generates incorrect type equality functions for some types. CL 185817 fixes it. This CL adds a test. Updates #33062. Change-Id: Id445c5d44a437512c65c46a029e49b7fc32e4d89 Reviewed-on: https://go-review.googlesource.com/c/go/+/185818 Run-TryBot: Cherry Zhang Reviewed-by: Ian Lance Taylor TryBot-Result: Gobot Gobot --- test/fixedbugs/issue33062.go | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 test/fixedbugs/issue33062.go diff --git a/test/fixedbugs/issue33062.go b/test/fixedbugs/issue33062.go new file mode 100644 index 0000000000..5e6a3581a1 --- /dev/null +++ b/test/fixedbugs/issue33062.go @@ -0,0 +1,33 @@ +// run + +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Issue 33062: gccgo generates incorrect type equality +// functions. + +package main + +type simpleStruct struct { + int + string +} + +type complexStruct struct { + int + simpleStruct +} + +func main() { + x := complexStruct{1, simpleStruct{2, "xxx"}} + ix := interface{}(x) + y := complexStruct{1, simpleStruct{2, "yyy"}} + iy := interface{}(y) + if ix != ix { + panic("FAIL") + } + if ix == iy { + panic("FAIL") + } +} From 7942671a5856233ce63a265e1a1441b7a0ea82f5 Mon Sep 17 00:00:00 2001 From: "Norman B. Lancaster" Date: Wed, 10 Jul 2019 10:33:12 -0500 Subject: [PATCH 104/255] doc/go1.13: document removal of NaCl targets in Go 1.14 Go 1.14 will no longer run on Native Client (NaCl). Updating the 1.13 release notes to indicate this. See #30439. Fixes #32948 Change-Id: Ia147bb053adc098bd696dbdb01553c23222f8134 Reviewed-on: https://go-review.googlesource.com/c/go/+/185537 Reviewed-by: Andrew Bonventre --- doc/go1.13.html | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/go1.13.html b/doc/go1.13.html index a4cea9b86a..afc345c1d3 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -101,6 +101,10 @@ Do not send CLs removing the interior tags from such phrases.

    Ports

    +

    + Go 1.13 is the last release that will run on Native Client (NaCl). +

    +

    AIX

    From e831719469a5acfad7d8f73a976e2959815d0e27 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Thu, 11 Jul 2019 11:57:31 -0700 Subject: [PATCH 105/255] cmd/cgo: do not rewrite call if there are more args than parameters We already skipped rewriting the call if there were fewer args than parameters. But we can also get a cgo crash if there are more args, if at least one of the extra args uses a name qualified with "C.". Skip the rewrite, since the build will fail later anyhow. Fixes #33061 Change-Id: I62ff3518b775b502ad10c2bacf9102db4c9a531c Reviewed-on: https://go-review.googlesource.com/c/go/+/185797 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Andrew Bonventre --- misc/cgo/errors/errors_test.go | 1 + misc/cgo/errors/testdata/issue33061.go | 17 +++++++++++++++++ src/cmd/cgo/gcc.go | 6 +++--- 3 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 misc/cgo/errors/testdata/issue33061.go diff --git a/misc/cgo/errors/errors_test.go b/misc/cgo/errors/errors_test.go index e6bac0fff4..1bdf843451 100644 --- a/misc/cgo/errors/errors_test.go +++ b/misc/cgo/errors/errors_test.go @@ -112,6 +112,7 @@ func TestReportsTypeErrors(t *testing.T) { "issue18452.go", "issue18889.go", "issue28721.go", + "issue33061.go", } { check(t, file) } diff --git a/misc/cgo/errors/testdata/issue33061.go b/misc/cgo/errors/testdata/issue33061.go new file mode 100644 index 0000000000..77d5f7a7c9 --- /dev/null +++ b/misc/cgo/errors/testdata/issue33061.go @@ -0,0 +1,17 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// cgo shouldn't crash if there is an extra argument with a C reference. + +package main + +// void F(void* p) {}; +import "C" + +import "unsafe" + +func F() { + var i int + C.F(unsafe.Pointer(&i), C.int(0)) // ERROR HERE +} diff --git a/src/cmd/cgo/gcc.go b/src/cmd/cgo/gcc.go index 1bd3e2417c..01b86adadb 100644 --- a/src/cmd/cgo/gcc.go +++ b/src/cmd/cgo/gcc.go @@ -793,10 +793,10 @@ func (p *Package) rewriteCall(f *File, call *Call) (string, bool) { params := name.FuncType.Params args := call.Call.Args - // Avoid a crash if the number of arguments is - // less than the number of parameters. + // Avoid a crash if the number of arguments doesn't match + // the number of parameters. // This will be caught when the generated file is compiled. - if len(args) < len(params) { + if len(args) != len(params) { return "", false } From 21f548400650e4e7047202ee1894ee6ddd44de82 Mon Sep 17 00:00:00 2001 From: Jay Conrod Date: Fri, 12 Jul 2019 11:31:29 -0400 Subject: [PATCH 106/255] cmd/go: improve module version query documentation Add "upgrade" and "patch" to 'go help modules' section 'Module queries'. Also explicitly call out the fact that @v2 will select the latest version starting with v2, not the branch named v2, since this is a common source of confusion. Fixes #33010 Change-Id: I2fe27543b81a160fb6f6b8e8444a7a35f3661433 Reviewed-on: https://go-review.googlesource.com/c/go/+/185979 Run-TryBot: Jay Conrod TryBot-Result: Gobot Gobot Reviewed-by: Bryan C. Mills --- src/cmd/go/alldocs.go | 34 +++++++++++++++++++++++------ src/cmd/go/internal/modget/get.go | 9 +++++++- src/cmd/go/internal/modload/help.go | 25 ++++++++++++++++----- 3 files changed, 54 insertions(+), 14 deletions(-) diff --git a/src/cmd/go/alldocs.go b/src/cmd/go/alldocs.go index 44d07c1197..7999024ce2 100644 --- a/src/cmd/go/alldocs.go +++ b/src/cmd/go/alldocs.go @@ -574,9 +574,16 @@ // // This default version selection can be overridden by adding an @version // suffix to the package argument, as in 'go get golang.org/x/text@v0.3.0'. +// The version may be a prefix: @v1 denotes the latest available version starting +// with v1. See 'go help modules' under the heading 'Module queries' for the +// full query syntax. +// // For modules stored in source control repositories, the version suffix can // also be a commit hash, branch identifier, or other syntax known to the -// source control system, as in 'go get golang.org/x/text@master'. +// source control system, as in 'go get golang.org/x/text@master'. Note that +// branches with names that overlap with other module query syntax cannot be +// selected explicitly. For example, the suffix @v2 means the latest version +// starting with v2, not the branch named v2. // // If a module under consideration is already a dependency of the current // development module, then get will update the required version. @@ -2499,12 +2506,25 @@ // The string "latest" matches the latest available tagged version, // or else the underlying source repository's latest untagged revision. // -// A revision identifier for the underlying source repository, -// such as a commit hash prefix, revision tag, or branch name, -// selects that specific code revision. If the revision is -// also tagged with a semantic version, the query evaluates to -// that semantic version. Otherwise the query evaluates to a -// pseudo-version for the commit. +// The string "upgrade" is like "latest", but if the module is +// currently required at a later version than the version "latest" +// would select (for example, a newer pre-release version), "upgrade" +// will select the later version instead. +// +// The string "patch" matches the latest available tagged version +// of a module with the same major and minor version numbers as the +// currently required version. If no version is currently required, +// "patch" is equivalent to "latest". +// +// A revision identifier for the underlying source repository, such as +// a commit hash prefix, revision tag, or branch name, selects that +// specific code revision. If the revision is also tagged with a +// semantic version, the query evaluates to that semantic version. +// Otherwise the query evaluates to a pseudo-version for the commit. +// Note that branches and tags with names that are matched by other +// query syntax cannot be selected this way. For example, the query +// "v2" means the latest version starting with "v2", not the branch +// named "v2". // // All queries prefer release versions to pre-release versions. // For example, " Date: Sun, 14 Jul 2019 18:48:20 +0200 Subject: [PATCH 107/255] doc/go1.13: fix misspelling of "interpreted" Change-Id: I465f10533cc76d8160e56bc49eabaf8127ac4e61 Reviewed-on: https://go-review.googlesource.com/c/go/+/186137 Reviewed-by: Andrew Bonventre --- doc/go1.13.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/go1.13.html b/doc/go1.13.html index afc345c1d3..9d2c65be2b 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -604,7 +604,7 @@ godoc

    When using a <script> tag with "module" set as the - type attribute, code will now be interperted as JavaScript module script. + type attribute, code will now be interpreted as JavaScript module script.

    From 4b3658880752ca30a2ad5f2dc33a9bee9ff91de4 Mon Sep 17 00:00:00 2001 From: LE Manh Cuong Date: Tue, 28 May 2019 23:07:56 +0700 Subject: [PATCH 108/255] cmd/go: add go command known variables to test cache hash The go test result must not be cached when each of known variables to go command change. To do this, add all known variables to test metadata. Fixes #32285 Change-Id: I90be6a72f46c42d965aec4fed534c0623244cd3d Reviewed-on: https://go-review.googlesource.com/c/go/+/179040 Run-TryBot: Cuong Manh Le TryBot-Result: Gobot Gobot Reviewed-by: Bryan C. Mills Reviewed-by: Jay Conrod --- src/cmd/go/internal/cfg/cfg.go | 55 +--------------- .../script/test_go111module_cache.txt | 15 +++++ src/go/build/deps_test.go | 3 +- src/internal/cfg/cfg.go | 62 +++++++++++++++++++ src/internal/testenv/testenv.go | 7 +++ 5 files changed, 88 insertions(+), 54 deletions(-) create mode 100644 src/cmd/go/testdata/script/test_go111module_cache.txt create mode 100644 src/internal/cfg/cfg.go diff --git a/src/cmd/go/internal/cfg/cfg.go b/src/cmd/go/internal/cfg/cfg.go index a0b51a72c3..a3277a6c3f 100644 --- a/src/cmd/go/internal/cfg/cfg.go +++ b/src/cmd/go/internal/cfg/cfg.go @@ -10,6 +10,7 @@ import ( "bytes" "fmt" "go/build" + "internal/cfg" "io/ioutil" "os" "path/filepath" @@ -221,61 +222,9 @@ func Getenv(key string) string { // CanGetenv reports whether key is a valid go/env configuration key. func CanGetenv(key string) bool { - return strings.Contains(knownEnv, "\t"+key+"\n") + return strings.Contains(cfg.KnownEnv, "\t"+key+"\n") } -var knownEnv = ` - AR - CC - CGO_CFLAGS - CGO_CFLAGS_ALLOW - CGO_CFLAGS_DISALLOW - CGO_CPPFLAGS - CGO_CPPFLAGS_ALLOW - CGO_CPPFLAGS_DISALLOW - CGO_CXXFLAGS - CGO_CXXFLAGS_ALLOW - CGO_CXXFLAGS_DISALLOW - CGO_ENABLED - CGO_FFLAGS - CGO_FFLAGS_ALLOW - CGO_FFLAGS_DISALLOW - CGO_LDFLAGS - CGO_LDFLAGS_ALLOW - CGO_LDFLAGS_DISALLOW - CXX - FC - GCCGO - GO111MODULE - GO386 - GOARCH - GOARM - GOBIN - GOCACHE - GOENV - GOEXE - GOFLAGS - GOGCCFLAGS - GOHOSTARCH - GOHOSTOS - GOMIPS - GOMIPS64 - GONOPROXY - GONOSUMDB - GOOS - GOPATH - GOPPC64 - GOPRIVATE - GOPROXY - GOROOT - GOSUMDB - GOTMPDIR - GOTOOLDIR - GOWASM - GO_EXTLINK_ENABLED - PKG_CONFIG -` - var ( GOROOT = BuildContext.GOROOT GOBIN = Getenv("GOBIN") diff --git a/src/cmd/go/testdata/script/test_go111module_cache.txt b/src/cmd/go/testdata/script/test_go111module_cache.txt new file mode 100644 index 0000000000..ca1de43a2b --- /dev/null +++ b/src/cmd/go/testdata/script/test_go111module_cache.txt @@ -0,0 +1,15 @@ +env GO111MODULE=on +go mod init foo +go test +stdout ^ok\s+foo +env GO111MODULE=off +go test +stdout ^ok\s+ +! stdout ^ok\s+(cache)$ + +-- main_test.go -- +package main + +import "testing" + +func TestF(t *testing.T) {} diff --git a/src/go/build/deps_test.go b/src/go/build/deps_test.go index 709c43a52a..bd866ee738 100644 --- a/src/go/build/deps_test.go +++ b/src/go/build/deps_test.go @@ -166,6 +166,7 @@ var pkgDeps = map[string][]string{ "syscall/js", }, + "internal/cfg": {"L0"}, "internal/poll": {"L0", "internal/oserror", "internal/race", "syscall", "time", "unicode/utf16", "unicode/utf8", "internal/syscall/windows"}, "internal/testlog": {"L0"}, "os": {"L1", "os", "syscall", "time", "internal/oserror", "internal/poll", "internal/syscall/windows", "internal/syscall/unix", "internal/testlog"}, @@ -199,7 +200,7 @@ var pkgDeps = map[string][]string{ "testing": {"L2", "flag", "fmt", "internal/race", "os", "runtime/debug", "runtime/pprof", "runtime/trace", "time"}, "testing/iotest": {"L2", "log"}, "testing/quick": {"L2", "flag", "fmt", "reflect", "time"}, - "internal/testenv": {"L2", "OS", "flag", "testing", "syscall"}, + "internal/testenv": {"L2", "OS", "flag", "testing", "syscall", "internal/cfg"}, "internal/lazyregexp": {"L2", "OS", "regexp"}, "internal/lazytemplate": {"L2", "OS", "text/template"}, diff --git a/src/internal/cfg/cfg.go b/src/internal/cfg/cfg.go new file mode 100644 index 0000000000..4c2cf8ee8b --- /dev/null +++ b/src/internal/cfg/cfg.go @@ -0,0 +1,62 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package cfg holds configuration shared by the Go command and internal/testenv. +// Definitions that don't need to be exposed outside of cmd/go should be in +// cmd/go/internal/cfg instead of this package. +package cfg + +// KnownEnv is a list of environment variables that affect the operation +// of the Go command. +const KnownEnv = ` + AR + CC + CGO_CFLAGS + CGO_CFLAGS_ALLOW + CGO_CFLAGS_DISALLOW + CGO_CPPFLAGS + CGO_CPPFLAGS_ALLOW + CGO_CPPFLAGS_DISALLOW + CGO_CXXFLAGS + CGO_CXXFLAGS_ALLOW + CGO_CXXFLAGS_DISALLOW + CGO_ENABLED + CGO_FFLAGS + CGO_FFLAGS_ALLOW + CGO_FFLAGS_DISALLOW + CGO_LDFLAGS + CGO_LDFLAGS_ALLOW + CGO_LDFLAGS_DISALLOW + CXX + FC + GCCGO + GO111MODULE + GO386 + GOARCH + GOARM + GOBIN + GOCACHE + GOENV + GOEXE + GOFLAGS + GOGCCFLAGS + GOHOSTARCH + GOHOSTOS + GOMIPS + GOMIPS64 + GONOPROXY + GONOSUMDB + GOOS + GOPATH + GOPPC64 + GOPRIVATE + GOPROXY + GOROOT + GOSUMDB + GOTMPDIR + GOTOOLDIR + GOWASM + GO_EXTLINK_ENABLED + PKG_CONFIG +` diff --git a/src/internal/testenv/testenv.go b/src/internal/testenv/testenv.go index c27fcfa208..f7a9730ca6 100644 --- a/src/internal/testenv/testenv.go +++ b/src/internal/testenv/testenv.go @@ -13,6 +13,7 @@ package testenv import ( "errors" "flag" + "internal/cfg" "os" "os/exec" "path/filepath" @@ -88,6 +89,12 @@ func GoToolPath(t testing.TB) string { if err != nil { t.Fatal(err) } + // Add all environment variables that affect the Go command to test metadata. + // Cached test results will be invalidate when these variables change. + // See golang.org/issue/32285. + for _, envVar := range strings.Fields(cfg.KnownEnv) { + os.Getenv(envVar) + } return path } From b9edee32e15eb2ea66fe96563088520fff6f2535 Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Tue, 9 Jul 2019 17:41:37 -0400 Subject: [PATCH 109/255] cmd/go: check for source files in relative paths before attempting to determine the package path This is a more minimial fix for the immediate symptom of 32917 and 30590, but does not improve 'list -e' behavior or error messages resulting from other package loading issues. Fixes #32917 Fixes #30590 Change-Id: I6088d14d864410159ebf228d9392d186322fd2a5 Reviewed-on: https://go-review.googlesource.com/c/go/+/185417 Run-TryBot: Bryan C. Mills TryBot-Result: Gobot Gobot Reviewed-by: Jay Conrod --- src/cmd/go/internal/modload/load.go | 66 +++++++++++++++---- src/cmd/go/testdata/script/mod_dot.txt | 36 ++++++++++ .../go/testdata/script/mod_fs_patterns.txt | 4 +- src/cmd/go/testdata/script/mod_list_dir.txt | 5 +- .../testdata/script/mod_list_replace_dir.txt | 2 +- 5 files changed, 96 insertions(+), 17 deletions(-) create mode 100644 src/cmd/go/testdata/script/mod_dot.txt diff --git a/src/cmd/go/internal/modload/load.go b/src/cmd/go/internal/modload/load.go index 992fa70b79..81fb8b346f 100644 --- a/src/cmd/go/internal/modload/load.go +++ b/src/cmd/go/internal/modload/load.go @@ -100,11 +100,31 @@ func ImportPathsQuiet(patterns []string, tags map[string]bool) []*search.Match { dir = filepath.Clean(dir) } + // golang.org/issue/32917: We should resolve a relative path to a + // package path only if the relative path actually contains the code + // for that package. + if !dirContainsPackage(dir) { + // If we're outside of a module, ensure that the failure mode + // indicates that. + ModRoot() + + // If the directory is local but does not exist, don't return it + // while loader is iterating, since this might trigger a fetch. + // After loader is done iterating, we still need to return the + // path, so that "go list -e" produces valid output. + if !iterating { + // We don't have a valid path to resolve to, so report the + // unresolved path. + m.Pkgs = append(m.Pkgs, pkg) + } + continue + } + // Note: The checks for @ here are just to avoid misinterpreting // the module cache directories (formerly GOPATH/src/mod/foo@v1.5.2/bar). // It's not strictly necessary but helpful to keep the checks. if modRoot != "" && dir == modRoot { - pkg = Target.Path + pkg = targetPrefix } else if modRoot != "" && strings.HasPrefix(dir, modRoot+string(filepath.Separator)) && !strings.Contains(dir[len(modRoot):], "@") { suffix := filepath.ToSlash(dir[len(modRoot):]) if strings.HasPrefix(suffix, "/vendor/") { @@ -121,7 +141,13 @@ func ImportPathsQuiet(patterns []string, tags map[string]bool) []*search.Match { continue } } else { - pkg = Target.Path + suffix + modPkg := targetPrefix + suffix + if _, ok := dirInModule(modPkg, targetPrefix, modRoot, true); ok { + pkg = modPkg + } else if !iterating { + ModRoot() + base.Errorf("go: directory %s is outside main module", base.ShortPath(dir)) + } } } else if sub := search.InDir(dir, cfg.GOROOTsrc); sub != "" && sub != "." && !strings.Contains(sub, "@") { pkg = filepath.ToSlash(sub) @@ -134,16 +160,6 @@ func ImportPathsQuiet(patterns []string, tags map[string]bool) []*search.Match { base.Errorf("go: directory %s outside available modules", base.ShortPath(dir)) } } - info, err := os.Stat(dir) - if err != nil || !info.IsDir() { - // If the directory is local but does not exist, don't return it - // while loader is iterating, since this would trigger a fetch. - // After loader is done iterating, we still need to return the - // path, so that "go list -e" produces valid output. - if iterating { - continue - } - } m.Pkgs = append(m.Pkgs, pkg) } @@ -247,6 +263,32 @@ func pathInModuleCache(dir string) string { return "" } +var dirContainsPackageCache sync.Map // absolute dir → bool + +func dirContainsPackage(dir string) bool { + isPkg, ok := dirContainsPackageCache.Load(dir) + if !ok { + _, err := cfg.BuildContext.ImportDir(dir, 0) + if err == nil { + isPkg = true + } else { + if fi, statErr := os.Stat(dir); statErr != nil || !fi.IsDir() { + // A non-directory or inaccessible directory is not a Go package. + isPkg = false + } else if _, noGo := err.(*build.NoGoError); noGo { + // A directory containing no Go source files is not a Go package. + isPkg = false + } else { + // An error other than *build.NoGoError indicates that the package exists + // but has some other problem (such as a syntax error). + isPkg = true + } + } + isPkg, _ = dirContainsPackageCache.LoadOrStore(dir, isPkg) + } + return isPkg.(bool) +} + // ImportFromFiles adds modules to the build list as needed // to satisfy the imports in the named Go source files. func ImportFromFiles(gofiles []string) { diff --git a/src/cmd/go/testdata/script/mod_dot.txt b/src/cmd/go/testdata/script/mod_dot.txt new file mode 100644 index 0000000000..c90074d0a6 --- /dev/null +++ b/src/cmd/go/testdata/script/mod_dot.txt @@ -0,0 +1,36 @@ +env GO111MODULE=on + +# golang.org/issue/32917 and golang.org/issue/28459: 'go build' and 'go test' +# in an empty directory should refer to the path '.' and should not attempt +# to resolve an external module. +cd dir +! go get . +stderr 'go get \.: path .* is not a package in module rooted at .*[/\\]dir$' +! go list +! stderr 'cannot find module providing package' +stderr '^can.t load package: package \.: no Go files in '$WORK'[/\\]gopath[/\\]src[/\\]dir$' + +cd subdir +! go list +! stderr 'cannot find module providing package' +stderr '^can.t load package: package \.: no Go files in '$WORK'[/\\]gopath[/\\]src[/\\]dir[/\\]subdir$' +cd .. + +# golang.org/issue/30590: if a package is found in the filesystem +# but is not in the main module, the error message should not say +# "cannot find module providing package", and we shouldn't try +# to find a module providing the package. +! go list ./othermodule +! stderr 'cannot find module providing package' +stderr 'go: directory othermodule is outside main module' + +-- dir/go.mod -- +module example.com +go 1.13 +-- dir/subdir/README -- +There are no Go source files in this directory. +-- dir/othermodule/go.mod -- +module example.com/othermodule +go 1.13 +-- dir/othermodule/om.go -- +package othermodule diff --git a/src/cmd/go/testdata/script/mod_fs_patterns.txt b/src/cmd/go/testdata/script/mod_fs_patterns.txt index 9341a1d083..fd7de13002 100644 --- a/src/cmd/go/testdata/script/mod_fs_patterns.txt +++ b/src/cmd/go/testdata/script/mod_fs_patterns.txt @@ -34,11 +34,11 @@ stderr 'import lookup disabled' ! go build -mod=readonly ./nonexist ! stderr 'import lookup disabled' -stderr 'unknown import path "m/nonexist": cannot find package' +stderr '^can.t load package: package ./nonexist: cannot find package "." in:\n\t'$WORK'[/\\]gopath[/\\]src[/\\]x[/\\]nonexist$' ! go build -mod=readonly ./go.mod ! stderr 'import lookup disabled' -stderr 'unknown import path "m/go.mod": cannot find package' +stderr 'can.t load package: package ./go.mod: cannot find package' -- x/go.mod -- module m diff --git a/src/cmd/go/testdata/script/mod_list_dir.txt b/src/cmd/go/testdata/script/mod_list_dir.txt index c4db045631..a8023cce9c 100644 --- a/src/cmd/go/testdata/script/mod_list_dir.txt +++ b/src/cmd/go/testdata/script/mod_list_dir.txt @@ -12,9 +12,10 @@ stdout ^math$ go list -f '{{.ImportPath}}' . stdout ^x$ ! go list -f '{{.ImportPath}}' $GOPATH/pkg/mod/rsc.io/quote@v1.5.2 -stderr 'unknown import path "rsc.io/quote": cannot find package' +stderr '^can.t load package: package '$WORK'[/\\]gopath/pkg/mod/rsc.io/quote@v1.5.2: can only use path@version syntax with .go get.' + go list -e -f '{{with .Error}}{{.}}{{end}}' $GOPATH/pkg/mod/rsc.io/quote@v1.5.2 -stdout 'unknown import path "rsc.io/quote": cannot find package' +stdout '^package '$WORK'[/\\]gopath/pkg/mod/rsc.io/quote@v1.5.2: can only use path@version syntax with .go get.' go mod download rsc.io/quote@v1.5.2 go list -f '{{.ImportPath}}' $GOPATH/pkg/mod/rsc.io/quote@v1.5.2 stdout '^rsc.io/quote$' diff --git a/src/cmd/go/testdata/script/mod_list_replace_dir.txt b/src/cmd/go/testdata/script/mod_list_replace_dir.txt index 37de8825e0..d43bbe7f2b 100644 --- a/src/cmd/go/testdata/script/mod_list_replace_dir.txt +++ b/src/cmd/go/testdata/script/mod_list_replace_dir.txt @@ -6,7 +6,7 @@ env GO111MODULE=on go mod download ! go list $GOPATH/pkg/mod/rsc.io/quote@v1.5.2 -stderr 'outside available modules' +stderr 'can only use path@version syntax with .go get.' go list $GOPATH/pkg/mod/rsc.io/quote@v1.5.1 stdout 'rsc.io/quote' From 20e4540e9084528a1b36978882596daa7d8d8800 Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Mon, 15 Jul 2019 16:45:17 -0400 Subject: [PATCH 110/255] crypto/tls: remove TestVerifyHostnameResumed Session resumption is not a reliable TLS behavior: the server can decide to reject a session ticket for a number of reasons, or no reason at all. This makes this non-hermetic test extremely brittle. It's currently broken on the builders for both TLS 1.2 and TLS 1.3, and I could reproduce the issue for TLS 1.3 only. As I was debugging it, it started passing entirely on my machine. In practice, it doesn't get us any coverage as resumption is already tested with the recorded exchange tests, and TestVerifyHostname still provides a smoke test checking that we can in fact talk TLS. Fixes #32978 Change-Id: I63505e22ff7704f25ad700d46e4ff14850ba5d3c Reviewed-on: https://go-review.googlesource.com/c/go/+/186239 Run-TryBot: Filippo Valsorda Reviewed-by: Bryan C. Mills --- src/crypto/tls/tls_test.go | 44 -------------------------------------- 1 file changed, 44 deletions(-) diff --git a/src/crypto/tls/tls_test.go b/src/crypto/tls/tls_test.go index a07727c92b..b68c074855 100644 --- a/src/crypto/tls/tls_test.go +++ b/src/crypto/tls/tls_test.go @@ -359,50 +359,6 @@ func TestVerifyHostname(t *testing.T) { } } -func TestVerifyHostnameResumed(t *testing.T) { - t.Run("TLSv12", func(t *testing.T) { testVerifyHostnameResumed(t, VersionTLS12) }) - t.Run("TLSv13", func(t *testing.T) { testVerifyHostnameResumed(t, VersionTLS13) }) -} - -func testVerifyHostnameResumed(t *testing.T, version uint16) { - testenv.MustHaveExternalNetwork(t) - - config := &Config{ - MaxVersion: version, - ClientSessionCache: NewLRUClientSessionCache(32), - } - for i := 0; i < 2; i++ { - c, err := DialWithDialer(&net.Dialer{ - Timeout: 10 * time.Second, - }, "tcp", "mail.google.com:https", config) - if err != nil { - t.Fatalf("Dial #%d: %v", i, err) - } - cs := c.ConnectionState() - if i > 0 && !cs.DidResume { - t.Fatalf("Subsequent connection unexpectedly didn't resume") - } - if cs.Version != version { - t.Fatalf("Unexpectedly negotiated version %x", cs.Version) - } - if cs.VerifiedChains == nil { - t.Fatalf("Dial #%d: cs.VerifiedChains == nil", i) - } - if err := c.VerifyHostname("mail.google.com"); err != nil { - t.Fatalf("verify mail.google.com #%d: %v", i, err) - } - // Have the server send some data so session tickets are delivered. - c.SetDeadline(time.Now().Add(5 * time.Second)) - if _, err := io.WriteString(c, "HEAD / HTTP/1.0\n\n"); err != nil { - t.Fatal(err) - } - if _, err := c.Read(make([]byte, 1)); err != nil { - t.Fatal(err) - } - c.Close() - } -} - func TestConnCloseBreakingWrite(t *testing.T) { ln := newLocalListener(t) defer ln.Close() From 24a6ca09d0151f2dc6a524217b8523abd33403bb Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Mon, 15 Jul 2019 14:06:58 -0400 Subject: [PATCH 111/255] cmd/go/internal/modfetch: always check for a go.mod file when fetching from version control MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If the module path declared in the go.mod file does not match the path we are trying to resolve, a build using that module is doomed to fail. Since we know that the module path does not match in the underlying repo, we also know that the requested module does not exist at the requested version. Therefore, we should reject that version in Stat with a “not exist” error — sooner rather than later — so that modload.Query will continue to check other candidate paths (for example, with a major-version suffix added or removed). Fixes #33099 Change-Id: I43c980f78ed75fa6ace90f237cc3aad46c22d83a Reviewed-on: https://go-review.googlesource.com/c/go/+/186237 Run-TryBot: Bryan C. Mills TryBot-Result: Gobot Gobot Reviewed-by: Jay Conrod --- src/cmd/go/internal/modfetch/coderepo.go | 37 +++++---- src/cmd/go/internal/modfetch/coderepo_test.go | 75 +++++++++++-------- src/cmd/go/internal/modload/query_test.go | 10 ++- .../go/testdata/script/mod_list_direct.txt | 24 ++++++ 4 files changed, 100 insertions(+), 46 deletions(-) create mode 100644 src/cmd/go/testdata/script/mod_list_direct.txt diff --git a/src/cmd/go/internal/modfetch/coderepo.go b/src/cmd/go/internal/modfetch/coderepo.go index 267b76349d..491fe11f50 100644 --- a/src/cmd/go/internal/modfetch/coderepo.go +++ b/src/cmd/go/internal/modfetch/coderepo.go @@ -31,7 +31,7 @@ type codeRepo struct { codeRoot string // codeDir is the directory (relative to root) at which we expect to find the module. // If pathMajor is non-empty and codeRoot is not the full modPath, - // then we look in both codeDir and codeDir+modPath + // then we look in both codeDir and codeDir/pathMajor[1:]. codeDir string // pathMajor is the suffix of modPath that indicates its major version, @@ -248,20 +248,25 @@ func (r *codeRepo) convert(info *codehost.RevInfo, statVers string) (*RevInfo, e // exist as required by info2.Version and the module path represented by r. checkGoMod := func() (*RevInfo, error) { // If r.codeDir is non-empty, then the go.mod file must exist: the module - // author, not the module consumer, gets to decide how to carve up the repo + // author — not the module consumer, — gets to decide how to carve up the repo // into modules. - if r.codeDir != "" { - _, _, _, err := r.findDir(info2.Version) - if err != nil { - // TODO: It would be nice to return an error like "not a module". - // Right now we return "missing go.mod", which is a little confusing. - return nil, &module.ModuleError{ - Path: r.modPath, - Err: &module.InvalidVersionError{ - Version: info2.Version, - Err: notExistError(err.Error()), - }, - } + // + // Conversely, if the go.mod file exists, the module author — not the module + // consumer — gets to determine the module's path + // + // r.findDir verifies both of these conditions. Execute it now so that + // r.Stat will correctly return a notExistError if the go.mod location or + // declared module path doesn't match. + _, _, _, err := r.findDir(info2.Version) + if err != nil { + // TODO: It would be nice to return an error like "not a module". + // Right now we return "missing go.mod", which is a little confusing. + return nil, &module.ModuleError{ + Path: r.modPath, + Err: &module.InvalidVersionError{ + Version: info2.Version, + Err: notExistError(err.Error()), + }, } } @@ -571,6 +576,10 @@ func (r *codeRepo) versionToRev(version string) (rev string, err error) { return r.revToRev(version), nil } +// findDir locates the directory within the repo containing the module. +// +// If r.pathMajor is non-empty, this can be either r.codeDir or — if a go.mod +// file exists — r.codeDir/r.pathMajor[1:]. func (r *codeRepo) findDir(version string) (rev, dir string, gomod []byte, err error) { rev, err = r.versionToRev(version) if err != nil { diff --git a/src/cmd/go/internal/modfetch/coderepo_test.go b/src/cmd/go/internal/modfetch/coderepo_test.go index 5fc9bc3439..b5c9be52ad 100644 --- a/src/cmd/go/internal/modfetch/coderepo_test.go +++ b/src/cmd/go/internal/modfetch/coderepo_test.go @@ -105,7 +105,7 @@ var codeRepoTests = []codeRepoTest{ name: "45f53230a74ad275c7127e117ac46914c8126160", short: "45f53230a74a", time: time.Date(2018, 7, 19, 1, 21, 27, 0, time.UTC), - ziperr: "missing github.com/rsc/vgotest1/go.mod and .../v2/go.mod at revision v2.0.0", + err: "missing github.com/rsc/vgotest1/go.mod and .../v2/go.mod at revision v2.0.0", }, { vcs: "git", @@ -136,15 +136,14 @@ var codeRepoTests = []codeRepoTest{ }, }, { - vcs: "git", - path: "github.com/rsc/vgotest1/v2", - rev: "45f53230a", - version: "v2.0.0", - name: "45f53230a74ad275c7127e117ac46914c8126160", - short: "45f53230a74a", - time: time.Date(2018, 7, 19, 1, 21, 27, 0, time.UTC), - gomoderr: "missing github.com/rsc/vgotest1/go.mod and .../v2/go.mod at revision v2.0.0", - ziperr: "missing github.com/rsc/vgotest1/go.mod and .../v2/go.mod at revision v2.0.0", + vcs: "git", + path: "github.com/rsc/vgotest1/v2", + rev: "45f53230a", + version: "v2.0.0", + name: "45f53230a74ad275c7127e117ac46914c8126160", + short: "45f53230a74a", + time: time.Date(2018, 7, 19, 1, 21, 27, 0, time.UTC), + err: "missing github.com/rsc/vgotest1/go.mod and .../v2/go.mod at revision v2.0.0", }, { vcs: "git", @@ -154,7 +153,7 @@ var codeRepoTests = []codeRepoTest{ name: "80d85c5d4d17598a0e9055e7c175a32b415d6128", short: "80d85c5d4d17", time: time.Date(2018, 2, 19, 23, 10, 6, 0, time.UTC), - ziperr: "missing github.com/rsc/vgotest1/go.mod and .../v54321/go.mod at revision 80d85c5d4d17", + err: "missing github.com/rsc/vgotest1/go.mod and .../v54321/go.mod at revision 80d85c5d4d17", }, { vcs: "git", @@ -210,24 +209,24 @@ var codeRepoTests = []codeRepoTest{ gomod: "module \"github.com/rsc/vgotest1/v2\" // root go.mod\n", }, { - vcs: "git", - path: "github.com/rsc/vgotest1/v2", - rev: "v2.0.3", - version: "v2.0.3", - name: "f18795870fb14388a21ef3ebc1d75911c8694f31", - short: "f18795870fb1", - time: time.Date(2018, 2, 19, 23, 16, 4, 0, time.UTC), - gomoderr: "github.com/rsc/vgotest1/v2/go.mod has non-.../v2 module path \"github.com/rsc/vgotest\" at revision v2.0.3", + vcs: "git", + path: "github.com/rsc/vgotest1/v2", + rev: "v2.0.3", + version: "v2.0.3", + name: "f18795870fb14388a21ef3ebc1d75911c8694f31", + short: "f18795870fb1", + time: time.Date(2018, 2, 19, 23, 16, 4, 0, time.UTC), + err: "github.com/rsc/vgotest1/v2/go.mod has non-.../v2 module path \"github.com/rsc/vgotest\" at revision v2.0.3", }, { - vcs: "git", - path: "github.com/rsc/vgotest1/v2", - rev: "v2.0.4", - version: "v2.0.4", - name: "1f863feb76bc7029b78b21c5375644838962f88d", - short: "1f863feb76bc", - time: time.Date(2018, 2, 20, 0, 3, 38, 0, time.UTC), - gomoderr: "github.com/rsc/vgotest1/go.mod and .../v2/go.mod both have .../v2 module paths at revision v2.0.4", + vcs: "git", + path: "github.com/rsc/vgotest1/v2", + rev: "v2.0.4", + version: "v2.0.4", + name: "1f863feb76bc7029b78b21c5375644838962f88d", + short: "1f863feb76bc", + time: time.Date(2018, 2, 20, 0, 3, 38, 0, time.UTC), + err: "github.com/rsc/vgotest1/go.mod and .../v2/go.mod both have .../v2 module paths at revision v2.0.4", }, { vcs: "git", @@ -504,6 +503,7 @@ func TestCodeRepo(t *testing.T) { tt.name = remap(tt.name, m) tt.short = remap(tt.short, m) tt.rev = remap(tt.rev, m) + tt.err = remap(tt.err, m) tt.gomoderr = remap(tt.gomoderr, m) tt.ziperr = remap(tt.ziperr, m) t.Run(strings.ReplaceAll(tt.path, "/", "_")+"/"+tt.rev, f(tt)) @@ -631,15 +631,30 @@ var latestTests = []struct { err: "no commits", }, { - vcs: "git", - path: "github.com/rsc/vgotest1", - version: "v0.0.0-20180219223237-a08abb797a67", + vcs: "git", + path: "github.com/rsc/vgotest1", + err: `github.com/rsc/vgotest1@v0.0.0-20180219223237-a08abb797a67: invalid version: go.mod has post-v0 module path "github.com/vgotest1/v2" at revision a08abb797a67`, + }, + { + vcs: "git", + path: "github.com/rsc/vgotest1/v2", + err: `github.com/rsc/vgotest1/v2@v2.0.0-20180219223237-a08abb797a67: invalid version: github.com/rsc/vgotest1/go.mod and .../v2/go.mod both have .../v2 module paths at revision a08abb797a67`, }, { vcs: "git", path: "github.com/rsc/vgotest1/subdir", err: "github.com/rsc/vgotest1/subdir@v0.0.0-20180219223237-a08abb797a67: invalid version: missing github.com/rsc/vgotest1/subdir/go.mod at revision a08abb797a67", }, + { + vcs: "git", + path: "vcs-test.golang.org/git/commit-after-tag.git", + version: "v1.0.1-0.20190715211727-b325d8217783", + }, + { + vcs: "git", + path: "vcs-test.golang.org/git/no-tags.git", + version: "v0.0.0-20190715212047-e706ba1d9f6d", + }, { vcs: "mod", path: "swtch.com/testmod", diff --git a/src/cmd/go/internal/modload/query_test.go b/src/cmd/go/internal/modload/query_test.go index 10d947e46f..7940882781 100644 --- a/src/cmd/go/internal/modload/query_test.go +++ b/src/cmd/go/internal/modload/query_test.go @@ -161,8 +161,11 @@ var queryTests = []struct { {path: queryRepoV2, query: "v2.6.0-pre1", vers: "v2.6.0-pre1"}, {path: queryRepoV2, query: "latest", vers: "v2.5.5"}, - {path: queryRepoV3, query: "e0cf3de987e6", vers: "v3.0.0-20180704024501-e0cf3de987e6"}, - {path: queryRepoV3, query: "latest", vers: "v3.0.0-20180704024501-e0cf3de987e6"}, + // e0cf3de987e6 is the latest commit on the master branch, and it's actually + // v1.19.10-pre1, not anything resembling v3: attempting to query it as such + // should fail. + {path: queryRepoV3, query: "e0cf3de987e6", err: `vcs-test.golang.org/git/querytest.git/v3@v3.0.0-20180704024501-e0cf3de987e6: invalid version: go.mod has non-.../v3 module path "vcs-test.golang.org/git/querytest.git" (and .../v3/go.mod does not exist) at revision e0cf3de987e6`}, + {path: queryRepoV3, query: "latest", err: `no matching versions for query "latest"`}, {path: emptyRepo, query: "latest", vers: "v0.0.0-20180704023549-7bb914627242"}, {path: emptyRepo, query: ">v0.0.0", err: `no matching versions for query ">v0.0.0"`}, @@ -182,7 +185,10 @@ func TestQuery(t *testing.T) { ok, _ := path.Match(allow, m.Version) return ok } + tt := tt t.Run(strings.ReplaceAll(tt.path, "/", "_")+"/"+tt.query+"/"+tt.current+"/"+allow, func(t *testing.T) { + t.Parallel() + info, err := Query(tt.path, tt.query, tt.current, allowed) if tt.err != "" { if err == nil { diff --git a/src/cmd/go/testdata/script/mod_list_direct.txt b/src/cmd/go/testdata/script/mod_list_direct.txt new file mode 100644 index 0000000000..8f85871189 --- /dev/null +++ b/src/cmd/go/testdata/script/mod_list_direct.txt @@ -0,0 +1,24 @@ +env GO111MODULE=on +env GOPROXY=direct +env GOSUMDB=off + +[!net] skip +[!exec:git] skip + +# golang.org/issue/33099: if an import path ends in a major-version suffix, +# ensure that 'direct' mode can resolve the package to the module. +# For a while, (*modfetch.codeRepo).Stat was not checking for a go.mod file, +# which would produce a hard error at the subsequent call to GoMod. + +go list all + +-- go.mod -- +module example.com +go 1.13 + +-- main.go -- +package main + +import _ "vcs-test.golang.org/git/v3pkg.git/v3" + +func main() {} From 37b194a422f51893a89ec2823748ccbe612a2898 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Sat, 13 Jul 2019 12:20:43 -0700 Subject: [PATCH 112/255] cmd/link: put shlib ".type" functions in internal ABI These functions are compiler generated, and as such are only available in the internal ABI. Doing this avoids generating an alias symbol. Doing that avoids confusion between unmangled and mangled type symbols. Fixes #30768 Change-Id: I197a5ba6403aac11989ffa951dbe35bd0506de91 Reviewed-on: https://go-review.googlesource.com/c/go/+/186077 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Austin Clements --- misc/cgo/testshared/shared_test.go | 7 ++++++ .../testdata/issue30768/issue30768lib/lib.go | 11 ++++++++++ .../testshared/testdata/issue30768/x_test.go | 22 +++++++++++++++++++ src/cmd/link/internal/ld/lib.go | 12 ++++++++-- 4 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 misc/cgo/testshared/testdata/issue30768/issue30768lib/lib.go create mode 100644 misc/cgo/testshared/testdata/issue30768/x_test.go diff --git a/misc/cgo/testshared/shared_test.go b/misc/cgo/testshared/shared_test.go index ac1a1c7f1a..9d16338c0f 100644 --- a/misc/cgo/testshared/shared_test.go +++ b/misc/cgo/testshared/shared_test.go @@ -941,3 +941,10 @@ func TestTestInstalledShared(t *testing.T) { func TestGeneratedMethod(t *testing.T) { goCmd(t, "install", "-buildmode=shared", "-linkshared", "./issue25065") } + +// Test use of shared library struct with generated hash function. +// Issue 30768. +func TestGeneratedHash(t *testing.T) { + goCmd(nil, "install", "-buildmode=shared", "-linkshared", "./issue30768/issue30768lib") + goCmd(nil, "test", "-linkshared", "./issue30768") +} diff --git a/misc/cgo/testshared/testdata/issue30768/issue30768lib/lib.go b/misc/cgo/testshared/testdata/issue30768/issue30768lib/lib.go new file mode 100644 index 0000000000..9e45ebe683 --- /dev/null +++ b/misc/cgo/testshared/testdata/issue30768/issue30768lib/lib.go @@ -0,0 +1,11 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package issue30768lib + +// S is a struct that requires a generated hash function. +type S struct { + A string + B int +} diff --git a/misc/cgo/testshared/testdata/issue30768/x_test.go b/misc/cgo/testshared/testdata/issue30768/x_test.go new file mode 100644 index 0000000000..1bbd139d3e --- /dev/null +++ b/misc/cgo/testshared/testdata/issue30768/x_test.go @@ -0,0 +1,22 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package issue30768_test + +import ( + "testing" + + "testshared/issue30768/issue30768lib" +) + +type s struct { + s issue30768lib.S +} + +func Test30768(t *testing.T) { + // Calling t.Log will convert S to an empty interface, + // which will force a reference to the generated hash function, + // defined in the shared library. + t.Log(s{}) +} diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go index 49f3b3c0d7..9c71a4f51e 100644 --- a/src/cmd/link/internal/ld/lib.go +++ b/src/cmd/link/internal/ld/lib.go @@ -1902,7 +1902,15 @@ func ldshlibsyms(ctxt *Link, shlib string) { if elf.ST_TYPE(elfsym.Info) == elf.STT_NOTYPE || elf.ST_TYPE(elfsym.Info) == elf.STT_SECTION { continue } - lsym := ctxt.Syms.Lookup(elfsym.Name, 0) + + // Symbols whose names start with "type." are compiler + // generated, so make functions with that prefix internal. + ver := 0 + if elf.ST_TYPE(elfsym.Info) == elf.STT_FUNC && strings.HasPrefix(elfsym.Name, "type.") { + ver = sym.SymVerABIInternal + } + + lsym := ctxt.Syms.Lookup(elfsym.Name, ver) // Because loadlib above loads all .a files before loading any shared // libraries, any non-dynimport symbols we find that duplicate symbols // already loaded should be ignored (the symbols from the .a files @@ -1930,7 +1938,7 @@ func ldshlibsyms(ctxt *Link, shlib string) { // the ABIs are actually different. We might have to // mangle Go function names in the .so to include the // ABI. - if elf.ST_TYPE(elfsym.Info) == elf.STT_FUNC { + if elf.ST_TYPE(elfsym.Info) == elf.STT_FUNC && ver == 0 { alias := ctxt.Syms.Lookup(elfsym.Name, sym.SymVerABIInternal) if alias.Type != 0 { continue From a6a7b148f874b32a34e833893971b471cd9cdeb7 Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Thu, 27 Jun 2019 19:00:08 -0400 Subject: [PATCH 113/255] crypto/tls: deprecate SSLv3 support Updates #32716 Change-Id: Ia0c03918e8f2da4d9824c49c6d4cfca1b0787b0a Reviewed-on: https://go-review.googlesource.com/c/go/+/184102 Reviewed-by: Andrew Bonventre --- doc/go1.13.html | 8 ++++++++ src/crypto/tls/common.go | 5 ++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/doc/go1.13.html b/doc/go1.13.html index 9d2c65be2b..4240d4b1a7 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -534,6 +534,14 @@ godoc
    crypto/tls
    +

    + Support for SSL version 3.0 (SSLv3) + is now deprecated and will be removed in Go 1.14. Note that SSLv3 + is cryptographically + broken, is already disabled by default in crypto/tls, + and was never supported by Go clients. +

    +

    Ed25519 certificates are now supported in TLS versions 1.2 and 1.3.

    diff --git a/src/crypto/tls/common.go b/src/crypto/tls/common.go index d135b1fc99..da1eae0800 100644 --- a/src/crypto/tls/common.go +++ b/src/crypto/tls/common.go @@ -23,11 +23,14 @@ import ( ) const ( - VersionSSL30 = 0x0300 VersionTLS10 = 0x0301 VersionTLS11 = 0x0302 VersionTLS12 = 0x0303 VersionTLS13 = 0x0304 + + // Deprecated: SSLv3 is cryptographically broken, and will be + // removed in Go 1.14. See golang.org/issue/32716. + VersionSSL30 = 0x0300 ) const ( From 0da58d076a98a0fa027ea547b2a1c35147fd6e6e Mon Sep 17 00:00:00 2001 From: Jay Conrod Date: Fri, 12 Jul 2019 17:31:59 -0400 Subject: [PATCH 114/255] cmd/go: clarify error text for module path mismatch This error occurs when a module is loaded with one name (for example, github.com/golang/lint) but declares a different path in its go.mod (golang.org/x/lint). The current text "unexpected module path" is confusing. It doesn't explain why the path was unexpected, and it's not clear what was expected. With this change, the error text includes the module and version containing the go.mod file with the error, the declared module path, and the loaded module path. The paths are vertically aligned so differences are visually obvious. As with other module version errors, the shortest chain of requirements is printed. This change supercedes CL 158477. Fixes #28489 Change-Id: Ieb07d00bcae182376d7be6aad111c84fbf784354 Reviewed-on: https://go-review.googlesource.com/c/go/+/185985 Run-TryBot: Jay Conrod TryBot-Result: Gobot Gobot Reviewed-by: Bryan C. Mills --- src/cmd/go/internal/modload/load.go | 4 +++- .../go/testdata/script/mod_load_badchain.txt | 20 ++++++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/cmd/go/internal/modload/load.go b/src/cmd/go/internal/modload/load.go index 81fb8b346f..c6a7c419fb 100644 --- a/src/cmd/go/internal/modload/load.go +++ b/src/cmd/go/internal/modload/load.go @@ -1136,7 +1136,9 @@ func (r *mvsReqs) required(mod module.Version) ([]module.Version, error) { return nil, module.VersionError(mod, errors.New("parsing go.mod: missing module line")) } if mpath := f.Module.Mod.Path; mpath != origPath && mpath != mod.Path { - return nil, module.VersionError(mod, fmt.Errorf("parsing go.mod: unexpected module path %q", mpath)) + return nil, module.VersionError(mod, fmt.Errorf(`parsing go.mod: + module declares its path as: %s + but was loaded as: %s`, mod.Path, mpath)) } if f.Go != nil { r.versions.LoadOrStore(mod, f.Go.Version) diff --git a/src/cmd/go/testdata/script/mod_load_badchain.txt b/src/cmd/go/testdata/script/mod_load_badchain.txt index 6fdf2c7b6b..1e0b472468 100644 --- a/src/cmd/go/testdata/script/mod_load_badchain.txt +++ b/src/cmd/go/testdata/script/mod_load_badchain.txt @@ -57,19 +57,29 @@ import ( func Test(t *testing.T) {} -- update-main-expected -- go get: example.com/badchain/c@v1.0.0 updating to - example.com/badchain/c@v1.1.0: parsing go.mod: unexpected module path "example.com/badchain/wrong" + example.com/badchain/c@v1.1.0: parsing go.mod: + module declares its path as: example.com/badchain/c + but was loaded as: example.com/badchain/wrong -- update-a-expected -- go get: example.com/badchain/a@v1.1.0 requires example.com/badchain/b@v1.1.0 requires - example.com/badchain/c@v1.1.0: parsing go.mod: unexpected module path "example.com/badchain/wrong" + example.com/badchain/c@v1.1.0: parsing go.mod: + module declares its path as: example.com/badchain/c + but was loaded as: example.com/badchain/wrong -- list-expected -- go: example.com/badchain/a@v1.1.0 requires example.com/badchain/b@v1.1.0 requires - example.com/badchain/c@v1.1.0: parsing go.mod: unexpected module path "example.com/badchain/wrong" + example.com/badchain/c@v1.1.0: parsing go.mod: + module declares its path as: example.com/badchain/c + but was loaded as: example.com/badchain/wrong -- list-missing-expected -- go: m/use imports - example.com/badchain/c: example.com/badchain/c@v1.1.0: parsing go.mod: unexpected module path "example.com/badchain/wrong" + example.com/badchain/c: example.com/badchain/c@v1.1.0: parsing go.mod: + module declares its path as: example.com/badchain/c + but was loaded as: example.com/badchain/wrong -- list-missing-test-expected -- go: m/testuse tested by m/testuse.test imports - example.com/badchain/c: example.com/badchain/c@v1.1.0: parsing go.mod: unexpected module path "example.com/badchain/wrong" + example.com/badchain/c: example.com/badchain/c@v1.1.0: parsing go.mod: + module declares its path as: example.com/badchain/c + but was loaded as: example.com/badchain/wrong From 6bf2767cc87f9f6a1b85cdc18c656fade735f27f Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Tue, 2 Jul 2019 17:03:27 -0400 Subject: [PATCH 115/255] cmd/go: tighten the check for pseudo-version base tags Do not allow a pseudo-version derived from a canonical tag to refer to the same revision as the tag itself. It's unnecessary (because canonical tags already have a total ordering) and confusing (the pseudo-version appears to come after the tag, but actually refers to the exact same revision). Updates #32879 Updates #27173 Change-Id: I02befedbe89c8819bdd93e470783ce63fc813193 Reviewed-on: https://go-review.googlesource.com/c/go/+/184720 Run-TryBot: Bryan C. Mills TryBot-Result: Gobot Gobot Reviewed-by: Jay Conrod --- doc/go1.13.html | 6 ++-- src/cmd/go/internal/modfetch/coderepo.go | 30 +++++++++++++++---- src/cmd/go/internal/modfetch/coderepo_test.go | 22 +++++++++++++- .../testdata/script/mod_invalid_version.txt | 18 ++++++++--- 4 files changed, 64 insertions(+), 12 deletions(-) diff --git a/doc/go1.13.html b/doc/go1.13.html index 4240d4b1a7..69bb1b0741 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -302,8 +302,10 @@ go env -w GOSUMDB=off between pseudo-versions and version-control metadata. Specifically:
      -
    • The version prefix must be derived from a tag on the named revision or - one of its ancestors, or be of the form vX.0.0.
    • +
    • The version prefix must be of the form vX.0.0, or derived + from a tag on an ancestor of the named revision, or derived from a tag that + includes build metadata on + the named revision itself.
    • The date string must match the UTC timestamp of the revision.
    • diff --git a/src/cmd/go/internal/modfetch/coderepo.go b/src/cmd/go/internal/modfetch/coderepo.go index 491fe11f50..548c6846d2 100644 --- a/src/cmd/go/internal/modfetch/coderepo.go +++ b/src/cmd/go/internal/modfetch/coderepo.go @@ -479,6 +479,11 @@ func (r *codeRepo) validatePseudoVersion(info *codehost.RevInfo, version string) return fmt.Errorf("does not match version-control timestamp (%s)", info.Time.UTC().Format(time.RFC3339)) } + tagPrefix := "" + if r.codeDir != "" { + tagPrefix = r.codeDir + "/" + } + // A pseudo-version should have a precedence just above its parent revisions, // and no higher. Otherwise, it would be possible for library authors to "pin" // dependency versions (and bypass the usual minimum version selection) by @@ -504,11 +509,26 @@ func (r *codeRepo) validatePseudoVersion(info *codehost.RevInfo, version string) return fmt.Errorf("major version without preceding tag must be v0, not v1") } return nil - } - - tagPrefix := "" - if r.codeDir != "" { - tagPrefix = r.codeDir + "/" + } else { + for _, tag := range info.Tags { + versionOnly := strings.TrimPrefix(tag, tagPrefix) + if versionOnly == base { + // The base version is canonical, so if the version from the tag is + // literally equal (not just equivalent), then the tag is canonical too. + // + // We allow pseudo-versions to be derived from non-canonical tags on the + // same commit, so that tags like "v1.1.0+some-metadata" resolve as + // close as possible to the canonical version ("v1.1.0") while still + // enforcing a total ordering ("v1.1.1-0.[…]" with a unique suffix). + // + // However, canonical tags already have a total ordering, so there is no + // reason not to use the canonical tag directly, and we know that the + // canonical tag must already exist because the pseudo-version is + // derived from it. In that case, referring to the revision by a + // pseudo-version derived from its own canonical tag is just confusing. + return fmt.Errorf("tag (%s) found on revision %s is already canonical, so should not be replaced with a pseudo-version derived from that tag", tag, rev) + } + } } tags, err := r.code.Tags(tagPrefix + base) diff --git a/src/cmd/go/internal/modfetch/coderepo_test.go b/src/cmd/go/internal/modfetch/coderepo_test.go index b5c9be52ad..1f2b95bd23 100644 --- a/src/cmd/go/internal/modfetch/coderepo_test.go +++ b/src/cmd/go/internal/modfetch/coderepo_test.go @@ -83,6 +83,26 @@ var codeRepoTests = []codeRepoTest{ "pkg/p.go", }, }, + { + vcs: "git", + path: "github.com/rsc/vgotest1", + rev: "v0.0.0-20180219231006-80d85c5d4d17", + version: "v0.0.0-20180219231006-80d85c5d4d17", + name: "80d85c5d4d17598a0e9055e7c175a32b415d6128", + short: "80d85c5d4d17", + time: time.Date(2018, 2, 19, 23, 10, 6, 0, time.UTC), + zip: []string{ + "LICENSE", + "README.md", + "pkg/p.go", + }, + }, + { + vcs: "git", + path: "github.com/rsc/vgotest1", + rev: "v0.0.1-0.20180219231006-80d85c5d4d17", + err: `github.com/rsc/vgotest1@v0.0.1-0.20180219231006-80d85c5d4d17: invalid pseudo-version: tag (v0.0.0) found on revision 80d85c5d4d17 is already canonical, so should not be replaced with a pseudo-version derived from that tag`, + }, { vcs: "git", path: "github.com/rsc/vgotest1", @@ -515,7 +535,7 @@ func TestCodeRepo(t *testing.T) { } var hgmap = map[string]string{ - "github.com/rsc/vgotest1/": "vcs-test.golang.org/hg/vgotest1.hg/", + "github.com/rsc/vgotest1": "vcs-test.golang.org/hg/vgotest1.hg", "f18795870fb14388a21ef3ebc1d75911c8694f31": "a9ad6d1d14eb544f459f446210c7eb3b009807c6", "ea65f87c8f52c15ea68f3bdd9925ef17e20d91e9": "f1fc0f22021b638d073d31c752847e7bf385def7", "b769f2de407a4db81af9c5de0a06016d60d2ea09": "92c7eb888b4fac17f1c6bd2e1060a1b881a3b832", diff --git a/src/cmd/go/testdata/script/mod_invalid_version.txt b/src/cmd/go/testdata/script/mod_invalid_version.txt index 2be0d01cce..a587b4422f 100644 --- a/src/cmd/go/testdata/script/mod_invalid_version.txt +++ b/src/cmd/go/testdata/script/mod_invalid_version.txt @@ -144,6 +144,16 @@ cd .. ! go list -m golang.org/x/text stderr 'golang.org/x/text@v0.2.1-0.20170915032832-14c0d48ead0c: invalid pseudo-version: revision 14c0d48ead0c is not a descendent of preceding tag \(v0.2.0\)' +# A pseudo-version derived from a canonical tag on the same revision is invalid. +cp go.mod.orig go.mod +go mod edit -require golang.org/x/text@v0.2.1-0.20171213102548-c4d099d611ac +cd outside +! go list -m golang.org/x/text +stderr 'go: example.com@v0.0.0 requires\n\tgolang.org/x/text@v0.2.1-0.20171213102548-c4d099d611ac: invalid pseudo-version: tag \(v0.2.0\) found on revision c4d099d611ac is already canonical, so should not be replaced with a pseudo-version derived from that tag' +cd .. +! go list -m golang.org/x/text +stderr 'golang.org/x/text@v0.2.1-0.20171213102548-c4d099d611ac: invalid pseudo-version: tag \(v0.2.0\) found on revision c4d099d611ac is already canonical, so should not be replaced with a pseudo-version derived from that tag' + # A +incompatible suffix is not allowed on a version that is actually compatible. cp go.mod.orig go.mod go mod edit -require golang.org/x/text@v0.1.1-0.20170915032832-14c0d48ead0c+incompatible @@ -165,15 +175,15 @@ go list -m github.com/pierrec/lz4 stdout 'github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1' cd .. -# A +incompatible version for a module that has an explicit go.mod file is invalid. +# A +incompatible pseudo-version for a module that has an explicit go.mod file is invalid. cp go.mod.orig go.mod -go mod edit -require github.com/pierrec/lz4@v2.0.9-0.20190131084431-473cd7ce01a1+incompatible +go mod edit -require github.com/pierrec/lz4@v2.0.9-0.20190209155647-9a39efadad3d+incompatible cd outside ! go list -m github.com/pierrec/lz4 -stderr 'go: example.com@v0.0.0 requires\n\tgithub.com/pierrec/lz4@v2.0.9-0.20190131084431-473cd7ce01a1\+incompatible: invalid version: \+incompatible suffix not allowed: module contains a go.mod file, so semantic import versioning is required' +stderr 'go: example.com@v0.0.0 requires\n\tgithub.com/pierrec/lz4@v2.0.9-0.20190209155647-9a39efadad3d\+incompatible: invalid version: \+incompatible suffix not allowed: module contains a go.mod file, so semantic import versioning is required' cd .. ! go list -m github.com/pierrec/lz4 -stderr 'github.com/pierrec/lz4@v2.0.9-0.20190131084431-473cd7ce01a1\+incompatible: invalid version: \+incompatible suffix not allowed: module contains a go.mod file, so semantic import versioning is required' +stderr 'github.com/pierrec/lz4@v2.0.9-0.20190209155647-9a39efadad3d\+incompatible: invalid version: \+incompatible suffix not allowed: module contains a go.mod file, so semantic import versioning is required' # A +incompatible pseudo-version is valid for a revision of the module # that lacks a go.mod file. From 2bcbe6a4b6bc74ad9a1de159058e452c4d9d92cb Mon Sep 17 00:00:00 2001 From: Cherry Zhang Date: Tue, 16 Jul 2019 11:33:10 -0400 Subject: [PATCH 116/255] runtime: add a test for getg with thread switch With gccgo, if we generate getg inlined, the backend may cache the address of the TLS variable, which will become invalid after a thread switch. Currently there is no known bug for this. But if we didn't implement this carefully, we may get subtle bugs. This CL adds a test that will fail loudly if this is wrong. (See also https://go.googlesource.com/gofrontend/+/refs/heads/master/libgo/runtime/proc.c#333 and an incorrect attempt CL 185337.) Note: at least on Linux/AMD64, even with an incorrect implementation, this only fails if the test is compiled with -fPIC, which is not the default setting for gccgo test suite. So some manual work is needed. Maybe we could extend the test suite to run the runtime test with more settings (e.g. PIC and static). Change-Id: I459a3b4c31f09b9785c0eca19b7756f80e8ef54c Reviewed-on: https://go-review.googlesource.com/c/go/+/186357 Run-TryBot: Cherry Zhang TryBot-Result: Gobot Gobot Reviewed-by: Than McIntosh Reviewed-by: Ian Lance Taylor --- src/runtime/export_test.go | 34 ++++++++++++++++++++++++++++++++++ src/runtime/proc_test.go | 4 ++++ 2 files changed, 38 insertions(+) diff --git a/src/runtime/export_test.go b/src/runtime/export_test.go index 62b7730c44..6009932056 100644 --- a/src/runtime/export_test.go +++ b/src/runtime/export_test.go @@ -681,3 +681,37 @@ func (t *Treap) CheckInvariants() { t.mTreap.treap.walkTreap(checkTreapNode) t.mTreap.treap.validateInvariants() } + +func RunGetgThreadSwitchTest() { + // Test that getg works correctly with thread switch. + // With gccgo, if we generate getg inlined, the backend + // may cache the address of the TLS variable, which + // will become invalid after a thread switch. This test + // checks that the bad caching doesn't happen. + + ch := make(chan int) + go func(ch chan int) { + ch <- 5 + LockOSThread() + }(ch) + + g1 := getg() + + // Block on a receive. This is likely to get us a thread + // switch. If we yield to the sender goroutine, it will + // lock the thread, forcing us to resume on a different + // thread. + <-ch + + g2 := getg() + if g1 != g2 { + panic("g1 != g2") + } + + // Also test getg after some control flow, as the + // backend is sensitive to control flow. + g3 := getg() + if g1 != g3 { + panic("g1 != g3") + } +} diff --git a/src/runtime/proc_test.go b/src/runtime/proc_test.go index 09b0652bee..6e6272e80a 100644 --- a/src/runtime/proc_test.go +++ b/src/runtime/proc_test.go @@ -977,3 +977,7 @@ func TestPreemptionAfterSyscall(t *testing.T) { }) } } + +func TestGetgThreadSwitch(t *testing.T) { + runtime.RunGetgThreadSwitchTest() +} From 0cadf40f4c3613c0170120f4b902cb153338db15 Mon Sep 17 00:00:00 2001 From: Jay Conrod Date: Tue, 16 Jul 2019 12:51:34 -0400 Subject: [PATCH 117/255] cmd/go: tweak wording of module path mismatch error message Changes "was loaded as" to "was required as". This is slightly more precise, since it hints at a requirement edge in the module version graph. Updates #28489 Change-Id: I636268c33f1ea9858c214fe275f271538186ed6d Reviewed-on: https://go-review.googlesource.com/c/go/+/186377 Run-TryBot: Jay Conrod TryBot-Result: Gobot Gobot Reviewed-by: Bryan C. Mills --- src/cmd/go/internal/modload/load.go | 2 +- src/cmd/go/testdata/script/mod_load_badchain.txt | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/cmd/go/internal/modload/load.go b/src/cmd/go/internal/modload/load.go index c6a7c419fb..9a5d4f231c 100644 --- a/src/cmd/go/internal/modload/load.go +++ b/src/cmd/go/internal/modload/load.go @@ -1138,7 +1138,7 @@ func (r *mvsReqs) required(mod module.Version) ([]module.Version, error) { if mpath := f.Module.Mod.Path; mpath != origPath && mpath != mod.Path { return nil, module.VersionError(mod, fmt.Errorf(`parsing go.mod: module declares its path as: %s - but was loaded as: %s`, mod.Path, mpath)) + but was required as: %s`, mod.Path, mpath)) } if f.Go != nil { r.versions.LoadOrStore(mod, f.Go.Version) diff --git a/src/cmd/go/testdata/script/mod_load_badchain.txt b/src/cmd/go/testdata/script/mod_load_badchain.txt index 1e0b472468..559f411593 100644 --- a/src/cmd/go/testdata/script/mod_load_badchain.txt +++ b/src/cmd/go/testdata/script/mod_load_badchain.txt @@ -59,27 +59,27 @@ func Test(t *testing.T) {} go get: example.com/badchain/c@v1.0.0 updating to example.com/badchain/c@v1.1.0: parsing go.mod: module declares its path as: example.com/badchain/c - but was loaded as: example.com/badchain/wrong + but was required as: example.com/badchain/wrong -- update-a-expected -- go get: example.com/badchain/a@v1.1.0 requires example.com/badchain/b@v1.1.0 requires example.com/badchain/c@v1.1.0: parsing go.mod: module declares its path as: example.com/badchain/c - but was loaded as: example.com/badchain/wrong + but was required as: example.com/badchain/wrong -- list-expected -- go: example.com/badchain/a@v1.1.0 requires example.com/badchain/b@v1.1.0 requires example.com/badchain/c@v1.1.0: parsing go.mod: module declares its path as: example.com/badchain/c - but was loaded as: example.com/badchain/wrong + but was required as: example.com/badchain/wrong -- list-missing-expected -- go: m/use imports example.com/badchain/c: example.com/badchain/c@v1.1.0: parsing go.mod: module declares its path as: example.com/badchain/c - but was loaded as: example.com/badchain/wrong + but was required as: example.com/badchain/wrong -- list-missing-test-expected -- go: m/testuse tested by m/testuse.test imports example.com/badchain/c: example.com/badchain/c@v1.1.0: parsing go.mod: module declares its path as: example.com/badchain/c - but was loaded as: example.com/badchain/wrong + but was required as: example.com/badchain/wrong From b5df14c309f2185abbef076226e5d352a8659bde Mon Sep 17 00:00:00 2001 From: Dmitri Shuralyov Date: Tue, 16 Jul 2019 16:29:49 -0400 Subject: [PATCH 118/255] CONTRIBUTORS: first round of updates for Go 1.13 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This update has been automatically generated using the updatecontrib command: cd gotip go run golang.org/x/build/cmd/updatecontrib With minor manual changes to canonicalize letter case for a few names. Actions taken (relative to CONTRIBUTORS at origin/master): Added Ahsun Ahmed Added Al Cutter Added Alex Tokarev Added Alexander Lourier Added Alexander Rakoczy Added Andrei Matei Added Andrei Vagin Added Andrew Z Allen Added Aofei Sheng Added Arash Bina Added Benjamin Peterson Added Bjørn Erik Pedersen Added Brandon Ryan Added Bryan Heden Added Carlos Eduardo Added Carrie Bynon Added Chris Marchesi Added Colin Arnott Added Daniel Cormier Added Daniel Langner Added Daniel Lublin Added Darren Grant Added Derek Phan Added Dmitri Goutnik Added Dmitry Mottl Added Eli Bendersky Added Evan Digby Added Fedor Korotkiy Added Felix Bünemann Added Francesco Renzi Added Gabriel Guzman Added Gabriel Nelle Added Gernot Vormayr Added GitHub User ZZMarquis (7624583) Added GitHub User alkesh26 (1019076) Added GitHub User bakape (7851952) Added GitHub User frennkie (6499251) Added GitHub User hengwu0 (41297446) <41297446+hengwu0@users.noreply.github.com> Added GitHub User kazyshr (30496953) Added GitHub User linguohua (3434367) Added GitHub User micnncim (21333876) Added Gordon Tyler Added Greg Thelen Added Haosdent Huang Added Hasan Ozgan Added Henry Wong Added Horst Rutter Added Ivan Osadchiy Added JT Olio Added Jacob Blain Christen Added Jacob Walker Added James Nugent Added Jannis Andrija Schnitzer Added Jean-François Bustarret Added Jeremy Jay Added Jeroen Simonetti Added Jingnan Si Added Jinkun Zhang Added John Moore Added John Weldon Added Jonathon Lacher Added Jordan Liggitt Added Joshua M. Clulow Added Juraj Sukop Added Justin Li Added Kai Dong Added Kenichi Tsunokawa Added Kenta Mori Added Ketan Parmar Added Kirill Motkov Added Kshitij Saraogi Added Leonardo Comelli Added Lorenz Nickel Added Luka Zitnik Added Luke Champine Added Madhu Rajanna Added Marat Khabibullin Added Mark Villacampa Added Max Semenik Added Maxim Eryomenko Added Michael Cook Added Michael Vogt Added Mickael KERJEAN Added Mickey Reiss Added Mihai Moldovan Added Mirko Hansen Added Muir Manders Added Mykhailo Lesyk Added Nick Anthony Added Nikita Kryuchkov Added Nir Soffer Added Norman B. Lancaster Added Patrick Barker Added Patrik Lundin Added Petr Jediný Added Robert Ayrapetyan Added Robert van Gent Added Rohan Verma Added Romain Baugue Added Sad Pencil Added Segev Finer Added Sergey Dobrodey Added Sergey Yanykin Added Shawn Elliott Added Shengjing Zhu Added Shubham Sharma Added Stephan Zuercher Added Steve Mynott Added Tai Le Added Todd Kulesza Added Tom Anthony Added Tooru Takahashi Added Udalov Max Added Valentin Vidic Added Vivek Sekhar Added WEI Xikai Added Wenlei (Frank) He Added Wenzel Lowe Added Yang Tian Added Yasser Abdolmaleki Added Zach Jones Added adarsh ravichandran Added berkant ipek <41230766+0xbkt@users.noreply.github.com> Added karthik nayak Added marius a. eriksen Added Максадбек Ахмедов Used GitHub User ZZMarquis (7624583) form for ZZMarquis https://github.com/golang/go/commit/b00ef3b865 [go] Used GitHub User alkesh26 (1019076) form for alkesh26 https://github.com/golang/go/commit/c7f69a2897 [go] Used GitHub User bakape (7851952) form for bakape https://github.com/golang/go/commit/27e444d5e6 [go] Used GitHub User frennkie (6499251) form for frennkie https://github.com/golang/go/commit/ee46250e06 [go] Used GitHub User hengwu0 (41297446) form for hengwu0 <41297446+hengwu0@users.noreply.github.com> https://github.com/golang/go/commit/95d4e6158b [go] Used GitHub User kazyshr (30496953) form for kazyshr https://github.com/golang/tools/commit/0fdf0c73 [tools] Used GitHub User linguohua (3434367) form for linguohua https://github.com/golang/tools/commit/97de5656 [tools] Used GitHub User micnncim (21333876) form for micnncim https://github.com/golang/tools/commit/15d5d381 [tools] Used GitHub name "Akhil Indurti" for smasher164 https://github.com/golang/go/commit/5ca44dc403 [build go] Used GitHub name "Carlos Eduardo" for CarlosEDP https://github.com/golang/net/commit/018c4d4 [net] Used GitHub name "Ivan Markin" for nogoegst https://github.com/golang/go/commit/a1addf15df [go] Used GitHub name "Jean-François Bustarret" for jfbus https://github.com/golang/go/commit/825ff1e317 [go] Used GitHub name "Jinkun Zhang" for smileeye https://github.com/golang/go/commit/607493bed6 [go] Used GitHub name "John Moore" for guitarbum722 https://github.com/golang/go/commit/44c9354c5a [go] Used GitHub name "Keiji Yoshida" for yosssi https://github.com/golang/lint/commit/ac6833c [lint] Used GitHub name "Kenta Mori" for zoncoen https://github.com/golang/net/commit/fe579d4 [net] Used GitHub name "Kirill Motkov" for Motkov.Kirill https://github.com/golang/go/commit/0ff0df8be3 [go] Used GitHub name "Luke Champine" for lukechampine https://github.com/golang/go/commit/9d40fadb1c [crypto go] Used GitHub name "Michalis Kargakis" for kargakis https://github.com/golang/go/commit/e243d242d7 [go] Used GitHub name "Nick Anthony" for Liberatys https://github.com/golang/go/commit/62ddf7d0c5 [go] Used GitHub name "Robert Ayrapetyan" for rayrapetyan https://github.com/golang/sys/commit/bf70e46 [sys] Used GitHub name "Robin Eklind" for mewmew https://github.com/golang/go/commit/b8620afb8d [blog go proposal.git] Used GitHub name "Sergey Dobrodey" for sergeydobrodey https://github.com/golang/net/commit/e869164 [net] Used GitHub name "Tai Le" for Tai https://github.com/golang/build/commit/1b388d2 [build tools] Used GitHub name "WEI Xikai" for ShiKaiWi https://github.com/golang/go/commit/518ee55d78 [go] Used GitHub name "Yang Tian" for taoyuanyuan https://github.com/golang/go/commit/5eeb372418 [go] Used GitHub name "Zach Jones" for zdjones https://github.com/golang/go/commit/c178389604 [go] Updates #12042 Change-Id: Ic220d997a0dc3bf4109ab964cbb6a25ea5c0c9da Reviewed-on: https://go-review.googlesource.com/c/go/+/186397 Reviewed-by: Alexander Rakoczy Reviewed-by: Ian Lance Taylor --- CONTRIBUTORS | 126 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index b201301a85..6465de4714 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -47,6 +47,7 @@ Adam Shannon Adam Sindelar Adam Thomason Adam Woodbeck +Adarsh Ravichandran Aditya Mukerjee Adrian Hesketh Adrian Nos @@ -62,12 +63,14 @@ Ahmed Wahed Ahmet Alp Balkan Ahmet Soormally Ahmy Yulrizka +Ahsun Ahmed Aiden Scandella Ainar Garipov Aishraj Dahal Akhil Indurti Akihiro Suda Akshat Kumar +Al Cutter Alan Braithwaite Alan Donovan Alan Shreve @@ -95,6 +98,7 @@ Alex Myasoedov Alex Plugaru Alex Schroeder Alex Sergeyev +Alex Tokarev Alex Vaghin Alexander Demakin Alexander Döring @@ -103,12 +107,14 @@ Alexander Guz Alexander Kauer Alexander Kucherenko Alexander Larsson +Alexander Lourier Alexander Menzhinsky Alexander Morozov Alexander Neumann Alexander Orlov Alexander Pantyukhin Alexander Polcyn +Alexander Rakoczy Alexander Reece Alexander Surma Alexander Zhavnerchik @@ -150,7 +156,9 @@ Andreas Jellinghaus Andreas Litt Andrei Gherzan Andrei Korzhevskii +Andrei Matei Andrei Tudor Călin +Andrei Vagin Andrei Vieru Andres Erbsen Andres Lowrie @@ -177,6 +185,7 @@ Andrew Szeto Andrew Werner Andrew Wilkins Andrew Williams +Andrew Z Allen Andrey Mirtchovski Andrey Petrov Andrii Soldatenko @@ -214,8 +223,10 @@ Antonio Antelo Antonio Bibiano Antonio Murdaca Antonio Troina +Aofei Sheng Apisak Darakananda Aram Hăvărneanu +Arash Bina Areski Belaid Ariel Mashraki Arkadi Pyuro @@ -266,11 +277,13 @@ Ben Shi Benjamin Black Benjamin Cable Benjamin Hsieh +Benjamin Peterson Benjamin Prosnitz Benjamin Wester Benny Siegert Benoit Sigoure Berengar Lehr +Berkant Ipek <41230766+0xbkt@users.noreply.github.com> Bill Neubauer Bill O'Farrell Bill Prin @@ -278,6 +291,7 @@ Bill Thiede Bill Zissimopoulos Billie Harold Cleek Billy Lynch +Bjørn Erik Pedersen Bjorn Tillenius Bjorn Tipling Blain Smith @@ -303,6 +317,7 @@ Brady Catherman Brady Sullivan Brandon Bennett Brandon Gilmore +Brandon Ryan Brendan Daniel Tracey Brendan O'Dea Brett Cannon @@ -321,6 +336,7 @@ Bryan Alexander Bryan C. Mills Bryan Chan Bryan Ford +Bryan Heden Bulat Gaifullin Burak Guven Caine Tighe @@ -337,9 +353,11 @@ Carlisia Campos Carlo Alberto Ferraris Carlos Castillo Carlos Cirello +Carlos Eduardo Carlos Eduardo Seo Carlos Souza Carolyn Van Slyck +Carrie Bynon Cary Hull Case Nelson Casey Callendrello @@ -373,6 +391,7 @@ Chris Kastorff Chris Lennert Chris Liles Chris Manghane +Chris Marchesi Chris McGee Chris Raynor Chris Roche @@ -404,6 +423,7 @@ Clément Chigot Clement Skau Cody Oss Colby Ranger +Colin Arnott Colin Cross Colin Edwards Colin Kennedy @@ -436,13 +456,16 @@ Dan Johnson Dan Peterson Dan Pupius Dan Sinclair +Daniel Cormier Daniël de Kok Daniel Fleischman Daniel Ingram Daniel Johansson Daniel Kerwin Daniel Krech +Daniel Langner Daniel Lidén +Daniel Lublin Daniel Martí Daniel Morsing Daniel Nadasi @@ -457,6 +480,7 @@ Danny Rosseau Daria Kolistratova Darien Raymond Darren Elwood +Darren Grant Darshan Parajuli Datong Sun Dave Borowitz @@ -516,6 +540,7 @@ Derek Buitenhuis Derek Che Derek McGowan Derek Parker +Derek Phan Derek Shockey Dev Ojha Dev Zhoujun @@ -534,6 +559,7 @@ Dina Garmash Diogo Pinela Dirk Gadsden Diwaker Gupta +Dmitri Goutnik Dmitri Popov Dmitri Shuralyov Dmitriy Cherchenko @@ -542,6 +568,7 @@ Dmitriy Shelenin Dmitriy Vyukov Dmitry Chestnykh Dmitry Doroginin +Dmitry Mottl Dmitry Neverov Dmitry Savintsev Dmitry Yakunin @@ -578,6 +605,7 @@ Eivind Uggedal Elbert Fliek Eldar Rakhimberdin Elena Grahovac +Eli Bendersky Elias Naur Elliot Morrison-Reed Emerson Lin @@ -615,6 +643,7 @@ Euan Kemp Eugene Kalinin Evan Broder Evan Brown +Evan Digby Evan Hicks Evan Jones Evan Klitzke @@ -639,7 +668,9 @@ Fazlul Shahriar Federico Bond Federico Simoncelli Fedor Indutny +Fedor Korotkiy Felipe Oliveira +Felix Bünemann Felix Geisendörfer Felix Kollmann Filip Gruszczyński @@ -654,6 +685,7 @@ Florin Patan Folke Behrens Ford Hurley Francesc Campoy +Francesco Renzi Francisco Claude Francisco Rojas Francisco Souza @@ -673,6 +705,8 @@ G. Hussain Chinoy Gaal Yahas Gabríel Arthúr Pétursson Gabriel Aszalos +Gabriel Guzman +Gabriel Nelle Gabriel Nicolas Avellaneda Gabriel Russell Gareth Paul Jones @@ -695,14 +729,17 @@ George Shammas Gerasimos (Makis) Maropoulos Gerasimos Dimitriadis Gergely Brautigam +Gernot Vormayr Getulio Sánchez Gianguido Sora` Gideon Jan-Wessel Redelinghuys Giles Lean Giovanni Bajo GitHub User @ajnirp (1688456) +GitHub User @alkesh26 (1019076) GitHub User @andrius4669 (4699695) GitHub User @as (8127015) +GitHub User @bakape (7851952) GitHub User @bgadrian (830001) GitHub User @bontequero (2674999) GitHub User @cch123 (384546) @@ -710,11 +747,16 @@ GitHub User @chanxuehong (3416908) GitHub User @dupoxy (1143957) GitHub User @erifan (31343225) GitHub User @esell (9735165) +GitHub User @frennkie (6499251) +GitHub User @hengwu0 (41297446) <41297446+hengwu0@users.noreply.github.com> GitHub User @itchyny (375258) +GitHub User @kazyshr (30496953) GitHub User @kc1212 (1093806) GitHub User @Kropekk (13366453) +GitHub User @linguohua (3434367) GitHub User @LotusFenn (13775899) GitHub User @madiganz (18340029) +GitHub User @micnncim (21333876) GitHub User @mkishere (224617) <224617+mkishere@users.noreply.github.com> GitHub User @OlgaVlPetrova (44112727) GitHub User @pityonline (438222) @@ -724,6 +766,7 @@ GitHub User @shogo-ma (9860598) GitHub User @tell-k (26263) GitHub User @uhei (2116845) GitHub User @uropek (39370426) +GitHub User @ZZMarquis (7624583) Giulio Iotti Giulio Micheloni Giuseppe Valente @@ -731,11 +774,13 @@ Gleb Stepanov Glenn Brown Glenn Lewis Gordon Klaus +Gordon Tyler Graham King Graham Miller Grant Griffiths Greg Poirier Greg Steuck +Greg Thelen Greg Ward Grégoire Delattre Gregory Man @@ -759,12 +804,14 @@ HAMANO Tsukasa Han-Wen Nienhuys Hang Qian Hanjun Kim +Haosdent Huang Harald Nordgren Hari haran Hariharan Srinath Harley Laue Harry Moreno Harshavardhana +Hasan Ozgan Hauke Löffler Håvard Haugen He Liu @@ -777,6 +824,7 @@ Henry Adi Sumarto Henry Bubert Henry Chang Henry Clifford +Henry Wong Herbert Georg Fischer Herbie Ong Heschi Kreinick @@ -789,6 +837,7 @@ Hitoshi Mitake Holden Huang Hong Ruiqi Hongfei Tan +Horst Rutter Hossein Sheikh Attar Hsin Tsao Hsin-Ho Yeh @@ -831,6 +880,7 @@ Ivan Krasin Ivan Kutuzov Ivan Markin Ivan Moscoso +Ivan Osadchiy Ivan Sharavuev Ivan Ukhov Ivy Evans @@ -838,8 +888,10 @@ Jaana Burcu Dogan Jack Britton Jack Lindamood Jacob Baskin +Jacob Blain Christen Jacob H. Haven Jacob Hoffman-Andrews +Jacob Walker Jae Kwon Jake B Jakob Borg @@ -860,6 +912,7 @@ James Lawrence James Meneghello James Myers James Neve +James Nugent James P. Cooper James Robinson James Schofield @@ -886,6 +939,7 @@ Jan Newmarch Jan Pilzer Jan Ziak <0xe2.0x9a.0x9b@gmail.com> Jani Monoses +Jannis Andrija Schnitzer Jared Culp Jaroslavas Počepko Jason A. Donenfeld @@ -906,6 +960,7 @@ Jay Taylor Jay Weisskopf Jean de Klerk Jean-André Santoni +Jean-François Bustarret Jean-Francois Cantin Jean-Marc Eurin Jean-Nicolas Moal @@ -927,8 +982,10 @@ Jeremiah Harmsen Jeremy Banks <_@jeremy.ca> Jeremy Canady Jeremy Jackins +Jeremy Jay Jeremy Schlatter Jeroen Bobbeldijk +Jeroen Simonetti Jerrin Shaji George Jess Frazelle Jesse Szwedko @@ -945,6 +1002,8 @@ Jimmy Zelinskie Jin-wook Jeong Jingcheng Zhang Jingguo Yao +Jingnan Si +Jinkun Zhang Jiong Du Jirka Daněk Jiulong Wang @@ -979,12 +1038,14 @@ John Howard Palevich John Jeffery John Jenkins John Leidegren +John Moore John Newlin John Potocny John R. Lenton John Schnake John Shahid John Tuley +John Weldon Johnny Luo Jon Chen Jonas Bernoulli @@ -1002,11 +1063,13 @@ Jonathan Pittman Jonathan Rudenberg Jonathan Stacks Jonathan Wills +Jonathon Lacher Jongmin Kim Joonas Kuorilehto Joop Kiefte Jordan Krage Jordan Lewis +Jordan Liggitt Jordan Rhee Jos Visser Jose Luis Vázquez González @@ -1022,11 +1085,13 @@ Josh Roppo Josh Varga Joshua Boelter Joshua Chase +Joshua M. Clulow Joshua Rubin Josselin Costanzi Jostein Stuhaug JP Sugarbroad JT Olds +JT Olio Juan Carlos Juan Pablo Civile Jude Pereira @@ -1043,11 +1108,14 @@ Julio Montes Junda Liu Jungho Ahn Junya Hayashi +Juraj Sukop Jure Ham Justin Gracenin +Justin Li Justin Nuß Justyn Temme Kai Backman +Kai Dong Kai Trukenmüller Kale Blankenship Kaleb Elwert @@ -1060,6 +1128,7 @@ Karan Dhiman Karel Pazdera Karoly Negyesi Karsten Köhler +Karthik Nayak Kashav Madan Kate Manson Katie Hockman @@ -1081,10 +1150,13 @@ Ken Friedenbach Ken Rockot Ken Sedgwick Ken Thompson +Kenichi Tsunokawa Kenji Kaneda Kenji Yano Kenneth Shaw Kenny Grant +Kenta Mori +Ketan Parmar Kevin Ballard Kevin Burke Kevin Kirsche @@ -1097,6 +1169,7 @@ Kieran Colford Kim Shrier Kim Yongbin Kir Kolyshkin +Kirill Motkov Kirill Smelkov Kirk Han Kirklin McDonald @@ -1111,6 +1184,7 @@ Kris Kwiatkowski Kris Nova Kris Rousey Kristopher Watts +Kshitij Saraogi Kun Li Kunpei Sakai Kuntal Majumder @@ -1145,12 +1219,14 @@ Leigh McCulloch Leo Antunes Leo Rudberg Leon Klingele +Leonardo Comelli Leonel Quinteros Lev Shamardin Lewin Bormann Lion Yang Lloyd Dewolf Lorenz Bauer +Lorenz Nickel Lorenzo Masini Lorenzo Stoakes Louis Kruger @@ -1166,7 +1242,9 @@ Ludi Rehak Luigi Riefolo Luit van Drongelen Luka Zakrajšek +Luka Zitnik Lukasz Milewski +Luke Champine Luke Curley Luke Granger-Brown Luna Duclos @@ -1176,6 +1254,7 @@ Lynn Boger Ma Peiqi Maarten Bezemer Maciej Dębski +Madhu Rajanna Magnus Hiie Maicon Costa Mak Kolybabi @@ -1189,6 +1268,7 @@ Mansour Rahimi Manu Garg Manu S Ajith Manuel Mendez +Marat Khabibullin Marc Weistroff Marc-Antoine Ruel Marcel Edmund Franke @@ -1200,6 +1280,7 @@ Marcus Willock Marga Manterola Marin Bašić Mario Arranz +Marius A. Eriksen Marius Nuennerich Mark Adams Mark Bucciarelli @@ -1210,6 +1291,7 @@ Mark Rushakoff Mark Ryan Mark Severson Mark Theunissen +Mark Villacampa Mark Wolfe Mark Zavislak Marko Juhani Silokunnas @@ -1285,7 +1367,9 @@ Matthieu Olivier Matthijs Kooijman Max Riveiro Max Schmitt +Max Semenik Max Ushakov +Maxim Eryomenko Maxim Khitrov Maxim Pimenov Maxim Ushakov @@ -1301,6 +1385,7 @@ Micah Stetson Michael Anthony Knyszek Michael Brandenburg Michael Chaten +Michael Cook Michael Darakananda Michael Dorner Michael Edwards @@ -1336,6 +1421,7 @@ Michael T. Jones Michael Teichgräber Michael Traver Michael Vetter +Michael Vogt Michal Bohuslávek Michal Cierniak Michał Derkacz @@ -1344,10 +1430,13 @@ Michal Pristas Michal Rostecki Michalis Kargakis Michel Lespinasse +Mickael Kerjean +Mickey Reiss Miek Gieben Miguel Mendez Miguel Molina Mihai Borobocea +Mihai Moldovan Mihai Todor Mihail Minaev Mikael Tillenius @@ -1372,6 +1461,7 @@ Milan Knezevic Milutin Jovanović MinJae Kwon Miquel Sabaté Solà +Mirko Hansen Miroslav Genov Misty De Meo Mohit Agarwal @@ -1386,7 +1476,9 @@ Mostyn Bramley-Moore Mrunal Patel Muhammad Falak R Wani Muhammed Uluyol +Muir Manders Mura Li +Mykhailo Lesyk Nan Deng Naoki Kanatani Nate Wilkinson @@ -1414,6 +1506,7 @@ Nicholas Ng Nicholas Presta Nicholas Sullivan Nicholas Waples +Nick Anthony Nick Cooper Nick Craig-Wood Nick Harper @@ -1434,10 +1527,12 @@ Nigel Kerr Nigel Tao Nik Nyby Nikhil Benesch +Nikita Kryuchkov Niklas Schnelle Niko Dziemba Nikolay Turpitko Nils Larsgård +Nir Soffer Niranjan Godbole Nishanth Shanmugham Noah Campbell @@ -1445,6 +1540,7 @@ Noble Johnson Nodir Turakulov Noel Georgi Norberto Lopes +Norman B. Lancaster Odin Ugedal Oleg Bulatov Oleg Vakheta @@ -1472,6 +1568,7 @@ Parker Moore Parminder Singh Pascal S. de Kloe Pat Moroney +Patrick Barker Patrick Crosby Patrick Gavlin Patrick Higgins @@ -1481,6 +1578,7 @@ Patrick Mylund Nielsen Patrick Pelletier Patrick Riley Patrick Smith +Patrik Lundin Paul A Querna Paul Borman Paul Boyd @@ -1537,6 +1635,7 @@ Peter Weinberger Peter Williams Peter Wu Peter Zhang +Petr Jediný Petrica Voicu Phil Pearl Phil Pennock @@ -1613,6 +1712,7 @@ Rob Earhart Rob Norman Rob Phoenix Rob Pike +Robert Ayrapetyan Robert Daniel Kortschak Robert Dinu Robert Figueiredo @@ -1623,6 +1723,7 @@ Robert Obryk Robert Sesek Robert Snedegar Robert Stepanek +Robert van Gent Robert-André Mauchin Roberto Clapis Roberto Selbach @@ -1633,8 +1734,10 @@ Rodrigo Moraes de Oliveira Rodrigo Rafael Monti Kochenburger Roger Pau Monné Roger Peppe +Rohan Verma Roland Illig Roland Shoemaker +Romain Baugue Roman Budnikov Roman Shchekin Ron Hashimoto @@ -1667,6 +1770,7 @@ Ryuma Yoshida Ryuzo Yamamoto S.Çağlar Onur Sabin Mihai Rapan +Sad Pencil Sai Cheemalapati Sakeven Jiang Salmān Aljammāz @@ -1707,15 +1811,18 @@ Sebastian Schmidt Sebastien Binet Sébastien Paolacci Sebastien Williams-Wynn +Segev Finer Seiji Takahashi Sergei Skorobogatov Sergey 'SnakE' Gromov Sergey Arseev +Sergey Dobrodey Sergey Frolov Sergey Lukjanov Sergey Mishin Sergey Mudrik Sergey Semin +Sergey Yanykin Sergio Luis O. B. Correia Sergiusz Bazanski Serhii Aheienko @@ -1726,10 +1833,12 @@ Shamil Garatuev Shane Hansen Shaozhen Ding Shaun Dunning +Shawn Elliott Shawn Ledbetter Shawn Smith Shawn Walker-Salas Shenghou Ma +Shengjing Zhu Shengyu Zhang Shi Han Ng Shijie Hao @@ -1737,6 +1846,7 @@ Shinji Tanaka Shintaro Kaneko Shivakumar GN Shivansh Rai +Shubham Sharma Shun Fan Silvan Jegen Simon Jefford @@ -1758,6 +1868,7 @@ Steeve Morin Stefan Nilsson Stepan Shabalin Stephan Renatus +Stephan Zuercher Stéphane Travostino Stephen Lewis Stephen Lu @@ -1769,6 +1880,7 @@ Steve Francia Steve Gilbert Steve LoFurno Steve McCoy +Steve Mynott Steve Newman Steve Phillips Steve Streeting @@ -1797,6 +1909,7 @@ Tad Fisher Tad Glines Tadas Valiukas Taesu Pyo +Tai Le Taj Khattra Takashi Matsuo Takayoshi Nishida @@ -1856,8 +1969,10 @@ Tobias Assarsson Tobias Columbus Tobias Klauser Toby Burress +Todd Kulesza Todd Neal Todd Wang +Tom Anthony Tom Bergan Tom Heng Tom Lanyon @@ -1873,6 +1988,7 @@ Tomoya Ishizaki Tonis Tiigi Tony Reix Tony Walker +Tooru Takahashi Tor Andersson Tormod Erevik Lea Toshiki Shima @@ -1896,6 +2012,7 @@ Tyler Bui-Palsulich Tyler Bunnell Tyler Treat Tzu-Jung Lee +Udalov Max Ugorji Nwoke Ulf Holm Nielsen Ulrich Kunitz @@ -1906,6 +2023,7 @@ Uttam C Pawar Vadim Grek Vadim Vygonets Val Polouchkine +Valentin Vidic Vega Garcia Luis Alfonso Venil Noronha Veselkov Konstantin @@ -1922,6 +2040,7 @@ Vish Subramanian Vishvananda Ishaya Visweswara R Vitor De Mario +Vivek Sekhar Vlad Krasnov Vladimir Kovpak Vladimir Kuzmin @@ -1943,8 +2062,11 @@ Wèi Cōngruì Wei Fu Wei Guangjing Wei Xiao +Wei Xikai Weichao Tang Wembley G. Leach, Jr +Wenlei (Frank) He +Wenzel Lowe Wil Selwood Wilfried Teiken Will Beason @@ -1969,12 +2091,14 @@ Xudong Zheng <7pkvm5aw@slicealias.com> Xuyang Kang Yamagishi Kazutoshi Yan Zou +Yang Tian Yann Hodique Yann Kerhervé Yann Salaün Yao Zhang Yaron de Leeuw Yasha Bubnov +Yasser Abdolmaleki Yasuharu Goto Yasuhiro Matsumoto Yasuyuki Oka @@ -2003,6 +2127,7 @@ Yves Junqueira Zac Bergquist Zach Bintliff Zach Gershman +Zach Jones Zachary Amsden Zachary Gershman Zak @@ -2018,6 +2143,7 @@ Zhongwei Yao Zhou Peng Ziad Hatahet Zorion Arrizabalaga +Максадбек Ахмедов Максим Федосеев Роман Хавроненко Тарас Буник From 5bc46cb71215f445797fb55e2b4eee795ee1ca17 Mon Sep 17 00:00:00 2001 From: Alberto Donizetti Date: Sun, 14 Jul 2019 19:08:57 +0200 Subject: [PATCH 119/255] doc/go1.13: remove 1.12 reference from 1.13 release notes While it's true that CL 168479 was also backported to 1.12, this is irrelevant for the Go1.13 release notes. Change-Id: I044be69f8f2bc005f58a0d63db05129add15f674 Reviewed-on: https://go-review.googlesource.com/c/go/+/186138 Reviewed-by: Ian Lance Taylor --- doc/go1.13.html | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/go1.13.html b/doc/go1.13.html index 69bb1b0741..2b56f756e1 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -790,8 +790,9 @@ godoc
      syscall

      - Uses of _getdirentries64 have been removed from Darwin builds, to allow binaries - built with 1.12 to be uploaded to the macOS App Store. + Uses of _getdirentries64 have been removed from + Darwin builds, to allow Go binaries to be uploaded to the macOS + App Store.

      From f93234ad620cc34573bca56be9fcf55c975e0821 Mon Sep 17 00:00:00 2001 From: Joe Tsai Date: Tue, 16 Jul 2019 17:40:20 -0700 Subject: [PATCH 120/255] net/http/httputil: fix regression in ReverseProxy.ServeHTTP In Go1.12 and below, the logic in ReverseProxy.ServeHTTP would always allocate request.Header even if it were not present in the incoming request. CL 174324 added http.Request.Clone and re-factors ReverseProxy.ServeHTTP to use the new Clone method. However, the new Clone logic is not equivalent to the former logic. We preserve former semantics by explicitly allocating the Header map if nil. Fixes #33142 Change-Id: I356f94a915dd9779584ce3fe31e56e5474b9ad37 Reviewed-on: https://go-review.googlesource.com/c/go/+/186437 Run-TryBot: Joe Tsai TryBot-Result: Gobot Gobot Reviewed-by: Andrew Bonventre --- src/net/http/httputil/reverseproxy.go | 3 +++ src/net/http/httputil/reverseproxy_test.go | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/net/http/httputil/reverseproxy.go b/src/net/http/httputil/reverseproxy.go index 1d7b0efa11..e8f7df29a1 100644 --- a/src/net/http/httputil/reverseproxy.go +++ b/src/net/http/httputil/reverseproxy.go @@ -199,6 +199,9 @@ func (p *ReverseProxy) ServeHTTP(rw http.ResponseWriter, req *http.Request) { if req.ContentLength == 0 { outreq.Body = nil // Issue 16036: nil Body for http.Transport retries } + if outreq.Header == nil { + outreq.Header = make(http.Header) // Issue 33142: historical behavior was to always allocate + } p.Director(outreq) outreq.Close = false diff --git a/src/net/http/httputil/reverseproxy_test.go b/src/net/http/httputil/reverseproxy_test.go index e8cb814938..7f9dc0800f 100644 --- a/src/net/http/httputil/reverseproxy_test.go +++ b/src/net/http/httputil/reverseproxy_test.go @@ -659,6 +659,26 @@ func TestReverseProxy_NilBody(t *testing.T) { } } +// Issue 33142: always allocate the request headers +func TestReverseProxy_AllocatedHeader(t *testing.T) { + proxyHandler := new(ReverseProxy) + proxyHandler.ErrorLog = log.New(ioutil.Discard, "", 0) // quiet for tests + proxyHandler.Director = func(*http.Request) {} // noop + proxyHandler.Transport = RoundTripperFunc(func(req *http.Request) (*http.Response, error) { + if req.Header == nil { + t.Error("Header == nil; want a non-nil Header") + } + return nil, errors.New("done testing the interesting part; so force a 502 Gateway error") + }) + + proxyHandler.ServeHTTP(httptest.NewRecorder(), &http.Request{ + Method: "GET", + URL: &url.URL{Scheme: "http", Host: "fake.tld", Path: "/"}, + Proto: "HTTP/1.0", + ProtoMajor: 1, + }) +} + // Issue 14237. Test ModifyResponse and that an error from it // causes the proxy to return StatusBadGateway, or StatusOK otherwise. func TestReverseProxyModifyResponse(t *testing.T) { From 4814e7d59191e17b2d27c723220512db32374301 Mon Sep 17 00:00:00 2001 From: Jay Conrod Date: Mon, 15 Jul 2019 11:33:26 -0400 Subject: [PATCH 121/255] cmd/go: include GOEXPERIMENT flags in tool id for cache key The go command invokes each tool with -V=full to discover its version to compute a tool id. For release versions (that don't include the word "devel"), the go command only used the third word in the output (e.g., "go1.13"), ignoring any toolchain experiments that followed. With this change, the go command will use whole version line in the tool id for release versions. Also, when -V=full is set and there are non-default experiments, experiments are no longer printed twice. Fixes #33091 Change-Id: I19b96f939c7e2fbc5d8befe3659156ee4b58daef Reviewed-on: https://go-review.googlesource.com/c/go/+/186200 Run-TryBot: Jay Conrod TryBot-Result: Gobot Gobot Reviewed-by: Bryan C. Mills --- misc/reboot/experiment_toolid_test.go | 101 ++++++++++++++++++++++++++ src/cmd/go/internal/work/buildid.go | 5 +- src/cmd/internal/objabi/flag.go | 10 +-- 3 files changed, 108 insertions(+), 8 deletions(-) create mode 100644 misc/reboot/experiment_toolid_test.go diff --git a/misc/reboot/experiment_toolid_test.go b/misc/reboot/experiment_toolid_test.go new file mode 100644 index 0000000000..eabf06b19e --- /dev/null +++ b/misc/reboot/experiment_toolid_test.go @@ -0,0 +1,101 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build explicit + +// Package experiment_toolid_test verifies that GOEXPERIMENT settings built +// into the toolchain influence tool ids in the Go command. +// This test requires bootstrapping the toolchain twice, so it's very expensive. +// It must be run explicitly with -tags=explicit. +// Verifies golang.org/issue/33091. +package reboot_test + +import ( + "bytes" + "io/ioutil" + "os" + "os/exec" + "path/filepath" + "runtime" + "testing" +) + +func TestExperimentToolID(t *testing.T) { + // Set up GOROOT + goroot, err := ioutil.TempDir("", "experiment-goroot") + if err != nil { + t.Fatal(err) + } + defer os.RemoveAll(goroot) + + gorootSrc := filepath.Join(goroot, "src") + if err := overlayDir(gorootSrc, filepath.Join(runtime.GOROOT(), "src")); err != nil { + t.Fatal(err) + } + + if err := ioutil.WriteFile(filepath.Join(goroot, "VERSION"), []byte("go1.999"), 0666); err != nil { + t.Fatal(err) + } + env := append(os.Environ(), "GOROOT=", "GOROOT_BOOTSTRAP="+runtime.GOROOT()) + + // Use a clean cache. + gocache, err := ioutil.TempDir("", "experiment-gocache") + if err != nil { + t.Fatal(err) + } + defer os.RemoveAll(gocache) + env = append(env, "GOCACHE="+gocache) + + // Build the toolchain without GOEXPERIMENT. + var makeScript string + switch runtime.GOOS { + case "windows": + makeScript = "make.bat" + case "plan9": + makeScript = "make.rc" + default: + makeScript = "make.bash" + } + makeScriptPath := filepath.Join(runtime.GOROOT(), "src", makeScript) + runCmd(t, gorootSrc, env, makeScriptPath) + + // Verify compiler version string. + goCmdPath := filepath.Join(goroot, "bin", "go") + if runtime.GOOS == "windows" { + goCmdPath += ".exe" + } + gotVersion := bytes.TrimSpace(runCmd(t, gorootSrc, env, goCmdPath, "tool", "compile", "-V=full")) + wantVersion := []byte(`compile version go1.999`) + if !bytes.Equal(gotVersion, wantVersion) { + t.Errorf("compile version without experiment: got %q, want %q", gotVersion, wantVersion) + } + + // Build a package in a mode not handled by the make script. + runCmd(t, gorootSrc, env, goCmdPath, "build", "-race", "archive/tar") + + // Rebuild the toolchain with GOEXPERIMENT. + env = append(env, "GOEXPERIMENT=fieldtrack") + runCmd(t, gorootSrc, env, makeScriptPath) + + // Verify compiler version string. + gotVersion = bytes.TrimSpace(runCmd(t, gorootSrc, env, goCmdPath, "tool", "compile", "-V=full")) + wantVersion = []byte(`compile version go1.999 X:fieldtrack,framepointer`) + if !bytes.Equal(gotVersion, wantVersion) { + t.Errorf("compile version with experiment: got %q, want %q", gotVersion, wantVersion) + } + + // Build the same package. We should not get a cache conflict. + runCmd(t, gorootSrc, env, goCmdPath, "build", "-race", "archive/tar") +} + +func runCmd(t *testing.T, dir string, env []string, path string, args ...string) []byte { + cmd := exec.Command(path, args...) + cmd.Dir = dir + cmd.Env = env + out, err := cmd.Output() + if err != nil { + t.Fatal(err) + } + return out +} diff --git a/src/cmd/go/internal/work/buildid.go b/src/cmd/go/internal/work/buildid.go index 1f6d1e8e77..bf485d75ad 100644 --- a/src/cmd/go/internal/work/buildid.go +++ b/src/cmd/go/internal/work/buildid.go @@ -203,8 +203,9 @@ func (b *Builder) toolID(name string) string { // On the development branch, use the content ID part of the build ID. id = contentID(f[len(f)-1]) } else { - // For a release, the output is like: "compile version go1.9.1". Use the whole line. - id = f[2] + // For a release, the output is like: "compile version go1.9.1 X:framepointer". + // Use the whole line. + id = strings.TrimSpace(line) } b.id.Lock() diff --git a/src/cmd/internal/objabi/flag.go b/src/cmd/internal/objabi/flag.go index 90e944656b..79ad2ccf74 100644 --- a/src/cmd/internal/objabi/flag.go +++ b/src/cmd/internal/objabi/flag.go @@ -86,6 +86,10 @@ func (versionFlag) Set(s string) error { name = name[strings.LastIndex(name, `/`)+1:] name = name[strings.LastIndex(name, `\`)+1:] name = strings.TrimSuffix(name, ".exe") + + // If there's an active experiment, include that, + // to distinguish go1.10.2 with an experiment + // from go1.10.2 without an experiment. p := Expstring() if p == DefaultExpstring() { p = "" @@ -101,12 +105,6 @@ func (versionFlag) Set(s string) error { // build ID of the binary, so that if the compiler is changed and // rebuilt, we notice and rebuild all packages. if s == "full" { - // If there's an active experiment, include that, - // to distinguish go1.10.2 with an experiment - // from go1.10.2 without an experiment. - if x := Expstring(); x != "" { - p += " " + x - } if strings.HasPrefix(Version, "devel") { p += " buildID=" + buildID } From 196e67f95bd00681eab56b5da4eea28b0ca53e51 Mon Sep 17 00:00:00 2001 From: Than McIntosh Date: Wed, 17 Jul 2019 21:41:13 -0400 Subject: [PATCH 122/255] test: new testcase for gccgo bug Updates #33020 Change-Id: I82554ef20ea35e0087fd9ecd9548c2dfeacdc617 Reviewed-on: https://go-review.googlesource.com/c/go/+/186697 Run-TryBot: Than McIntosh TryBot-Result: Gobot Gobot Reviewed-by: Cherry Zhang Reviewed-by: Ian Lance Taylor --- test/fixedbugs/issue33020.dir/a.go | 16 ++++++++++++++++ test/fixedbugs/issue33020.dir/b.go | 22 ++++++++++++++++++++++ test/fixedbugs/issue33020.go | 9 +++++++++ 3 files changed, 47 insertions(+) create mode 100644 test/fixedbugs/issue33020.dir/a.go create mode 100644 test/fixedbugs/issue33020.dir/b.go create mode 100644 test/fixedbugs/issue33020.go diff --git a/test/fixedbugs/issue33020.dir/a.go b/test/fixedbugs/issue33020.dir/a.go new file mode 100644 index 0000000000..948f4fdf3b --- /dev/null +++ b/test/fixedbugs/issue33020.dir/a.go @@ -0,0 +1,16 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package a + +var G1 int +var G2 int +var G3 int +var G4 int +var G5 int +var G6 int +var G7 int +var G8 int +var G9 int +var G10 int diff --git a/test/fixedbugs/issue33020.dir/b.go b/test/fixedbugs/issue33020.dir/b.go new file mode 100644 index 0000000000..354ab3ebfe --- /dev/null +++ b/test/fixedbugs/issue33020.dir/b.go @@ -0,0 +1,22 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package b + +import "a" + +var N n + +type n struct{} + +func (r n) M1() int { return a.G1 } +func (r n) M2() int { return a.G2 } +func (r n) M3() int { return a.G3 } +func (r n) M4() int { return a.G4 } +func (r n) M5() int { return a.G5 } +func (r n) M6() int { return a.G6 } +func (r n) M7() int { return a.G7 } +func (r n) M8() int { return a.G8 } +func (r n) M9() int { return a.G9 } +func (r n) M10() int { return a.G10 } diff --git a/test/fixedbugs/issue33020.go b/test/fixedbugs/issue33020.go new file mode 100644 index 0000000000..ccdf187453 --- /dev/null +++ b/test/fixedbugs/issue33020.go @@ -0,0 +1,9 @@ +// compiledir + +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Issue 33020: gccgo undefined behavior with inlinable function + +package ignored From 34778e58b30a3d615502a9f75bb603d6a13e0504 Mon Sep 17 00:00:00 2001 From: Than McIntosh Date: Thu, 18 Jul 2019 08:18:58 -0400 Subject: [PATCH 123/255] test: new testcase for gccgo bug Updates #33158. Change-Id: Id87eb00ddcb104ba8e7a0d2f6cf324a77a84f4a9 Reviewed-on: https://go-review.googlesource.com/c/go/+/186717 Reviewed-by: Ian Lance Taylor Reviewed-by: Cherry Zhang Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot --- test/fixedbugs/issue33158.dir/a.go | 25 +++++++++++++++++++++++++ test/fixedbugs/issue33158.dir/b.go | 11 +++++++++++ test/fixedbugs/issue33158.go | 9 +++++++++ 3 files changed, 45 insertions(+) create mode 100644 test/fixedbugs/issue33158.dir/a.go create mode 100644 test/fixedbugs/issue33158.dir/b.go create mode 100644 test/fixedbugs/issue33158.go diff --git a/test/fixedbugs/issue33158.dir/a.go b/test/fixedbugs/issue33158.dir/a.go new file mode 100644 index 0000000000..28714e0c99 --- /dev/null +++ b/test/fixedbugs/issue33158.dir/a.go @@ -0,0 +1,25 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package a + +var GS string + +func M() string { + if s := getname("Fred"); s != "" { + return s + } + if s := getname("Joe"); s != "" { + return s + } + + return string("Alex") +} + +// getname can be any function returning a string, just has to be non-inlinable. + +//go:noinline +func getname(s string) string { + return s + "foo" +} diff --git a/test/fixedbugs/issue33158.dir/b.go b/test/fixedbugs/issue33158.dir/b.go new file mode 100644 index 0000000000..a16f0da600 --- /dev/null +++ b/test/fixedbugs/issue33158.dir/b.go @@ -0,0 +1,11 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package b + +import "a" + +func B() string { + return a.M() +} diff --git a/test/fixedbugs/issue33158.go b/test/fixedbugs/issue33158.go new file mode 100644 index 0000000000..1bba8f2f76 --- /dev/null +++ b/test/fixedbugs/issue33158.go @@ -0,0 +1,9 @@ +// compiledir + +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Issue 33158: gccgo duplicate def error from importing inlinable function + +package ignored From 5ba15db77f7ba92884b9a2fce21c9938c233967f Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Wed, 17 Jul 2019 17:08:05 -0400 Subject: [PATCH 124/255] cmd/go: suppress errors with '@upgrade' when the latest version is replaced Fixes #33154 Change-Id: I5a249a77843a8bd438006af0fa1d8b4429ee25f4 Reviewed-on: https://go-review.googlesource.com/c/go/+/186617 Run-TryBot: Bryan C. Mills TryBot-Result: Gobot Gobot Reviewed-by: Jay Conrod --- src/cmd/go/internal/modfetch/coderepo.go | 8 +++++++- src/cmd/go/internal/modget/get.go | 19 +++++++++++++++++++ src/cmd/go/internal/modload/query_test.go | 8 ++++---- .../testdata/script/mod_invalid_version.txt | 13 +++++++++++++ 4 files changed, 43 insertions(+), 5 deletions(-) diff --git a/src/cmd/go/internal/modfetch/coderepo.go b/src/cmd/go/internal/modfetch/coderepo.go index 548c6846d2..f15ce67d46 100644 --- a/src/cmd/go/internal/modfetch/coderepo.go +++ b/src/cmd/go/internal/modfetch/coderepo.go @@ -192,7 +192,13 @@ func (r *codeRepo) Stat(rev string) (*RevInfo, error) { codeRev := r.revToRev(rev) info, err := r.code.Stat(codeRev) if err != nil { - return nil, err + return nil, &module.ModuleError{ + Path: r.modPath, + Err: &module.InvalidVersionError{ + Version: rev, + Err: err, + }, + } } return r.convert(info, rev) } diff --git a/src/cmd/go/internal/modget/get.go b/src/cmd/go/internal/modget/get.go index 5e5026bac9..58aa7e3181 100644 --- a/src/cmd/go/internal/modget/get.go +++ b/src/cmd/go/internal/modget/get.go @@ -765,6 +765,16 @@ func getQuery(path, vers string, prevM module.Version, forceModulePath bool) (mo // If the query fails, and the path must be a real module, report the query error. if forceModulePath { + // If the query was "upgrade" or "patch" and the current version has been + // replaced, check to see whether the error was for that same version: + // if so, the version was probably replaced because it is invalid, + // and we should keep that replacement without complaining. + if vers == "upgrade" || vers == "patch" { + var vErr *module.InvalidVersionError + if errors.As(err, &vErr) && vErr.Version == prevM.Version && modload.Replacement(prevM).Path != "" { + return prevM, nil + } + } return module.Version{}, err } } @@ -911,6 +921,15 @@ func (u *upgrader) Upgrade(m module.Version) (module.Version, error) { if err != nil { // Report error but return m, to let version selection continue. // (Reporting the error will fail the command at the next base.ExitIfErrors.) + + // Special case: if the error is for m.Version itself and m.Version has a + // replacement, then keep it and don't report the error: the fact that the + // version is invalid is likely the reason it was replaced to begin with. + var vErr *module.InvalidVersionError + if errors.As(err, &vErr) && vErr.Version == m.Version && modload.Replacement(m).Path != "" { + return m, nil + } + // Special case: if the error is "no matching versions" then don't // even report the error. Because Query does not consider pseudo-versions, // it may happen that we have a pseudo-version but during -u=patch diff --git a/src/cmd/go/internal/modload/query_test.go b/src/cmd/go/internal/modload/query_test.go index 7940882781..b91cbb5a70 100644 --- a/src/cmd/go/internal/modload/query_test.go +++ b/src/cmd/go/internal/modload/query_test.go @@ -100,7 +100,7 @@ var queryTests = []struct { {path: queryRepo, query: ">=v0.0.0", vers: "v0.0.0"}, {path: queryRepo, query: "v0.0.1", vers: "v0.0.1"}, {path: queryRepo, query: "v0.0.1+foo", vers: "v0.0.1"}, - {path: queryRepo, query: "v0.0.99", err: `unknown revision v0.0.99`}, + {path: queryRepo, query: "v0.0.99", err: `vcs-test.golang.org/git/querytest.git@v0.0.99: invalid version: unknown revision v0.0.99`}, {path: queryRepo, query: "v0", vers: "v0.3.0"}, {path: queryRepo, query: "v0.1", vers: "v0.1.2"}, {path: queryRepo, query: "v0.2", err: `no matching versions for query "v0.2"`}, @@ -112,8 +112,8 @@ var queryTests = []struct { // unconditionally). {path: queryRepo, query: "42abcb6df8ee", vers: "v1.9.10-pre2.0.20190513201126-42abcb6df8ee"}, - {path: queryRepo, query: "v1.9.10-pre2+wrongmetadata", err: `unknown revision v1.9.10-pre2+wrongmetadata`}, - {path: queryRepo, query: "v1.9.10-pre2", err: `unknown revision v1.9.10-pre2`}, + {path: queryRepo, query: "v1.9.10-pre2+wrongmetadata", err: `vcs-test.golang.org/git/querytest.git@v1.9.10-pre2+wrongmetadata: invalid version: unknown revision v1.9.10-pre2+wrongmetadata`}, + {path: queryRepo, query: "v1.9.10-pre2", err: `vcs-test.golang.org/git/querytest.git@v1.9.10-pre2: invalid version: unknown revision v1.9.10-pre2`}, {path: queryRepo, query: "latest", vers: "v1.9.9"}, {path: queryRepo, query: "latest", current: "v1.9.10-pre1", vers: "v1.9.9"}, {path: queryRepo, query: "upgrade", vers: "v1.9.9"}, @@ -122,7 +122,7 @@ var queryTests = []struct { {path: queryRepo, query: "upgrade", current: "v0.0.0-20190513201126-42abcb6df8ee", vers: "v0.0.0-20190513201126-42abcb6df8ee"}, {path: queryRepo, query: "upgrade", allow: "NOMATCH", err: `no matching versions for query "upgrade"`}, {path: queryRepo, query: "upgrade", current: "v1.9.9", allow: "NOMATCH", err: `no matching versions for query "upgrade" (current version is v1.9.9)`}, - {path: queryRepo, query: "upgrade", current: "v1.99.99", err: `unknown revision v1.99.99`}, + {path: queryRepo, query: "upgrade", current: "v1.99.99", err: `vcs-test.golang.org/git/querytest.git@v1.99.99: invalid version: unknown revision v1.99.99`}, {path: queryRepo, query: "patch", current: "", vers: "v1.9.9"}, {path: queryRepo, query: "patch", current: "v0.1.0", vers: "v0.1.2"}, {path: queryRepo, query: "patch", current: "v1.9.0", vers: "v1.9.9"}, diff --git a/src/cmd/go/testdata/script/mod_invalid_version.txt b/src/cmd/go/testdata/script/mod_invalid_version.txt index a587b4422f..e6811d9fb7 100644 --- a/src/cmd/go/testdata/script/mod_invalid_version.txt +++ b/src/cmd/go/testdata/script/mod_invalid_version.txt @@ -134,6 +134,19 @@ cd .. go list -m golang.org/x/text stdout 'golang.org/x/text v0.0.0-0.20170915032832-14c0d48ead0c => golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c' +# A 'replace' directive can replace an invalid 'latest' version, and +# should suppress errors for that version in 'go get -u' +cp go.mod.orig go.mod +go mod edit -require golang.org/x/text@v1.999999.0 +go mod edit -replace golang.org/x/text@v1.999999.0=golang.org/x/text@v0.0.0-20170915032832-14c0d48ead0c +cd outside +! go get -d golang.org/x/text@upgrade +stderr 'go get golang.org/x/text@upgrade: golang.org/x/text@v1.999999.0: invalid version: unknown revision v1.999999.0' +cd .. +go get -d golang.org/x/text@upgrade +go list -m golang.org/x/text +stdout 'golang.org/x/text v1.999999.0 => golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c' + # A pseudo-version derived from a non-ancestor tag is invalid. cp go.mod.orig go.mod go mod edit -require golang.org/x/text@v0.2.1-0.20170915032832-14c0d48ead0c From 4a2d3d06873559df2b6933f260dc8f75c54c9771 Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Tue, 11 Dec 2018 17:13:50 -0500 Subject: [PATCH 125/255] cmd/go: in module mode, populate PackagePublic.Root with the module root MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 'go test' uses the Root field to determine the set of files that invalidate test results, and there is no other sensible meaning of “root” for code within a module. Fixes #29111 Change-Id: Icf1be90a26d22665613e42cb968087b63c36e74c Reviewed-on: https://go-review.googlesource.com/c/go/+/154100 Run-TryBot: Bryan C. Mills TryBot-Result: Gobot Gobot Reviewed-by: Jay Conrod --- src/cmd/go/internal/load/pkg.go | 7 +- src/cmd/go/internal/test/test.go | 17 +++- .../go/testdata/script/build_cache_output.txt | 7 +- .../go/testdata/script/mod_test_cached.txt | 77 +++++++++++++++++++ 4 files changed, 100 insertions(+), 8 deletions(-) create mode 100644 src/cmd/go/testdata/script/mod_test_cached.txt diff --git a/src/cmd/go/internal/load/pkg.go b/src/cmd/go/internal/load/pkg.go index 35b0790bc9..4eb4ba690f 100644 --- a/src/cmd/go/internal/load/pkg.go +++ b/src/cmd/go/internal/load/pkg.go @@ -64,7 +64,7 @@ type PackagePublic struct { Doc string `json:",omitempty"` // package documentation string Target string `json:",omitempty"` // installed target for this package (may be executable) Shlib string `json:",omitempty"` // the shared library that contains this package (only set when -linkshared) - Root string `json:",omitempty"` // Go root or Go path dir containing this package + Root string `json:",omitempty"` // Go root, Go path dir, or module root dir containing this package ConflictDir string `json:",omitempty"` // Dir is hidden by this other directory ForTest string `json:",omitempty"` // package is only for use in named test Export string `json:",omitempty"` // file containing export data (set by go list -export) @@ -647,6 +647,11 @@ func loadPackageData(path, parentPath, parentDir, parentRoot string, parentIsStd buildMode = build.ImportComment } data.p, data.err = cfg.BuildContext.ImportDir(r.dir, buildMode) + if data.p.Root == "" && cfg.ModulesEnabled { + if info := ModPackageModuleInfo(path); info != nil { + data.p.Root = info.Dir + } + } } else if r.err != nil { data.p = new(build.Package) data.err = fmt.Errorf("unknown import path %q: %v", r.path, r.err) diff --git a/src/cmd/go/internal/test/test.go b/src/cmd/go/internal/test/test.go index eed2d437c9..cc7c4564e5 100644 --- a/src/cmd/go/internal/test/test.go +++ b/src/cmd/go/internal/test/test.go @@ -1250,6 +1250,15 @@ func (c *runCache) tryCacheWithID(b *work.Builder, a *work.Action, id string) bo return false } + if a.Package.Root == "" { + // Caching does not apply to tests outside of any module, GOPATH, or GOROOT. + if cache.DebugTest { + fmt.Fprintf(os.Stderr, "testcache: caching disabled for package outside of module root, GOPATH, or GOROOT: %s\n", a.Package.ImportPath) + } + c.disableCache = true + return false + } + var cacheArgs []string for _, arg := range testArgs { i := strings.Index(arg, "=") @@ -1437,8 +1446,8 @@ func computeTestInputsID(a *work.Action, testlog []byte) (cache.ActionID, error) if !filepath.IsAbs(name) { name = filepath.Join(pwd, name) } - if !inDir(name, a.Package.Root) { - // Do not recheck files outside the GOPATH or GOROOT root. + if a.Package.Root == "" || !inDir(name, a.Package.Root) { + // Do not recheck files outside the module, GOPATH, or GOROOT root. break } fmt.Fprintf(h, "stat %s %x\n", name, hashStat(name)) @@ -1446,8 +1455,8 @@ func computeTestInputsID(a *work.Action, testlog []byte) (cache.ActionID, error) if !filepath.IsAbs(name) { name = filepath.Join(pwd, name) } - if !inDir(name, a.Package.Root) { - // Do not recheck files outside the GOPATH or GOROOT root. + if a.Package.Root == "" || !inDir(name, a.Package.Root) { + // Do not recheck files outside the module, GOPATH, or GOROOT root. break } fh, err := hashOpen(name) diff --git a/src/cmd/go/testdata/script/build_cache_output.txt b/src/cmd/go/testdata/script/build_cache_output.txt index 89e3ff0f1e..0d94bf61a9 100644 --- a/src/cmd/go/testdata/script/build_cache_output.txt +++ b/src/cmd/go/testdata/script/build_cache_output.txt @@ -1,4 +1,5 @@ env GO111MODULE=off +env GODEBUG=gocachetest=1 [!gc] skip [short] skip # clears cache, rebuilds too much @@ -32,7 +33,7 @@ stderr 'main.go:2.* can inline main' # from compiler stderr '\d+ symbols' # from linker # Running a test should run the compiler, linker, and the test the first time. -go test -v -x -gcflags=-m -ldflags=-v p_test.go +go test -v -x -gcflags=-m -ldflags=-v p stderr 'compile( |\.exe"?)' stderr 'p_test.go:.*can inline Test' # from compile of p_test stderr 'testmain\.go:.*inlin' # from compile of testmain @@ -42,7 +43,7 @@ stderr 'p\.test( |\.exe"?)' stdout 'TEST' # from test # ... but not the second, even though it still prints the compiler, linker, and test output. -go test -v -x -gcflags=-m -ldflags=-v p_test.go +go test -v -x -gcflags=-m -ldflags=-v p ! stderr 'compile( |\.exe"?)' stderr 'p_test.go:.*can inline Test' # from compile of p_test stderr 'testmain\.go:.*inlin' # from compile of testmain @@ -60,7 +61,7 @@ func f(x *int) *int { return x } package main func main() {} --- p_test.go -- +-- p/p_test.go -- package p import "testing" func Test(t *testing.T) {println("TEST")} diff --git a/src/cmd/go/testdata/script/mod_test_cached.txt b/src/cmd/go/testdata/script/mod_test_cached.txt new file mode 100644 index 0000000000..ffd573c02a --- /dev/null +++ b/src/cmd/go/testdata/script/mod_test_cached.txt @@ -0,0 +1,77 @@ +[short] skip + +env GO111MODULE=on +env GOCACHE=$WORK/gocache +env GODEBUG=gocachetest=1 + +# The first run of a test should not be cached. +# The second run should be. +go test -run=WriteTmp . +! stdout '(cached)' +go test -run=WriteTmp . +stdout '(cached)' + +# 'go test' without arguments should never be cached. +go test -run=WriteTmp +! stdout '(cached)' +go test -run=WriteTmp +! stdout '(cached)' + +# We should never cache a test run from command-line files. +go test -run=WriteTmp ./foo_test.go +! stdout '(cached)' +go test -run=WriteTmp ./foo_test.go +! stdout '(cached)' + +[!exec:sleep] stop +# The go command refuses to cache access to files younger than 2s, so sleep that long. +exec sleep 2 + +# Touching a file that the test reads from within its testdata should invalidate the cache. +go test -run=ReadTestdata . +! stdout '(cached)' +go test -run=ReadTestdata . +stdout '(cached)' +cp testdata/bar.txt testdata/foo.txt +go test -run=ReadTestdata . +! stdout '(cached)' + +-- go.mod -- +module golang.org/issue/29111/foo + +-- foo.go -- +package foo + +-- testdata/foo.txt -- +foo +-- testdata/bar.txt -- +bar + +-- foo_test.go -- +package foo_test + +import ( + "io/ioutil" + "os" + "path/filepath" + "testing" +) + +func TestWriteTmp(t *testing.T) { + dir, err := ioutil.TempDir("", "") + if err != nil { + t.Fatal(err) + } + defer os.RemoveAll(dir) + err = ioutil.WriteFile(filepath.Join(dir, "x"), nil, 0666) + if err != nil { + t.Fatal(err) + } +} + +func TestReadTestdata(t *testing.T) { + _, err := ioutil.ReadFile("testdata/foo.txt") + if err != nil { + t.Fatal(err) + } +} From a005f998cd1a364d5d341eb8f185fb6ae5aa62cb Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Wed, 17 Jul 2019 12:53:47 -0400 Subject: [PATCH 126/255] cmd/go/internal/mvs: retain modules required by older versions Fixes #29773 Updates #31248 Change-Id: Ic1923119c8cf3a60c586df1b270c3af0c9095f29 Reviewed-on: https://go-review.googlesource.com/c/go/+/186537 Run-TryBot: Bryan C. Mills TryBot-Result: Gobot Gobot Reviewed-by: Jay Conrod --- src/cmd/go/internal/mvs/mvs.go | 17 ++-- src/cmd/go/internal/mvs/mvs_test.go | 28 +++++-- src/cmd/go/testdata/script/mod_indirect.txt | 81 +++++++++++++++++++ .../go/testdata/script/mod_indirect_main.txt | 65 +++++++++++++++ 4 files changed, 174 insertions(+), 17 deletions(-) create mode 100644 src/cmd/go/testdata/script/mod_indirect.txt create mode 100644 src/cmd/go/testdata/script/mod_indirect_main.txt diff --git a/src/cmd/go/internal/mvs/mvs.go b/src/cmd/go/internal/mvs/mvs.go index 568efbd8b2..f9292a05e8 100644 --- a/src/cmd/go/internal/mvs/mvs.go +++ b/src/cmd/go/internal/mvs/mvs.go @@ -216,8 +216,8 @@ func buildList(target module.Version, reqs Reqs, upgrade func(module.Version) (m } } - // Construct the list by traversing the graph again, replacing older - // modules with required minimum versions. + // The final list is the minimum version of each module found in the graph. + if v := min[target.Path]; v != target.Version { // TODO(jayconrod): there is a special case in modload.mvsReqs.Max // that prevents us from selecting a newer version of a module @@ -228,19 +228,18 @@ func buildList(target module.Version, reqs Reqs, upgrade func(module.Version) (m } list := []module.Version{target} - listed := map[string]bool{target.Path: true} - for i := 0; i < len(list); i++ { - n := modGraph[list[i]] + for path, vers := range min { + if path != target.Path { + list = append(list, module.Version{Path: path, Version: vers}) + } + + n := modGraph[module.Version{Path: path, Version: vers}] required := n.required for _, r := range required { v := min[r.Path] if r.Path != target.Path && reqs.Max(v, r.Version) != v { panic(fmt.Sprintf("mistake: version %q does not satisfy requirement %+v", v, r)) // TODO: Don't panic. } - if !listed[r.Path] { - list = append(list, module.Version{Path: r.Path, Version: v}) - listed[r.Path] = true - } } } diff --git a/src/cmd/go/internal/mvs/mvs_test.go b/src/cmd/go/internal/mvs/mvs_test.go index cab4bb241b..ea27966991 100644 --- a/src/cmd/go/internal/mvs/mvs_test.go +++ b/src/cmd/go/internal/mvs/mvs_test.go @@ -29,7 +29,7 @@ D5: E2 G1: C4 A2: B1 C4 D4 build A: A B1 C2 D4 E2 F1 -upgrade* A: A B1 C4 D5 E2 G1 +upgrade* A: A B1 C4 D5 E2 F1 G1 upgrade A C4: A B1 C4 D4 E2 F1 G1 downgrade A2 D2: A2 C4 D2 @@ -38,7 +38,7 @@ A: B1 C2 B1: D3 C2: B2 B2: -build A: A B2 C2 +build A: A B2 C2 D3 # Cross-dependency between D and E. # No matter how it arises, should get result of merging all build lists via max, @@ -157,7 +157,18 @@ D1: E2 E1: D2 build A: A B C D2 E2 -# Upgrade from B1 to B2 should drop the transitive dep on D. +# golang.org/issue/31248: +# Even though we select X2, the requirement on I1 +# via X1 should be preserved. +name: cross8 +M: A1 B1 +A1: X1 +B1: X2 +X1: I1 +X2: +build M: M A1 B1 I1 X2 + +# Upgrade from B1 to B2 should not drop the transitive dep on D. name: drop A: B1 C1 B1: D1 @@ -165,14 +176,14 @@ B2: C2: D2: build A: A B1 C1 D1 -upgrade* A: A B2 C2 +upgrade* A: A B2 C2 D2 name: simplify A: B1 C1 B1: C2 C1: D1 C2: -build A: A B1 C2 +build A: A B1 C2 D1 name: up1 A: B1 C1 @@ -254,8 +265,9 @@ build A: A B1 upgrade A B2: A B2 upgrade* A: A B3 +# golang.org/issue/29773: # Requirements of older versions of the target -# must not be carried over. +# must be carried over. name: cycle2 A: B1 A1: C1 @@ -265,8 +277,8 @@ B2: A2 C1: A2 C2: D2: -build A: A B1 -upgrade* A: A B2 +build A: A B1 C1 D1 +upgrade* A: A B2 C2 D2 # Requirement minimization. diff --git a/src/cmd/go/testdata/script/mod_indirect.txt b/src/cmd/go/testdata/script/mod_indirect.txt new file mode 100644 index 0000000000..87a3f0b10f --- /dev/null +++ b/src/cmd/go/testdata/script/mod_indirect.txt @@ -0,0 +1,81 @@ +env GO111MODULE=on + +# golang.org/issue/31248: module requirements imposed by dependency versions +# older than the selected version must still be taken into account. + +env GOFLAGS=-mod=readonly + +# Indirect dependencies required via older-than-selected versions must exist in +# the module graph, but do not need to be listed explicitly in the go.mod file +# (since they are implied). +go mod graph +stdout i@v0.1.0 + +# The modules must also appear in the build list, not just the graph. +go list -m all +stdout '^i v0.1.0' + +# The packages provided by those dependencies must resolve. +go list all +stdout '^i$' + +-- go.mod -- +module main + +go 1.13 + +require ( + a v0.0.0 + b v0.0.0 + c v0.0.0 +) + +// Apply replacements so that the test can be self-contained. +// (It's easier to see all of the modules here than to go +// rooting around in testdata/mod.) +replace ( + a => ./a + b => ./b + c => ./c + x v0.1.0 => ./x1 + x v0.2.0 => ./x2 + i => ./i +) +-- main.go -- +package main + +import ( + _ "a" + _ "b" + _ "c" +) + +func main() {} +-- a/go.mod -- +module a +go 1.13 +require x v0.1.0 +-- a/a.go -- +package a +-- b/go.mod -- +module b +go 1.13 +require x v0.2.0 +-- b/b.go -- +package b +-- c/go.mod -- +module c +go 1.13 +-- c/c.go -- +package c +import _ "i" +-- x1/go.mod -- +module x +go1.13 +require i v0.1.0 +-- x2/go.mod -- +module x +go1.13 +-- i/go.mod -- +-- i/i.go -- +package i diff --git a/src/cmd/go/testdata/script/mod_indirect_main.txt b/src/cmd/go/testdata/script/mod_indirect_main.txt new file mode 100644 index 0000000000..eeb93f1913 --- /dev/null +++ b/src/cmd/go/testdata/script/mod_indirect_main.txt @@ -0,0 +1,65 @@ +env GO111MODULE=on + +# Regression test for golang.org/issue/29773: 'go list -m' was not following +# dependencies through older versions of the main module. + +go list -f '{{with .Module}}{{.Path}}{{with .Version}} {{.}}{{end}}{{end}}' all +cmp stdout pkgmods.txt + +go list -m all +cmp stdout mods.txt + +go mod graph +cmp stdout graph.txt + +-- go.mod -- +module golang.org/issue/root + +go 1.12 + +replace ( + golang.org/issue/mirror v0.1.0 => ./mirror-v0.1.0 + golang.org/issue/pkg v0.1.0 => ./pkg-v0.1.0 + golang.org/issue/root v0.1.0 => ./root-v0.1.0 +) + +require golang.org/issue/mirror v0.1.0 + +-- root.go -- +package root + +import _ "golang.org/issue/mirror" + +-- mirror-v0.1.0/go.mod -- +module golang.org/issue/mirror + +require golang.org/issue/root v0.1.0 + +-- mirror-v0.1.0/mirror.go -- +package mirror + +import _ "golang.org/issue/pkg" + +-- pkg-v0.1.0/go.mod -- +module golang.org/issue/pkg + +-- pkg-v0.1.0/pkg.go -- +package pkg + +-- root-v0.1.0/go.mod -- +module golang.org/issue/root + +require golang.org/issue/pkg v0.1.0 + +-- pkgmods.txt -- +golang.org/issue/mirror v0.1.0 +golang.org/issue/pkg v0.1.0 +golang.org/issue/root +-- mods.txt -- +golang.org/issue/root +golang.org/issue/mirror v0.1.0 => ./mirror-v0.1.0 +golang.org/issue/pkg v0.1.0 => ./pkg-v0.1.0 +-- graph.txt -- +golang.org/issue/root golang.org/issue/mirror@v0.1.0 +golang.org/issue/mirror@v0.1.0 golang.org/issue/root@v0.1.0 +golang.org/issue/root@v0.1.0 golang.org/issue/pkg@v0.1.0 From 52fdd624a4087342f529cd7e52c92f44adf2e2bf Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Wed, 17 Jul 2019 14:31:48 -0400 Subject: [PATCH 127/255] cmd/go/internal/mvs: in Req, omit versions implied by older-than-selected versions already in the graph Fixes #31248 Change-Id: Ia54f2098c3b85549681198a487a31e8ce8fc59eb Reviewed-on: https://go-review.googlesource.com/c/go/+/186557 Run-TryBot: Bryan C. Mills TryBot-Result: Gobot Gobot Reviewed-by: Jay Conrod --- src/cmd/go/internal/mvs/mvs.go | 8 +-- src/cmd/go/internal/mvs/mvs_test.go | 8 +++ .../go/testdata/script/mod_indirect_tidy.txt | 60 +++++++++++++++++++ 3 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 src/cmd/go/testdata/script/mod_indirect_tidy.txt diff --git a/src/cmd/go/internal/mvs/mvs.go b/src/cmd/go/internal/mvs/mvs.go index f9292a05e8..4e7a828c24 100644 --- a/src/cmd/go/internal/mvs/mvs.go +++ b/src/cmd/go/internal/mvs/mvs.go @@ -288,12 +288,12 @@ func Req(target module.Version, list []module.Version, base []string, reqs Reqs) } // Walk modules in reverse post-order, only adding those not implied already. - have := map[string]string{} + have := map[module.Version]bool{} walk = func(m module.Version) error { - if v, ok := have[m.Path]; ok && reqs.Max(m.Version, v) == v { + if have[m] { return nil } - have[m.Path] = m.Version + have[m] = true for _, m1 := range reqCache[m] { walk(m1) } @@ -321,7 +321,7 @@ func Req(target module.Version, list []module.Version, base []string, reqs Reqs) // Older version. continue } - if have[m.Path] != m.Version { + if !have[m] { min = append(min, m) walk(m) } diff --git a/src/cmd/go/internal/mvs/mvs_test.go b/src/cmd/go/internal/mvs/mvs_test.go index ea27966991..72d3ea95b7 100644 --- a/src/cmd/go/internal/mvs/mvs_test.go +++ b/src/cmd/go/internal/mvs/mvs_test.go @@ -295,6 +295,14 @@ H1: G1 req A: G1 req A G: G1 req A H: H1 + +name: req3 +M: A1 B1 +A1: X1 +B1: X2 +X1: I1 +X2: +req M: A1 B1 ` func Test(t *testing.T) { diff --git a/src/cmd/go/testdata/script/mod_indirect_tidy.txt b/src/cmd/go/testdata/script/mod_indirect_tidy.txt new file mode 100644 index 0000000000..a12b35c72b --- /dev/null +++ b/src/cmd/go/testdata/script/mod_indirect_tidy.txt @@ -0,0 +1,60 @@ +env GO111MODULE=on + +# golang.org/issue/31248: loading the build list must not add explicit entries +# for indirect dependencies already implied by older-than-selected versions +# already in the build list. + +cp go.mod.orig go.mod +go mod tidy +cmp go.mod go.mod.orig + +cp go.mod.orig go.mod +go list -m all +cmp go.mod go.mod.orig + +-- go.mod.orig -- +module main + +go 1.13 + +require a v0.0.0 + +replace ( + a v0.0.0 => ./a + b v0.0.0 => ./b + i v0.0.0 => ./i + x v0.1.0 => ./x1 + x v0.2.0 => ./x2 +) +-- main.go -- +package main + +import _ "a" + +func main() {} +-- a/go.mod -- +module a +go 1.13 +require ( + x v0.2.0 + b v0.0.0 +) +-- a/a.go -- +package a +-- b/go.mod -- +module b +go 1.13 +require x v0.1.0 +-- x1/go.mod -- +module x +go 1.13 +require ( + b v0.0.0 + i v0.0.0 +) +-- x2/go.mod -- +module x +go 1.13 +-- i/go.mod -- +module i +go 1.13 From ba3149612f62c011765876d7a437095fa50e0771 Mon Sep 17 00:00:00 2001 From: Allen Li Date: Thu, 11 Jul 2019 00:57:57 +0000 Subject: [PATCH 128/255] time: clarify when draining a Timer's channel is needed Updates #27169 Change-Id: I22a6194c06529ba70b1ec648e3188c191224e321 GitHub-Last-Rev: 457b2a61a8ee4a745371c87756e5b6f38058af28 GitHub-Pull-Request: golang/go#32996 Reviewed-on: https://go-review.googlesource.com/c/go/+/185245 Reviewed-by: Rob Pike --- src/time/sleep.go | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/time/sleep.go b/src/time/sleep.go index 10edf6fe0e..2cc908da55 100644 --- a/src/time/sleep.go +++ b/src/time/sleep.go @@ -54,8 +54,8 @@ type Timer struct { // Stop does not close the channel, to prevent a read from the channel succeeding // incorrectly. // -// To prevent a timer created with NewTimer from firing after a call to Stop, -// check the return value and drain the channel. +// To ensure the channel is empty after a call to Stop, check the +// return value and drain the channel. // For example, assuming the program has not received from t.C already: // // if !t.Stop() { @@ -97,10 +97,9 @@ func NewTimer(d Duration) *Timer { // It returns true if the timer had been active, false if the timer had // expired or been stopped. // -// Resetting a timer must take care not to race with the send into t.C -// that happens when the current timer expires. +// Reset should be invoked only on stopped or expired timers with drained channels. // If a program has already received a value from t.C, the timer is known -// to have expired, and t.Reset can be used directly. +// to have expired and the channel drained, so t.Reset can be used directly. // If a program has not yet received a value from t.C, however, // the timer must be stopped and—if Stop reports that the timer expired // before being stopped—the channel explicitly drained: From 5b15510d96b00662327fbd3eb860d767834dfadc Mon Sep 17 00:00:00 2001 From: Austin Clements Date: Thu, 18 Jul 2019 12:30:37 -0400 Subject: [PATCH 129/255] runtime: align allocations harder in GODEBUG=sbrk=1 mode Currently, GODEBUG=sbrk=1 mode aligns allocations by their type's alignment. You would think this would be the right thing to do, but because 64-bit fields are only 4-byte aligned right now (see #599), this can cause a 64-bit field of an allocated object to be 4-byte aligned, but not 8-byte aligned. If there is an atomic access to that unaligned 64-bit field, it will crash. This doesn't happen in normal allocation mode because the size-segregated allocation and the current size classes will cause any types larger than 8 bytes to be 8 byte aligned. We fix this by making sbrk=1 mode use alignment based on the type's size rather than its declared alignment. This matches how the tiny allocator aligns allocations. This was tested with GOARCH=386 GODEBUG=sbrk=1 go test sync/atomic This crashes with an unaligned access before this change, and passes with this change. This should be reverted when/if we fix #599. Fixes #33159. Change-Id: Ifc52c72c6b99c5d370476685271baa43ad907565 Reviewed-on: https://go-review.googlesource.com/c/go/+/186919 Run-TryBot: Austin Clements Reviewed-by: Keith Randall TryBot-Result: Gobot Gobot --- src/runtime/malloc.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/runtime/malloc.go b/src/runtime/malloc.go index 98c028944f..8ad7035d94 100644 --- a/src/runtime/malloc.go +++ b/src/runtime/malloc.go @@ -866,7 +866,22 @@ func mallocgc(size uintptr, typ *_type, needzero bool) unsafe.Pointer { if debug.sbrk != 0 { align := uintptr(16) if typ != nil { - align = uintptr(typ.align) + // TODO(austin): This should be just + // align = uintptr(typ.align) + // but that's only 4 on 32-bit platforms, + // even if there's a uint64 field in typ (see #599). + // This causes 64-bit atomic accesses to panic. + // Hence, we use stricter alignment that matches + // the normal allocator better. + if size&7 == 0 { + align = 8 + } else if size&3 == 0 { + align = 4 + } else if size&1 == 0 { + align = 2 + } else { + align = 1 + } } return persistentalloc(size, align, &memstats.other_sys) } From f518a96e009157c51f8ecf619032bbb7873228f9 Mon Sep 17 00:00:00 2001 From: Jay Conrod Date: Wed, 17 Jul 2019 18:55:18 -0400 Subject: [PATCH 130/255] cmd/go: document go get @upgrade behavior in release notes Fixes #33149 Change-Id: If9ff24fea6d087b4047a9f6e50f99f449f9b1c52 Reviewed-on: https://go-review.googlesource.com/c/go/+/186618 Run-TryBot: Jay Conrod TryBot-Result: Gobot Gobot Reviewed-by: Bryan C. Mills --- doc/go1.13.html | 11 +++++++++++ src/cmd/go/alldocs.go | 11 +++++++---- src/cmd/go/internal/modget/get.go | 11 +++++++---- 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/doc/go1.13.html b/doc/go1.13.html index 2b56f756e1..11190a1611 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -282,6 +282,17 @@ go env -w GOSUMDB=off major and minor versions as the version found in the build list.

      +

      + If a module passed as an argument to go get + without a version suffix is already required at a newer version than the + latest released version, it will remain at the newer version. This is + consistent with the behavior of the -u flag for module + dependencies. This prevents unexpected downgrades from pre-release versions. + The new version suffix @upgrade explicitly requests this + behavior. @latest explicitly requests the latest version + regardless of the current version. +

      +

      Version validation

      diff --git a/src/cmd/go/alldocs.go b/src/cmd/go/alldocs.go index 7999024ce2..42b02c8171 100644 --- a/src/cmd/go/alldocs.go +++ b/src/cmd/go/alldocs.go @@ -566,11 +566,14 @@ // The first step is to resolve which dependencies to add. // // For each named package or package pattern, get must decide which version of -// the corresponding module to use. By default, get chooses the latest tagged +// the corresponding module to use. By default, get looks up the latest tagged // release version, such as v0.4.5 or v1.2.3. If there are no tagged release -// versions, get chooses the latest tagged pre-release version, such as -// v0.0.1-pre1. If there are no tagged versions at all, get chooses the latest -// known commit. +// versions, get looks up the latest tagged pre-release version, such as +// v0.0.1-pre1. If there are no tagged versions at all, get looks up the latest +// known commit. If the module is not already required at a later version +// (for example, a pre-release newer than the latest release), get will use +// the version it looked up. Otherwise, get will use the currently +// required version. // // This default version selection can be overridden by adding an @version // suffix to the package argument, as in 'go get golang.org/x/text@v0.3.0'. diff --git a/src/cmd/go/internal/modget/get.go b/src/cmd/go/internal/modget/get.go index 58aa7e3181..84b1ac1b01 100644 --- a/src/cmd/go/internal/modget/get.go +++ b/src/cmd/go/internal/modget/get.go @@ -39,11 +39,14 @@ and then builds and installs them. The first step is to resolve which dependencies to add. For each named package or package pattern, get must decide which version of -the corresponding module to use. By default, get chooses the latest tagged +the corresponding module to use. By default, get looks up the latest tagged release version, such as v0.4.5 or v1.2.3. If there are no tagged release -versions, get chooses the latest tagged pre-release version, such as -v0.0.1-pre1. If there are no tagged versions at all, get chooses the latest -known commit. +versions, get looks up the latest tagged pre-release version, such as +v0.0.1-pre1. If there are no tagged versions at all, get looks up the latest +known commit. If the module is not already required at a later version +(for example, a pre-release newer than the latest release), get will use +the version it looked up. Otherwise, get will use the currently +required version. This default version selection can be overridden by adding an @version suffix to the package argument, as in 'go get golang.org/x/text@v0.3.0'. From 5e21032b3d179a8bc0d9e70e4725629defad9d8b Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Thu, 18 Jul 2019 17:34:59 -0400 Subject: [PATCH 131/255] Revert "cmd/go: move automatic testing.Init call into generated test code" This reverts CL 176098. Reason for revert: added complexity, but did not completely fix the underlying problem. A complete solution would not be worth the complexity, and as a partial solution this is probably not worth the complexity either. Updates #31859 Change-Id: Ifd34c292fd1b811c60afe3c339e5edd3f37190c8 Reviewed-on: https://go-review.googlesource.com/c/go/+/186817 Run-TryBot: Bryan C. Mills TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor Reviewed-by: Caleb Spare --- src/cmd/go/go_test.go | 6 ++ src/cmd/go/internal/list/list.go | 2 +- src/cmd/go/internal/load/pkg.go | 3 +- src/cmd/go/internal/load/test.go | 43 +--------- src/cmd/go/internal/test/test.go | 2 +- src/cmd/go/internal/work/exec.go | 9 -- src/cmd/go/testdata/flag_test.go | 9 +- src/cmd/go/testdata/script/test_init.txt | 86 ------------------- .../testdata/standalone_testmain_flag_test.go | 29 +++++++ src/testing/testing.go | 5 -- 10 files changed, 44 insertions(+), 150 deletions(-) delete mode 100644 src/cmd/go/testdata/script/test_init.txt create mode 100644 src/cmd/go/testdata/standalone_testmain_flag_test.go diff --git a/src/cmd/go/go_test.go b/src/cmd/go/go_test.go index e07f97d068..f6caa01fd2 100644 --- a/src/cmd/go/go_test.go +++ b/src/cmd/go/go_test.go @@ -3176,6 +3176,12 @@ func TestGoTestFooTestWorks(t *testing.T) { tg.run("test", "testdata/standalone_test.go") } +func TestGoTestTestMainSeesTestingFlags(t *testing.T) { + tg := testgo(t) + defer tg.cleanup() + tg.run("test", "testdata/standalone_testmain_flag_test.go") +} + // Issue 22388 func TestGoTestMainWithWrongSignature(t *testing.T) { tg := testgo(t) diff --git a/src/cmd/go/internal/list/list.go b/src/cmd/go/internal/list/list.go index e7e78e7c59..4a6633d9a1 100644 --- a/src/cmd/go/internal/list/list.go +++ b/src/cmd/go/internal/list/list.go @@ -459,7 +459,7 @@ func runList(cmd *base.Command, args []string) { } if pmain != nil { pkgs = append(pkgs, pmain) - data := pmain.Internal.TestmainGo + data := *pmain.Internal.TestmainGo h := cache.NewHash("testmain") h.Write([]byte("testmain\n")) h.Write(data) diff --git a/src/cmd/go/internal/load/pkg.go b/src/cmd/go/internal/load/pkg.go index 4eb4ba690f..d52df046ff 100644 --- a/src/cmd/go/internal/load/pkg.go +++ b/src/cmd/go/internal/load/pkg.go @@ -177,8 +177,7 @@ type PackageInternal struct { OmitDebug bool // tell linker not to write debug information GobinSubdir bool // install target would be subdir of GOBIN BuildInfo string // add this info to package main - TestinginitGo []byte // content for _testinginit.go - TestmainGo []byte // content for _testmain.go + TestmainGo *[]byte // content for _testmain.go Asmflags []string // -asmflags for this package Gcflags []string // -gcflags for this package diff --git a/src/cmd/go/internal/load/test.go b/src/cmd/go/internal/load/test.go index c247d56c81..afff5deaaa 100644 --- a/src/cmd/go/internal/load/test.go +++ b/src/cmd/go/internal/load/test.go @@ -102,7 +102,6 @@ func TestPackagesAndErrors(p *Package, cover *TestCover) (pmain, ptest, pxtest * var stk ImportStack stk.Push(p.ImportPath + " (test)") rawTestImports := str.StringList(p.TestImports) - var ptestImportsTesting, pxtestImportsTesting bool for i, path := range p.TestImports { p1 := loadImport(pre, path, p.Dir, p, &stk, p.Internal.Build.TestImportPos[path], ResolveImport) if str.Contains(p1.Deps, p.ImportPath) || p1.ImportPath == p.ImportPath { @@ -117,9 +116,6 @@ func TestPackagesAndErrors(p *Package, cover *TestCover) (pmain, ptest, pxtest * } p.TestImports[i] = p1.ImportPath imports = append(imports, p1) - if path == "testing" { - ptestImportsTesting = true - } } stk.Pop() stk.Push(p.ImportPath + "_test") @@ -133,9 +129,6 @@ func TestPackagesAndErrors(p *Package, cover *TestCover) (pmain, ptest, pxtest * ximports = append(ximports, p1) } p.XTestImports[i] = p1.ImportPath - if path == "testing" { - pxtestImportsTesting = true - } } stk.Pop() @@ -145,9 +138,6 @@ func TestPackagesAndErrors(p *Package, cover *TestCover) (pmain, ptest, pxtest * *ptest = *p ptest.Error = ptestErr ptest.ForTest = p.ImportPath - if ptestImportsTesting { - ptest.Internal.TestinginitGo = formatTestinginit(p) - } ptest.GoFiles = nil ptest.GoFiles = append(ptest.GoFiles, p.GoFiles...) ptest.GoFiles = append(ptest.GoFiles, p.TestGoFiles...) @@ -212,9 +202,6 @@ func TestPackagesAndErrors(p *Package, cover *TestCover) (pmain, ptest, pxtest * Gccgoflags: p.Internal.Gccgoflags, }, } - if pxtestImportsTesting { - pxtest.Internal.TestinginitGo = formatTestinginit(pxtest) - } if pxtestNeedsPtest { pxtest.Internal.Imports = append(pxtest.Internal.Imports, ptest) } @@ -337,7 +324,9 @@ func TestPackagesAndErrors(p *Package, cover *TestCover) (pmain, ptest, pxtest * if err != nil && pmain.Error == nil { pmain.Error = &PackageError{Err: err.Error()} } - pmain.Internal.TestmainGo = data + if data != nil { + pmain.Internal.TestmainGo = &data + } return pmain, ptest, pxtest } @@ -485,15 +474,6 @@ func loadTestFuncs(ptest *Package) (*testFuncs, error) { return t, err } -// formatTestinginit returns the content of the _testinginit.go file for p. -func formatTestinginit(p *Package) []byte { - var buf bytes.Buffer - if err := testinginitTmpl.Execute(&buf, p); err != nil { - panic("testinginit template execution failed") // shouldn't be possible - } - return buf.Bytes() -} - // formatTestmain returns the content of the _testmain.go file for t. func formatTestmain(t *testFuncs) ([]byte, error) { var buf bytes.Buffer @@ -623,23 +603,6 @@ func checkTestFunc(fn *ast.FuncDecl, arg string) error { return nil } -var testinginitTmpl = lazytemplate.New("init", ` -package {{.Name}} - -import _go_testing "testing" - -{{/* -Call testing.Init before any other user initialization code runs. -(This file is passed to the compiler first.) -This provides the illusion of the old behavior where testing flags -were registered as part of the testing package's initialization. -*/}} -var _ = func() bool { - _go_testing.Init() - return true -}() -`) - var testmainTmpl = lazytemplate.New("main", ` // Code generated by 'go test'. DO NOT EDIT. diff --git a/src/cmd/go/internal/test/test.go b/src/cmd/go/internal/test/test.go index cc7c4564e5..95000011d8 100644 --- a/src/cmd/go/internal/test/test.go +++ b/src/cmd/go/internal/test/test.go @@ -843,7 +843,7 @@ func builderTest(b *work.Builder, p *load.Package) (buildAction, runAction, prin if !cfg.BuildN { // writeTestmain writes _testmain.go, // using the test description gathered in t. - if err := ioutil.WriteFile(testDir+"_testmain.go", pmain.Internal.TestmainGo, 0666); err != nil { + if err := ioutil.WriteFile(testDir+"_testmain.go", *pmain.Internal.TestmainGo, 0666); err != nil { return nil, nil, nil, err } } diff --git a/src/cmd/go/internal/work/exec.go b/src/cmd/go/internal/work/exec.go index c1bb9416cb..944b23f1d8 100644 --- a/src/cmd/go/internal/work/exec.go +++ b/src/cmd/go/internal/work/exec.go @@ -542,15 +542,6 @@ func (b *Builder) build(a *Action) (err error) { } } - // Write out the _testinginit.go file for any test packages that import "testing". - if a.Package.Internal.TestinginitGo != nil { - initfile := objdir + "_testinginit.go" - if err := b.writeFile(initfile, a.Package.Internal.TestinginitGo); err != nil { - return err - } - gofiles = append([]string{initfile}, gofiles...) - } - // Run cgo. if a.Package.UsesCgo() || a.Package.UsesSwig() { // In a package using cgo, cgo compiles the C, C++ and assembly files with gcc. diff --git a/src/cmd/go/testdata/flag_test.go b/src/cmd/go/testdata/flag_test.go index a4e5507f2c..ddf613d870 100644 --- a/src/cmd/go/testdata/flag_test.go +++ b/src/cmd/go/testdata/flag_test.go @@ -1,19 +1,16 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - package flag_test import ( "flag" + "log" "testing" ) var v = flag.Int("v", 0, "v flag") -// Run this as go test pkg -args -v=7 +// Run this as go test pkg -v=7 func TestVFlagIsSet(t *testing.T) { if *v != 7 { - t.Fatal("v flag not set") + log.Fatal("v flag not set") } } diff --git a/src/cmd/go/testdata/script/test_init.txt b/src/cmd/go/testdata/script/test_init.txt deleted file mode 100644 index 73b4f3c768..0000000000 --- a/src/cmd/go/testdata/script/test_init.txt +++ /dev/null @@ -1,86 +0,0 @@ -# Tests for automatic testing.Init calls when using 'go test'. - -env GO111MODULE=on - -# A TestMain should be able to access testing flags if it calls flag.Parse -# without needing to use testing.Init. -# Test code can use the name 'testing' without colliding with generated -# testinginit code. -# Tests running under 'go test' should observe that testing.Init is called -# before any user package initialization code runs. -go test -stdout TestMain -stdout TestInit -stdout TestExt - --- go.mod -- -module m - --- init_test.go -- -package testinitflag - -import ( - "flag" - "fmt" - "os" - Testing "testing" -) - -func testFlagsInitialized() bool { - found := false - flag.VisitAll(func(f *flag.Flag) { - if f.Name == "test.count" { - found = true - } - }) - return found -} - -var testing int -var testingInitAtInitialization = testFlagsInitialized() - -func TestInit(t *Testing.T) { - if !testingInitAtInitialization { - t.Fatal("testing.Init not called before package initialization") - } - fmt.Printf("TestInit\n") -} - -func TestMain(m *Testing.M) { - fmt.Printf("TestMain\n") - flag.Parse() - if !testFlagsInitialized() { - fmt.Println("testing flags not registered") - os.Exit(1) - } - os.Exit(m.Run()) -} - --- external_test.go -- -package testinitflag_test - -import ( - "flag" - "fmt" - Testing "testing" -) - -func testFlagsInitialized() bool { - found := false - flag.VisitAll(func(f *flag.Flag) { - if f.Name == "test.count" { - found = true - } - }) - return found -} - -var testing int -var testingInitAtInitialization = testFlagsInitialized() - -func TestExt(t *Testing.T) { - fmt.Printf("TestExt\n") - if !testingInitAtInitialization { - t.Fatal("testing.Init not called before package initialization") - } -} diff --git a/src/cmd/go/testdata/standalone_testmain_flag_test.go b/src/cmd/go/testdata/standalone_testmain_flag_test.go new file mode 100644 index 0000000000..a59555bb61 --- /dev/null +++ b/src/cmd/go/testdata/standalone_testmain_flag_test.go @@ -0,0 +1,29 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package standalone_testmain_flag_test + +import ( + "flag" + "fmt" + "os" + "testing" +) + +func TestMain(m *testing.M) { + // A TestMain should be able to access testing flags if it calls + // flag.Parse without needing to use testing.Init. + flag.Parse() + found := false + flag.VisitAll(func(f *flag.Flag) { + if f.Name == "test.count" { + found = true + } + }) + if !found { + fmt.Println("testing flags not registered") + os.Exit(1) + } + os.Exit(m.Run()) +} diff --git a/src/testing/testing.go b/src/testing/testing.go index 339df13f43..6ab9b79196 100644 --- a/src/testing/testing.go +++ b/src/testing/testing.go @@ -1075,11 +1075,6 @@ type testDeps interface { // It is not meant to be called directly and is not subject to the Go 1 compatibility document. // It may change signature from release to release. func MainStart(deps testDeps, tests []InternalTest, benchmarks []InternalBenchmark, examples []InternalExample) *M { - // In most cases, Init has already been called by the testinginit code - // that 'go test' injects into test packages. - // Call it again here to handle cases such as: - // - test packages that don't import "testing" (such as example-only packages) - // - direct use of MainStart (though that isn't well-supported) Init() return &M{ deps: deps, From b9df8df70fde84bd13558011bad6dfbbeb714599 Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Thu, 18 Jul 2019 17:41:45 -0400 Subject: [PATCH 132/255] doc/go1.13: mention the effect of testing.Init on package initialization MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes #31859 Change-Id: I228ed93f9466d1a22f8796964f5d2f056ab9b62f Reviewed-on: https://go-review.googlesource.com/c/go/+/186818 Run-TryBot: Bryan C. Mills TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor Reviewed-by: Caleb Spare Reviewed-by: Daniel Martí --- doc/go1.13.html | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/go1.13.html b/doc/go1.13.html index 11190a1611..9dead688c2 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -841,8 +841,10 @@ godoc

      - Testing flags are now registered in the new Init function. - As a result, testing flags are now only registered when running a test binary. + Testing flags are now registered in the new Init function, + which is invoked by the generated main function for the test. + As a result, testing flags are now only registered when running a test binary, + and packages that call flag.Parse during package initialization may cause tests to fail.

      From 707f3e8c619674444c01b2af4a494732e136dcfd Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Mon, 22 Jul 2019 15:52:37 -0700 Subject: [PATCH 133/255] cmd/go: mention GODEBUG in "go help environment" Change-Id: Id2c07ccba7c514ec3a4bbd493edbc68ae5cd6250 Reviewed-on: https://go-review.googlesource.com/c/go/+/187157 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Rob Pike --- src/cmd/go/alldocs.go | 3 +++ src/cmd/go/internal/help/helpdoc.go | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/cmd/go/alldocs.go b/src/cmd/go/alldocs.go index 42b02c8171..f15ff16abe 100644 --- a/src/cmd/go/alldocs.go +++ b/src/cmd/go/alldocs.go @@ -1575,6 +1575,9 @@ // GOCACHE // The directory where the go command will store cached // information for reuse in future builds. +// GODEBUG +// Enable various debugging facilities. See 'go doc runtime' +// for details. // GOENV // The location of the Go environment configuration file. // Cannot be set using 'go env -w'. diff --git a/src/cmd/go/internal/help/helpdoc.go b/src/cmd/go/internal/help/helpdoc.go index c2b5fb4b83..dfb89d4910 100644 --- a/src/cmd/go/internal/help/helpdoc.go +++ b/src/cmd/go/internal/help/helpdoc.go @@ -493,6 +493,9 @@ General-purpose environment variables: GOCACHE The directory where the go command will store cached information for reuse in future builds. + GODEBUG + Enable various debugging facilities. See 'go doc runtime' + for details. GOENV The location of the Go environment configuration file. Cannot be set using 'go env -w'. From e8c7e639ea6f4e2c66d8b17ca9283dba53667c9d Mon Sep 17 00:00:00 2001 From: Than McIntosh Date: Mon, 22 Jul 2019 09:33:15 -0400 Subject: [PATCH 134/255] test: new testcase for gccgo compiler failure Updates #33219 Change-Id: I1702d4c630bb891fcb8b59e775dd3f1673cd8640 Reviewed-on: https://go-review.googlesource.com/c/go/+/187057 Run-TryBot: Than McIntosh TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- test/fixedbugs/issue33219.dir/a.go | 17 +++++++++++++++++ test/fixedbugs/issue33219.dir/b.go | 25 +++++++++++++++++++++++++ test/fixedbugs/issue33219.dir/c.go | 20 ++++++++++++++++++++ test/fixedbugs/issue33219.go | 9 +++++++++ 4 files changed, 71 insertions(+) create mode 100644 test/fixedbugs/issue33219.dir/a.go create mode 100644 test/fixedbugs/issue33219.dir/b.go create mode 100644 test/fixedbugs/issue33219.dir/c.go create mode 100644 test/fixedbugs/issue33219.go diff --git a/test/fixedbugs/issue33219.dir/a.go b/test/fixedbugs/issue33219.dir/a.go new file mode 100644 index 0000000000..2d96301f9c --- /dev/null +++ b/test/fixedbugs/issue33219.dir/a.go @@ -0,0 +1,17 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package a + +type A interface { + M(i interface{}) interface{} +} + +var a1 A +var a2 A + +func V(p A, k, v interface{}) A { + defer func() { a1, a2 = a2, a1 }() + return a1 +} diff --git a/test/fixedbugs/issue33219.dir/b.go b/test/fixedbugs/issue33219.dir/b.go new file mode 100644 index 0000000000..2a8f518bef --- /dev/null +++ b/test/fixedbugs/issue33219.dir/b.go @@ -0,0 +1,25 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package b + +import "./a" + +type Service uint64 + +var q *Service +var r *Service + +type f struct{} + +var fk f + +func No(s a.A, qq uint8) *Service { + defer func() { q, r = r, q }() + return q +} + +func Yes(s a.A, p *uint64) a.A { + return a.V(s, fk, p) +} diff --git a/test/fixedbugs/issue33219.dir/c.go b/test/fixedbugs/issue33219.dir/c.go new file mode 100644 index 0000000000..ece48d7603 --- /dev/null +++ b/test/fixedbugs/issue33219.dir/c.go @@ -0,0 +1,20 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package c + +import ( + "a" + "b" +) + +type BI interface { + Another(pxp a.A) int32 +} + +//go:noinline +func BRS(sd a.A, xyz int) *b.Service { + x := b.Yes(sd, nil) + return b.No(x, 1) +} diff --git a/test/fixedbugs/issue33219.go b/test/fixedbugs/issue33219.go new file mode 100644 index 0000000000..45edc8ba65 --- /dev/null +++ b/test/fixedbugs/issue33219.go @@ -0,0 +1,9 @@ +// compiledir + +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Issue 33219: gccgo assert in "implements_interface()" + +package ignored From 68e28998d7f094e70cef7ec0bef9fabfa9e17d07 Mon Sep 17 00:00:00 2001 From: Jordi Martin Date: Tue, 23 Jul 2019 18:27:06 +0000 Subject: [PATCH 135/255] cmd/go: keep "go help" in unknown topic suggestion Fixed missing concatenation to build the suggested command. Fixes #33153 Change-Id: I26c02f2966247aa07d1447b8ec1a2203046842dd GitHub-Last-Rev: 9631abf1d0d187cbd94495a2a789e5863b421441 GitHub-Pull-Request: golang/go#33245 Reviewed-on: https://go-review.googlesource.com/c/go/+/187217 Reviewed-by: Bryan C. Mills Run-TryBot: Bryan C. Mills TryBot-Result: Gobot Gobot --- src/cmd/go/internal/help/help.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cmd/go/internal/help/help.go b/src/cmd/go/internal/help/help.go index d373771ab5..edb4a2a23c 100644 --- a/src/cmd/go/internal/help/help.go +++ b/src/cmd/go/internal/help/help.go @@ -63,7 +63,7 @@ Args: // helpSuccess is the help command using as many args as possible that would succeed. helpSuccess := "go help" if i > 0 { - helpSuccess = " " + strings.Join(args[:i], " ") + helpSuccess += " " + strings.Join(args[:i], " ") } fmt.Fprintf(os.Stderr, "go help %s: unknown help topic. Run '%s'.\n", strings.Join(args, " "), helpSuccess) base.SetExitStatus(2) // failed at 'go help cmd' From 919594830f17f25c9e971934d825615463ad8a10 Mon Sep 17 00:00:00 2001 From: Emmanuel T Odeke Date: Wed, 12 Jun 2019 08:19:31 -0700 Subject: [PATCH 136/255] os: document File's concurrent operation resource limits Document that *os.File is subject to resource limits for concurrent operations. We aren't documenting a specific number of concurrent operations because that number is OS/system dependent. This limit comes from: internal/poll/fd_mutex.go where we use 20 bits to count locks. Fixes #32544 Change-Id: I7d305d4aaba5b2dbc6f1ab8c447117fde5e31a66 Reviewed-on: https://go-review.googlesource.com/c/go/+/181841 Reviewed-by: Rob Pike --- src/os/file.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/os/file.go b/src/os/file.go index 96df3fb5e9..c13babe5f7 100644 --- a/src/os/file.go +++ b/src/os/file.go @@ -34,6 +34,10 @@ // } // fmt.Printf("read %d bytes: %q\n", count, data[:count]) // +// Note: The maximum number of concurrent operations on a File may be limited by +// the OS or the system. The number should be high, but exceeding it may degrade +// performance or cause other issues. +// package os import ( From 80f9d32438b85d03ea0310b67411e41619d4066b Mon Sep 17 00:00:00 2001 From: Giovanni Bajo Date: Sat, 27 Jul 2019 11:55:54 -0700 Subject: [PATCH 137/255] doc: mention that GOPATH/bin should be in PATH As noticed while mentoring at Gophercon, a common mistake for beginners is that, after they install git-codereview, it's not found by git because they haven't put GOPATH/bin in their environment. Change-Id: I885cee0f532a4069d1a17ea27365d54965ecca22 Reviewed-on: https://go-review.googlesource.com/c/go/+/187818 Reviewed-by: Katie Hockman --- doc/contribute.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/contribute.html b/doc/contribute.html index 471eeef536..14839a6831 100644 --- a/doc/contribute.html +++ b/doc/contribute.html @@ -238,7 +238,8 @@ $ git codereview help

      -prints help text, not an error. +prints help text, not an error. If it prints an error, make sure that $GOPATH/bin +is in your $PATH.

      From a25c2878c75902585023618f1c60b447afcdd063 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Sat, 27 Jul 2019 14:53:54 -0700 Subject: [PATCH 138/255] doc: use for a few file paths that didn't Spotted while seeing CL 187818 in master. Change-Id: Ic3f42558f6833fc35580b2b2a15f2c5aba5713c0 Reviewed-on: https://go-review.googlesource.com/c/go/+/187822 Reviewed-by: Ian Lance Taylor --- doc/contribute.html | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/contribute.html b/doc/contribute.html index 14839a6831..abb2b9bf77 100644 --- a/doc/contribute.html +++ b/doc/contribute.html @@ -238,15 +238,16 @@ $ git codereview help

      -prints help text, not an error. If it prints an error, make sure that $GOPATH/bin -is in your $PATH. +prints help text, not an error. If it prints an error, make sure that +$GOPATH/bin is in your $PATH.

      On Windows, when using git-bash you must make sure that git-codereview.exe is in your git exec-path. Run git --exec-path to discover the right location then create a -symbolic link or just copy the executable from $GOPATH/bin to this directory. +symbolic link or just copy the executable from $GOPATH/bin to this +directory.

      From c4ca60313ef7fd0b9d2c223889caeb20147309ac Mon Sep 17 00:00:00 2001 From: Dominik Honnef Date: Sun, 28 Jul 2019 16:30:35 +0200 Subject: [PATCH 139/255] all: change some function documentation to be more idiomatic Change-Id: I932de9bb061a8ba3332ef03207983e8b98d6f1e5 Reviewed-on: https://go-review.googlesource.com/c/go/+/187918 Reviewed-by: Brad Fitzpatrick Run-TryBot: Brad Fitzpatrick TryBot-Result: Gobot Gobot --- src/crypto/rsa/rsa.go | 2 +- src/encoding/csv/writer.go | 2 +- src/expvar/expvar.go | 2 +- src/go/types/scope.go | 4 ++-- src/go/types/typestring.go | 2 +- src/net/mail/message.go | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/crypto/rsa/rsa.go b/src/crypto/rsa/rsa.go index ad32d3e3ad..d058949242 100644 --- a/src/crypto/rsa/rsa.go +++ b/src/crypto/rsa/rsa.go @@ -555,7 +555,7 @@ func decryptAndCheck(random io.Reader, priv *PrivateKey, c *big.Int) (m *big.Int } // DecryptOAEP decrypts ciphertext using RSA-OAEP. - +// // OAEP is parameterised by a hash function that is used as a random oracle. // Encryption and decryption of a given message must use the same hash function // and sha256.New() is a reasonable choice. diff --git a/src/encoding/csv/writer.go b/src/encoding/csv/writer.go index b18996a930..3f34bc51db 100644 --- a/src/encoding/csv/writer.go +++ b/src/encoding/csv/writer.go @@ -41,7 +41,7 @@ func NewWriter(w io.Writer) *Writer { } } -// Writer writes a single CSV record to w along with any necessary quoting. +// Write writes a single CSV record to w along with any necessary quoting. // A record is a slice of strings with each string being one field. // Writes are buffered, so Flush must eventually be called to ensure // that the record is written to the underlying io.Writer. diff --git a/src/expvar/expvar.go b/src/expvar/expvar.go index c0dc0532b1..13b5c99b6e 100644 --- a/src/expvar/expvar.go +++ b/src/expvar/expvar.go @@ -205,7 +205,7 @@ func (v *Map) AddFloat(key string, delta float64) { } } -// Deletes the given key from the map. +// Delete deletes the given key from the map. func (v *Map) Delete(key string) { v.keysMu.Lock() defer v.keysMu.Unlock() diff --git a/src/go/types/scope.go b/src/go/types/scope.go index b50ee2fd5f..409b468f20 100644 --- a/src/go/types/scope.go +++ b/src/go/types/scope.go @@ -42,7 +42,7 @@ func NewScope(parent *Scope, pos, end token.Pos, comment string) *Scope { // Parent returns the scope's containing (parent) scope. func (s *Scope) Parent() *Scope { return s.parent } -// Len() returns the number of scope elements. +// Len returns the number of scope elements. func (s *Scope) Len() int { return len(s.elems) } // Names returns the scope's element names in sorted order. @@ -57,7 +57,7 @@ func (s *Scope) Names() []string { return names } -// NumChildren() returns the number of scopes nested in s. +// NumChildren returns the number of scopes nested in s. func (s *Scope) NumChildren() int { return len(s.children) } // Child returns the i'th child scope for 0 <= i < NumChildren(). diff --git a/src/go/types/typestring.go b/src/go/types/typestring.go index 0c007f6cd0..31c572f83b 100644 --- a/src/go/types/typestring.go +++ b/src/go/types/typestring.go @@ -24,7 +24,7 @@ import ( // type Qualifier func(*Package) string -// RelativeTo(pkg) returns a Qualifier that fully qualifies members of +// RelativeTo returns a Qualifier that fully qualifies members of // all packages other than pkg. func RelativeTo(pkg *Package) Qualifier { if pkg == nil { diff --git a/src/net/mail/message.go b/src/net/mail/message.go index e0907806ca..75207db434 100644 --- a/src/net/mail/message.go +++ b/src/net/mail/message.go @@ -148,7 +148,7 @@ type Address struct { Address string // user@domain } -// Parses a single RFC 5322 address, e.g. "Barry Gibbs " +// ParseAddress parses a single RFC 5322 address, e.g. "Barry Gibbs " func ParseAddress(address string) (*Address, error) { return (&addrParser{s: address}).parseSingleAddress() } From 5235501c0509385c28294b3a314891e1e7165163 Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Thu, 20 Jun 2019 15:48:29 -0400 Subject: [PATCH 140/255] crypto/x509: add Ed25519 to ExampleParsePKIXPublicKey ParsePKIXPublicKey gained Ed25519 support in CL 175478. Change-Id: I11ffe0a62743292367b3adb103956e61bad57cc4 Reviewed-on: https://go-review.googlesource.com/c/go/+/183243 Reviewed-by: Katie Hockman --- src/crypto/x509/example_test.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/crypto/x509/example_test.go b/src/crypto/x509/example_test.go index 97c2ea2442..19d249af7a 100644 --- a/src/crypto/x509/example_test.go +++ b/src/crypto/x509/example_test.go @@ -7,6 +7,7 @@ package x509_test import ( "crypto/dsa" "crypto/ecdsa" + "crypto/ed25519" "crypto/rsa" "crypto/x509" "encoding/pem" @@ -128,6 +129,8 @@ AIU+2GKjyT3iMuzZxxFxPFMCAwEAAQ== fmt.Println("pub is of type DSA:", pub) case *ecdsa.PublicKey: fmt.Println("pub is of type ECDSA:", pub) + case ed25519.PublicKey: + fmt.Println("pub is of type Ed25519:", pub) default: panic("unknown type of public key") } From 7b8234b48fb66e9932abfbbaa24307480682e9b9 Mon Sep 17 00:00:00 2001 From: Jonathan Amsterdam Date: Sat, 27 Jul 2019 14:29:02 -0400 Subject: [PATCH 141/255] go1.13.html: release note for %w Also, reorder packages so the list is in alphabetical order. Fixes #32914. Change-Id: Ifa504cb7e48df31ba6dc0e5756148430b59fa139 Reviewed-on: https://go-review.googlesource.com/c/go/+/187797 Reviewed-by: Emmanuel Odeke Reviewed-by: Andrew Bonventre --- doc/go1.13.html | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/doc/go1.13.html b/doc/go1.13.html index 9dead688c2..7298f82889 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -621,14 +621,17 @@ godoc
    -
    html/template
    +
    fmt
    -

    - When using a <script> tag with "module" set as the - type attribute, code will now be interpreted as JavaScript module script. + +

    The Errorf function + has a new verb, %w, whose operand must be an error. + The error returned from Errorf will have an + Unwrap method which returns the operand of %w.

    -
    +
    +
    go/scanner
    @@ -651,6 +654,17 @@ godoc
    + + +
    html/template
    +
    +

    + When using a <script> tag with "module" set as the + type attribute, code will now be interpreted as JavaScript module script. +

    + +
    +
    log

    From 01d137262a713b308c4308ed5b26636895e68d89 Mon Sep 17 00:00:00 2001 From: Keith Randall Date: Mon, 29 Jul 2019 12:51:19 -0700 Subject: [PATCH 142/255] runtime: use uintptr instead of int32 for counting to next heap profile sample Overflow of the comparison caused very large (>=1<<32) allocations to sometimes not get sampled at all. Use uintptr so the comparison will never overflow. Fixes #33342 Tested on the example in 33342. I don't want to check a test in that needs that much memory, however. Change-Id: I51fe77a9117affed8094da93c0bc5f445ac2d3d3 Reviewed-on: https://go-review.googlesource.com/c/go/+/188017 Run-TryBot: Keith Randall TryBot-Result: Gobot Gobot Reviewed-by: Austin Clements --- src/runtime/malloc.go | 12 ++++++------ src/runtime/mcache.go | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/runtime/malloc.go b/src/runtime/malloc.go index 8ad7035d94..5a21e80e18 100644 --- a/src/runtime/malloc.go +++ b/src/runtime/malloc.go @@ -1075,8 +1075,8 @@ func mallocgc(size uintptr, typ *_type, needzero bool) unsafe.Pointer { } if rate := MemProfileRate; rate > 0 { - if rate != 1 && int32(size) < c.next_sample { - c.next_sample -= int32(size) + if rate != 1 && size < c.next_sample { + c.next_sample -= size } else { mp := acquirem() profilealloc(mp, x, size) @@ -1170,7 +1170,7 @@ func profilealloc(mp *m, x unsafe.Pointer, size uintptr) { // processes, the distance between two samples follows the exponential // distribution (exp(MemProfileRate)), so the best return value is a random // number taken from an exponential distribution whose mean is MemProfileRate. -func nextSample() int32 { +func nextSample() uintptr { if GOOS == "plan9" { // Plan 9 doesn't support floating point in note handler. if g := getg(); g == g.m.gsignal { @@ -1178,7 +1178,7 @@ func nextSample() int32 { } } - return fastexprand(MemProfileRate) + return uintptr(fastexprand(MemProfileRate)) } // fastexprand returns a random number from an exponential distribution with @@ -1213,14 +1213,14 @@ func fastexprand(mean int) int32 { // nextSampleNoFP is similar to nextSample, but uses older, // simpler code to avoid floating point. -func nextSampleNoFP() int32 { +func nextSampleNoFP() uintptr { // Set first allocation sample size. rate := MemProfileRate if rate > 0x3fffffff { // make 2*rate not overflow rate = 0x3fffffff } if rate != 0 { - return int32(fastrand() % uint32(2*rate)) + return uintptr(fastrand() % uint32(2*rate)) } return 0 } diff --git a/src/runtime/mcache.go b/src/runtime/mcache.go index 0cb21f7190..d4fa9a012d 100644 --- a/src/runtime/mcache.go +++ b/src/runtime/mcache.go @@ -19,7 +19,7 @@ import ( type mcache struct { // The following members are accessed on every malloc, // so they are grouped here for better caching. - next_sample int32 // trigger heap sample after allocating this many bytes + next_sample uintptr // trigger heap sample after allocating this many bytes local_scan uintptr // bytes of scannable heap allocated // Allocator cache for tiny objects w/o pointers. From fbb819ebc443518e9caea3c1b0d0f9e0efec2262 Mon Sep 17 00:00:00 2001 From: Andrew Todd Date: Sat, 27 Jul 2019 16:20:49 -0700 Subject: [PATCH 143/255] strings: clarify usage of Title and ToTitle This is intended to help clear up confusion around the usage of the Title and ToTitle functions. It includes a link to define title case to distinguish it from upper case. It also includes an additional example for the ToTitle function to showcase the difference in behavior between it and the Title function. Fixes #33302 Change-Id: I44e62962fb04d0d22966a39eda3a2d16de7a2291 Reviewed-on: https://go-review.googlesource.com/c/go/+/187825 Reviewed-by: Rob Pike --- src/strings/example_test.go | 11 ++++++++++- src/strings/strings.go | 7 ++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/strings/example_test.go b/src/strings/example_test.go index 4f3a1ce8c6..375f9cac65 100644 --- a/src/strings/example_test.go +++ b/src/strings/example_test.go @@ -247,14 +247,23 @@ func ExampleSplitAfterN() { } func ExampleTitle() { + // Compare this example to the ToTitle example. fmt.Println(strings.Title("her royal highness")) - // Output: Her Royal Highness + fmt.Println(strings.Title("loud noises")) + fmt.Println(strings.Title("хлеб")) + // Output: + // Her Royal Highness + // Loud Noises + // Хлеб } func ExampleToTitle() { + // Compare this example to the Title example. + fmt.Println(strings.ToTitle("her royal highness")) fmt.Println(strings.ToTitle("loud noises")) fmt.Println(strings.ToTitle("хлеб")) // Output: + // HER ROYAL HIGHNESS // LOUD NOISES // ХЛЕБ } diff --git a/src/strings/strings.go b/src/strings/strings.go index 7337481380..cee315ce9e 100644 --- a/src/strings/strings.go +++ b/src/strings/strings.go @@ -610,7 +610,8 @@ func ToLower(s string) string { return Map(unicode.ToLower, s) } -// ToTitle returns a copy of the string s with all Unicode letters mapped to their title case. +// ToTitle returns a copy of the string s with all Unicode letters mapped to +// their Unicode title case. func ToTitle(s string) string { return Map(unicode.ToTitle, s) } // ToUpperSpecial returns a copy of the string s with all Unicode letters mapped to their @@ -626,7 +627,7 @@ func ToLowerSpecial(c unicode.SpecialCase, s string) string { } // ToTitleSpecial returns a copy of the string s with all Unicode letters mapped to their -// title case, giving priority to the special casing rules. +// Unicode title case, giving priority to the special casing rules. func ToTitleSpecial(c unicode.SpecialCase, s string) string { return Map(c.ToTitle, s) } @@ -707,7 +708,7 @@ func isSeparator(r rune) bool { } // Title returns a copy of the string s with all Unicode letters that begin words -// mapped to their title case. +// mapped to their Unicode title case. // // BUG(rsc): The rule Title uses for word boundaries does not handle Unicode punctuation properly. func Title(s string) string { From a41ebe6e259af020d4ce7029544439b39d07936b Mon Sep 17 00:00:00 2001 From: Michael Anthony Knyszek Date: Tue, 16 Jul 2019 20:36:33 +0000 Subject: [PATCH 144/255] runtime: add physHugePageShift This change adds physHugePageShift which is defined such that 1 << physHugePageShift == physHugePageSize. The purpose of this variable is to avoid doing expensive divisions in key functions, such as (*mspan).hugePages. This change also does a sweep of any place we might do a division or mod operation with physHugePageSize and turns it into bit shifts and other bitwise operations. Finally, this change adds a check to mallocinit which ensures that physHugePageSize is always a power of two. osinit might choose to ignore non-powers-of-two for the value and replace it with zero, but mallocinit will fail if it's not a power of two (or zero). It also derives physHugePageShift from physHugePageSize. This change helps improve the performance of most applications because of how often (*mspan).hugePages is called. Updates #32828. Change-Id: I1a6db113d52d563f59ae8fd4f0e130858859e68f Reviewed-on: https://go-review.googlesource.com/c/go/+/186598 Run-TryBot: Austin Clements TryBot-Result: Gobot Gobot Reviewed-by: Austin Clements --- src/runtime/malloc.go | 24 ++++++++++++++++++++++-- src/runtime/mem_linux.go | 4 ++-- src/runtime/mgcscavenge.go | 8 ++++---- src/runtime/mheap.go | 2 +- 4 files changed, 29 insertions(+), 9 deletions(-) diff --git a/src/runtime/malloc.go b/src/runtime/malloc.go index 5a21e80e18..d768054198 100644 --- a/src/runtime/malloc.go +++ b/src/runtime/malloc.go @@ -325,12 +325,21 @@ const ( var physPageSize uintptr // physHugePageSize is the size in bytes of the OS's default physical huge -// page size whose allocation is opaque to the application. +// page size whose allocation is opaque to the application. It is assumed +// and verified to be a power of two. // // If set, this must be set by the OS init code (typically in osinit) before // mallocinit. However, setting it at all is optional, and leaving the default // value is always safe (though potentially less efficient). -var physHugePageSize uintptr +// +// Since physHugePageSize is always assumed to be a power of two, +// physHugePageShift is defined as physHugePageSize == 1 << physHugePageShift. +// The purpose of physHugePageShift is to avoid doing divisions in +// performance critical functions. +var ( + physHugePageSize uintptr + physHugePageShift uint +) // OS memory management abstraction layer // @@ -432,6 +441,17 @@ func mallocinit() { print("system page size (", physPageSize, ") must be a power of 2\n") throw("bad system page size") } + if physHugePageSize&(physHugePageSize-1) != 0 { + print("system huge page size (", physHugePageSize, ") must be a power of 2\n") + throw("bad system huge page size") + } + if physHugePageSize != 0 { + // Since physHugePageSize is a power of 2, it suffices to increase + // physHugePageShift until 1<= totalWork { - hugePages := totalWork / uint64(physHugePageSize) - hugeWork = hugePages * uint64(physHugePageSize) + hugePages := totalWork >> physHugePageShift + hugeWork = hugePages << physHugePageShift } // Everything that's not huge work is regular work. At this point we // know huge work so we can calculate how much time that will take // based on scavengePageRate (which applies to pages of any size). regularWork = totalWork - hugeWork - hugeTime = hugeWork / uint64(physHugePageSize) * scavengeHugePagePeriod + hugeTime = (hugeWork >> physHugePageShift) * scavengeHugePagePeriod } // Finally, we can compute how much time it'll take to do the regular work // and the total time to do all the work. diff --git a/src/runtime/mheap.go b/src/runtime/mheap.go index af2818a2bd..91ad47bdd0 100644 --- a/src/runtime/mheap.go +++ b/src/runtime/mheap.go @@ -561,7 +561,7 @@ func (s *mspan) hugePages() uintptr { end &^= physHugePageSize - 1 } if start < end { - return (end - start) / physHugePageSize + return (end - start) >> physHugePageShift } return 0 } From 8c3040d768e70fd6cf9f992fe4745edbf51bc581 Mon Sep 17 00:00:00 2001 From: Michael Knyszek Date: Fri, 19 Jul 2019 19:35:24 -0400 Subject: [PATCH 145/255] runtime: call sysHugePage less often Currently when we coalesce memory we make a sysHugePage call (MADV_HUGEPAGE) to ensure freed and coalesced huge pages are treated as such so the scavenger's assumptions about performance are more in line with reality. Unfortunately we do it way too often because we do it if there was any change to the huge page count for the span we're coalescing into, not taking into account that it could coalesce with its neighbors and not actually create a new huge page. This change makes it so that it only calls sysHugePage if the original huge page counts between the span to be coalesced into and its neighbors do not add up (i.e. a new huge page was created due to alignment). Calls to sysHugePage will now happen much less frequently, as intended. Updates #32828. Change-Id: Ia175919cb79b730a658250425f97189e27d7fda3 Reviewed-on: https://go-review.googlesource.com/c/go/+/186926 Run-TryBot: Austin Clements TryBot-Result: Gobot Gobot Reviewed-by: Austin Clements --- src/runtime/mheap.go | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/runtime/mheap.go b/src/runtime/mheap.go index 91ad47bdd0..706603aba4 100644 --- a/src/runtime/mheap.go +++ b/src/runtime/mheap.go @@ -514,11 +514,13 @@ func (h *mheap) coalesce(s *mspan) { h.free.insert(other) } - hpBefore := s.hugePages() + hpMiddle := s.hugePages() // Coalesce with earlier, later spans. + var hpBefore uintptr if before := spanOf(s.base() - 1); before != nil && before.state == mSpanFree { if s.scavenged == before.scavenged { + hpBefore = before.hugePages() merge(before, s, before) } else { realign(before, s, before) @@ -526,23 +528,29 @@ func (h *mheap) coalesce(s *mspan) { } // Now check to see if next (greater addresses) span is free and can be coalesced. + var hpAfter uintptr if after := spanOf(s.base() + s.npages*pageSize); after != nil && after.state == mSpanFree { if s.scavenged == after.scavenged { + hpAfter = after.hugePages() merge(s, after, after) } else { realign(s, after, after) } } - - if !s.scavenged && s.hugePages() > hpBefore { + if !s.scavenged && s.hugePages() > hpBefore+hpMiddle+hpAfter { // If s has grown such that it now may contain more huge pages than it - // did before, then mark the whole region as huge-page-backable. + // and its now-coalesced neighbors did before, then mark the whole region + // as huge-page-backable. // // Otherwise, on systems where we break up huge pages (like Linux) // s may not be backed by huge pages because it could be made up of // pieces which are broken up in the underlying VMA. The primary issue // with this is that it can lead to a poor estimate of the amount of // free memory backed by huge pages for determining the scavenging rate. + // + // TODO(mknyszek): Measure the performance characteristics of sysHugePage + // and determine whether it makes sense to only sysHugePage on the pages + // that matter, or if it's better to just mark the whole region. sysHugePage(unsafe.Pointer(s.base()), s.npages*pageSize) } } From 2fc7574aab072c697d2d020fa48347b0c1b221e7 Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Thu, 25 Jul 2019 20:26:46 -0400 Subject: [PATCH 146/255] cmd/go/internal/cache: avoid ioutil.WriteFile for writing cache entries ioutil.WriteFile always truncates the destination file to 0 before writing, which is inappropriate for unsynchronized, idempotent, fixed-size files such as the cache entry files here. Instead, truncate the file only after writing it, so that a second write will never (even temporarily!) remove the contents of a preceding write. Fixes #29667 Change-Id: I16a53ce79d8a23d23580511cb6abd062f54b65ef Reviewed-on: https://go-review.googlesource.com/c/go/+/188157 Run-TryBot: Bryan C. Mills TryBot-Result: Gobot Gobot Reviewed-by: Jay Conrod --- src/cmd/go/internal/cache/cache.go | 25 ++++++++++- .../script/mod_list_compiled_concurrent.txt | 41 +++++++++++++++++++ 2 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 src/cmd/go/testdata/script/mod_list_compiled_concurrent.txt diff --git a/src/cmd/go/internal/cache/cache.go b/src/cmd/go/internal/cache/cache.go index 116279c977..168ad32b0e 100644 --- a/src/cmd/go/internal/cache/cache.go +++ b/src/cmd/go/internal/cache/cache.go @@ -322,7 +322,7 @@ func (c *Cache) putIndexEntry(id ActionID, out OutputID, size int64, allowVerify // in verify mode we are double-checking that the cache entries // are entirely reproducible. As just noted, this may be unrealistic // in some cases but the check is also useful for shaking out real bugs. - entry := []byte(fmt.Sprintf("v1 %x %x %20d %20d\n", id, out, size, time.Now().UnixNano())) + entry := fmt.Sprintf("v1 %x %x %20d %20d\n", id, out, size, time.Now().UnixNano()) if verify && allowVerify { old, err := c.get(id) if err == nil && (old.OutputID != out || old.Size != size) { @@ -332,7 +332,28 @@ func (c *Cache) putIndexEntry(id ActionID, out OutputID, size int64, allowVerify } } file := c.fileName(id, "a") - if err := ioutil.WriteFile(file, entry, 0666); err != nil { + + // Copy file to cache directory. + mode := os.O_WRONLY | os.O_CREATE + f, err := os.OpenFile(file, mode, 0666) + if err != nil { + return err + } + _, err = f.WriteString(entry) + if err == nil { + // Truncate the file only *after* writing it. + // (This should be a no-op, but truncate just in case of previous corruption.) + // + // This differs from ioutil.WriteFile, which truncates to 0 *before* writing + // via os.O_TRUNC. Truncating only after writing ensures that a second write + // of the same content to the same file is idempotent, and does not — even + // temporarily! — undo the effect of the first write. + err = f.Truncate(int64(len(entry))) + } + if closeErr := f.Close(); err == nil { + err = closeErr + } + if err != nil { // TODO(bcmills): This Remove potentially races with another go command writing to file. // Can we eliminate it? os.Remove(file) diff --git a/src/cmd/go/testdata/script/mod_list_compiled_concurrent.txt b/src/cmd/go/testdata/script/mod_list_compiled_concurrent.txt new file mode 100644 index 0000000000..b08713dcfd --- /dev/null +++ b/src/cmd/go/testdata/script/mod_list_compiled_concurrent.txt @@ -0,0 +1,41 @@ +env GO111MODULE=on + +[short] skip + +# Regression test for golang.org/issue/29667: +# spurious 'failed to cache compiled Go files' errors. +# This test failed reliably when run with -count=10 +# on a Linux workstation. + +env GOCACHE=$WORK/gocache +mkdir $GOCACHE + +go list -json -compiled -test=false -export=false -deps=true -- . & +go list -json -compiled -test=false -export=false -deps=true -- . & +go list -json -compiled -test=false -export=false -deps=true -- . & +go list -json -compiled -test=false -export=false -deps=true -- . & +go list -json -compiled -test=false -export=false -deps=true -- . & +go list -json -compiled -test=false -export=false -deps=true -- . & +go list -json -compiled -test=false -export=false -deps=true -- . & +go list -json -compiled -test=false -export=false -deps=true -- . & +go list -json -compiled -test=false -export=false -deps=true -- . & +go list -json -compiled -test=false -export=false -deps=true -- . & +go list -json -compiled -test=false -export=false -deps=true -- . & +go list -json -compiled -test=false -export=false -deps=true -- . & +go list -json -compiled -test=false -export=false -deps=true -- . & +go list -json -compiled -test=false -export=false -deps=true -- . & +go list -json -compiled -test=false -export=false -deps=true -- . & +go list -json -compiled -test=false -export=false -deps=true -- . & +go list -json -compiled -test=false -export=false -deps=true -- . & +go list -json -compiled -test=false -export=false -deps=true -- . & +go list -json -compiled -test=false -export=false -deps=true -- . & +go list -json -compiled -test=false -export=false -deps=true -- . & + +wait + +-- go.mod -- +module sandbox/bar +-- bar.go -- +package bar + +import "C" From 5f8d8161e66bda5fa9559648f7793e96885c89e3 Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Tue, 30 Jul 2019 14:51:26 -0400 Subject: [PATCH 147/255] cmd/go/internal/cache: verify that timestamp is positive An apparent typo caused us to re-check size instead. Updates #29667 Change-Id: Icc1fb9cef1ba77b8490c8fbe6c343be06ff48d8d Reviewed-on: https://go-review.googlesource.com/c/go/+/188020 Run-TryBot: Bryan C. Mills TryBot-Result: Gobot Gobot Reviewed-by: Jay Conrod --- src/cmd/go/internal/cache/cache.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cmd/go/internal/cache/cache.go b/src/cmd/go/internal/cache/cache.go index 168ad32b0e..a05a08f75f 100644 --- a/src/cmd/go/internal/cache/cache.go +++ b/src/cmd/go/internal/cache/cache.go @@ -173,7 +173,7 @@ func (c *Cache) get(id ActionID) (Entry, error) { i++ } tm, err := strconv.ParseInt(string(etime[i:]), 10, 64) - if err != nil || size < 0 { + if err != nil || tm < 0 { return missing() } From 1ad64fafc889cb17041b03b10f8af30ae534dfeb Mon Sep 17 00:00:00 2001 From: David Ndungu Date: Sat, 27 Jul 2019 13:56:22 -0700 Subject: [PATCH 148/255] net/http: improve Request.Form and Request.PostForm documentation Request.PostForm gets populated with form data for PATCH, POST, or PUT http verbs. Change-Id: I33065aa78a8470c4e9490aac830aa6f5963c61cb Reviewed-on: https://go-review.googlesource.com/c/go/+/187821 Reviewed-by: Emmanuel Odeke --- src/net/http/request.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/net/http/request.go b/src/net/http/request.go index fa63175c20..e53dde16b4 100644 --- a/src/net/http/request.go +++ b/src/net/http/request.go @@ -237,12 +237,12 @@ type Request struct { Host string // Form contains the parsed form data, including both the URL - // field's query parameters and the POST or PUT form data. + // field's query parameters and the PATCH, POST, or PUT form data. // This field is only available after ParseForm is called. // The HTTP client ignores Form and uses Body instead. Form url.Values - // PostForm contains the parsed form data from POST, PATCH, + // PostForm contains the parsed form data from PATCH, POST // or PUT body parameters. // // This field is only available after ParseForm is called. From 39d4178735d6ca90e076b3fc3d7e38f56fd6b945 Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Tue, 30 Jul 2019 16:16:03 -0700 Subject: [PATCH 149/255] spec: add an example of a trivially invalid interface In preparation for the forthcoming spec changes for #6977. While at it, modernize existing File example that dates back all the way to commit 18c5b488a3b. Change-Id: Id10e4df0513e3de15bd58867222923eefa9473ea Reviewed-on: https://go-review.googlesource.com/c/go/+/187978 Reviewed-by: Rob Pike Reviewed-by: Matthew Dempsky Reviewed-by: Ian Lance Taylor --- doc/go_spec.html | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/doc/go_spec.html b/doc/go_spec.html index fb4341be1d..89732fb8f2 100644 --- a/doc/go_spec.html +++ b/doc/go_spec.html @@ -1,6 +1,6 @@ @@ -1257,11 +1257,19 @@ non-blank name.

    -// A simple File interface
    +// A simple File interface.
     interface {
    -	Read(b Buffer) bool
    -	Write(b Buffer) bool
    -	Close()
    +	Read([]byte) (int, error)
    +	Write([]byte) (int, error)
    +	Close() error
    +}
    +
    + +
    +interface {
    +	String() string
    +	String() string  // illegal: String not unique
    +	_(x int)         // illegal: method must have non-blank name
     }
     
    @@ -1272,9 +1280,9 @@ have the method set

    -func (p T) Read(b Buffer) bool { return … }
    -func (p T) Write(b Buffer) bool { return … }
    -func (p T) Close() { … }
    +func (p T) Read(p []byte) (n int, err error)   { return … }
    +func (p T) Write(p []byte) (n int, err error)  { return … }
    +func (p T) Close() error                       { return … }
     

    From 8dddf7556ee90e82e02333164644914a2f1af87d Mon Sep 17 00:00:00 2001 From: Andrew Bonventre Date: Tue, 30 Jul 2019 17:03:16 -0400 Subject: [PATCH 150/255] net/http: return nil from Header.Clone if the receiver is nil Fixes #33141 Change-Id: I84a8b3496fc9396fd1c09ba9505697c34bdf7105 Reviewed-on: https://go-review.googlesource.com/c/go/+/188022 Run-TryBot: Andrew Bonventre TryBot-Result: Gobot Gobot Reviewed-by: Emmanuel Odeke Reviewed-by: Bryan C. Mills --- src/net/http/header.go | 6 +++++- src/net/http/header_test.go | 8 ++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/net/http/header.go b/src/net/http/header.go index 1e1ed981ec..230ca03d4f 100644 --- a/src/net/http/header.go +++ b/src/net/http/header.go @@ -78,8 +78,12 @@ func (h Header) write(w io.Writer, trace *httptrace.ClientTrace) error { return h.writeSubset(w, nil, trace) } -// Clone returns a copy of h. +// Clone returns a copy of h or nil if h is nil. func (h Header) Clone() Header { + if h == nil { + return nil + } + // Find total number of values. nv := 0 for _, vv := range h { diff --git a/src/net/http/header_test.go b/src/net/http/header_test.go index 48158d313a..51fcab103b 100644 --- a/src/net/http/header_test.go +++ b/src/net/http/header_test.go @@ -176,6 +176,14 @@ func TestHasToken(t *testing.T) { } } +func TestNilHeaderClone(t *testing.T) { + t1 := Header(nil) + t2 := t1.Clone() + if t2 != nil { + t.Errorf("cloned header does not match original: got: %+v; want: %+v", t2, nil) + } +} + var testHeader = Header{ "Content-Length": {"123"}, "Content-Type": {"text/plain"}, From fe8a86646478b11db5697108a4db0deeaca29595 Mon Sep 17 00:00:00 2001 From: Andrew Bonventre Date: Tue, 30 Jul 2019 17:46:36 -0400 Subject: [PATCH 151/255] doc/go1.12: document change in syscall.Setrlimit behavior Fixes #30401 Change-Id: I7b5035ffc7333c746d4e31563df26ff4f934dfc6 Reviewed-on: https://go-review.googlesource.com/c/go/+/188237 Reviewed-by: Emmanuel Odeke Reviewed-by: Keith Randall --- doc/go1.12.html | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/go1.12.html b/doc/go1.12.html index cc19c0f31a..7f0b221cc3 100644 --- a/doc/go1.12.html +++ b/doc/go1.12.html @@ -80,6 +80,10 @@ Do not send CLs removing the interior tags from such phrases. checks for private API usage. Since it is considered private, syscall.Getdirentries now always fails with ENOSYS on iOS. + Additionally, syscall.Setrlimit + reports invalid argument in places where it historically + succeeded. These consequences are not specific to Go and users should expect + behavioral parity with libSystem's implementation going forward.

    Tools

    From e81b7315927d025a1eb3933542211b899880b982 Mon Sep 17 00:00:00 2001 From: Eli Bendersky Date: Wed, 31 Jul 2019 13:42:16 -0700 Subject: [PATCH 152/255] encoding/json: clarify Marshal behavior for string keys of maps This is a documentation-only change. Fixes #28827 Change-Id: Ife9ab997809048784f35872b09905bc209a05eff Reviewed-on: https://go-review.googlesource.com/c/go/+/188417 Reviewed-by: Ian Lance Taylor --- src/encoding/json/encode.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/encoding/json/encode.go b/src/encoding/json/encode.go index 3474d4a667..67412763d6 100644 --- a/src/encoding/json/encode.go +++ b/src/encoding/json/encode.go @@ -137,7 +137,7 @@ import ( // string, an integer type, or implement encoding.TextMarshaler. The map keys // are sorted and used as JSON object keys by applying the following rules, // subject to the UTF-8 coercion described for string values above: -// - string keys are used directly +// - keys of any string type are used directly // - encoding.TextMarshalers are marshaled // - integer keys are converted to strings // From 407010ef0b858a7fa6e6e95abe652fdff923da9a Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Sat, 27 Jul 2019 16:14:16 -0700 Subject: [PATCH 153/255] cmd/go: only pass -fsplit-stack to gccgo if supported Also add other gccgo options. This ports CL 45695 and CL 48592 from the gofrontend repo to the gc repo. CL 45695 (partial entry, other parts out of date and not ported): cmd/go: gccgo: consistent results Pass the -fdebug-prefix-map and -gno-record-gcc-switches compiler options to gccgo to generate consistent results. CL 48592: cmd/go: use gccSupportsFlag for -fsplit-stack Don't assume that all (or only) 386/amd64 compilers support -fsplit-stack. Fixes #33108 Change-Id: I61f9e5a67e4fb059f26750e97621d27afa566ec2 Reviewed-on: https://go-review.googlesource.com/c/go/+/187824 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Bryan C. Mills --- src/cmd/go/internal/work/exec.go | 3 +-- src/cmd/go/internal/work/gccgo.go | 14 +++++++++++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/cmd/go/internal/work/exec.go b/src/cmd/go/internal/work/exec.go index 944b23f1d8..b68f902853 100644 --- a/src/cmd/go/internal/work/exec.go +++ b/src/cmd/go/internal/work/exec.go @@ -2532,8 +2532,7 @@ func (b *Builder) cgo(a *Action, cgoExe, objdir string, pcCFLAGS, pcLDFLAGS, cgo } if cfg.BuildToolchainName == "gccgo" { - switch cfg.Goarch { - case "386", "amd64": + if b.gccSupportsFlag([]string{BuildToolchain.compiler()}, "-fsplit-stack") { cgoCFLAGS = append(cgoCFLAGS, "-fsplit-stack") } cgoflags = append(cgoflags, "-gccgo") diff --git a/src/cmd/go/internal/work/gccgo.go b/src/cmd/go/internal/work/gccgo.go index 36726d369b..24d856ca1e 100644 --- a/src/cmd/go/internal/work/gccgo.go +++ b/src/cmd/go/internal/work/gccgo.go @@ -67,6 +67,8 @@ func (tools gccgoToolchain) gc(b *Builder, a *Action, archive string, importcfg ofile = objdir + out gcargs := []string{"-g"} gcargs = append(gcargs, b.gccArchArgs()...) + gcargs = append(gcargs, "-fdebug-prefix-map="+b.WorkDir+"=/tmp/go-build") + gcargs = append(gcargs, "-gno-record-gcc-switches") if pkgpath := gccgoPkgpath(p); pkgpath != "" { gcargs = append(gcargs, "-fgo-pkgpath="+pkgpath) } @@ -528,12 +530,18 @@ func (tools gccgoToolchain) cc(b *Builder, a *Action, ofile, cfile string) error if pkgpath := gccgoCleanPkgpath(p); pkgpath != "" { defs = append(defs, `-D`, `GOPKGPATH="`+pkgpath+`"`) } - switch cfg.Goarch { - case "386", "amd64": + compiler := envList("CC", cfg.DefaultCC(cfg.Goos, cfg.Goarch)) + if b.gccSupportsFlag(compiler, "-fsplit-stack") { defs = append(defs, "-fsplit-stack") } defs = tools.maybePIC(defs) - return b.run(a, p.Dir, p.ImportPath, nil, envList("CC", cfg.DefaultCC(cfg.Goos, cfg.Goarch)), "-Wall", "-g", + if b.gccSupportsFlag(compiler, "-fdebug-prefix-map=a=b") { + defs = append(defs, "-fdebug-prefix-map="+b.WorkDir+"=/tmp/go-build") + } + if b.gccSupportsFlag(compiler, "-gno-record-gcc-switches") { + defs = append(defs, "-gno-record-gcc-switches") + } + return b.run(a, p.Dir, p.ImportPath, nil, compiler, "-Wall", "-g", "-I", a.Objdir, "-I", inc, "-o", ofile, defs, "-c", cfile) } From 8a317ebc0f50339628c003bf06107cd865406dd4 Mon Sep 17 00:00:00 2001 From: Keith Randall Date: Tue, 30 Jul 2019 16:14:20 -0700 Subject: [PATCH 154/255] cmd/compile: don't eliminate all registers when restricting to desired ones We shouldn't mask to desired registers if we haven't masked out all the forbidden registers yet. In this path we haven't masked out the nospill registers yet. If the resulting mask contains only nospill registers, then allocReg fails. This can only happen on resultNotInArgs-marked instructions, which exist only on the ARM64, MIPS, MIPS64, and PPC64 ports. Maybe there's a better way to handle resultNotInArgs instructions. But for 1.13, this is a low-risk fix. Fixes #33355 Change-Id: I1082f78f798d1371bde65c58cc265540480e4fa4 Reviewed-on: https://go-review.googlesource.com/c/go/+/188178 Run-TryBot: Keith Randall TryBot-Result: Gobot Gobot Reviewed-by: David Chase --- src/cmd/compile/internal/ssa/regalloc.go | 2 +- test/fixedbugs/issue33355.go | 147 +++++++++++++++++++++++ 2 files changed, 148 insertions(+), 1 deletion(-) create mode 100644 test/fixedbugs/issue33355.go diff --git a/src/cmd/compile/internal/ssa/regalloc.go b/src/cmd/compile/internal/ssa/regalloc.go index b6fae5e0a3..8abbf61507 100644 --- a/src/cmd/compile/internal/ssa/regalloc.go +++ b/src/cmd/compile/internal/ssa/regalloc.go @@ -1455,7 +1455,7 @@ func (s *regAllocState) regalloc(f *Func) { } } // Avoid registers we're saving for other values. - if mask&^desired.avoid != 0 { + if mask&^desired.avoid&^s.nospill != 0 { mask &^= desired.avoid } r := s.allocReg(mask, v) diff --git a/test/fixedbugs/issue33355.go b/test/fixedbugs/issue33355.go new file mode 100644 index 0000000000..c4b1e2e1a2 --- /dev/null +++ b/test/fixedbugs/issue33355.go @@ -0,0 +1,147 @@ +// compile + +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// This code failed on arm64 in the register allocator. +// See issue 33355. + +package server + +import ( + "bytes" + "sync" +) + +type client struct { + junk [4]int + mu sync.Mutex + srv *Server + gw *gateway + msgb [100]byte +} + +type gateway struct { + cfg *gatewayCfg + outsim *sync.Map +} + +type gatewayCfg struct { + replyPfx []byte +} + +type Account struct { + Name string +} + +type Server struct { + gateway *srvGateway +} + +type srvGateway struct { + outo []*client +} + +type subscription struct { + queue []byte + client *client +} + +type outsie struct { + ni map[string]struct{} + sl *Sublist + qsubs int +} + +type Sublist struct { +} + +type SublistResult struct { + psubs []*subscription + qsubs [][]*subscription +} + +var subPool = &sync.Pool{} + +func (c *client) sendMsgToGateways(acc *Account, msg, subject, reply []byte, qgroups [][]byte) { + var gws []*client + gw := c.srv.gateway + for i := 0; i < len(gw.outo); i++ { + gws = append(gws, gw.outo[i]) + } + var ( + subj = string(subject) + queuesa = [512]byte{} + queues = queuesa[:0] + mreply []byte + dstPfx []byte + checkReply = len(reply) > 0 + ) + + sub := subPool.Get().(*subscription) + + if subjectStartsWithGatewayReplyPrefix(subject) { + dstPfx = subject[:8] + } + for i := 0; i < len(gws); i++ { + gwc := gws[i] + if dstPfx != nil { + gwc.mu.Lock() + ok := bytes.Equal(dstPfx, gwc.gw.cfg.replyPfx) + gwc.mu.Unlock() + if !ok { + continue + } + } else { + qr := gwc.gatewayInterest(acc.Name, subj) + queues = queuesa[:0] + for i := 0; i < len(qr.qsubs); i++ { + qsubs := qr.qsubs[i] + queue := qsubs[0].queue + add := true + for _, qn := range qgroups { + if bytes.Equal(queue, qn) { + add = false + break + } + } + if add { + qgroups = append(qgroups, queue) + } + } + if len(queues) == 0 { + continue + } + } + if checkReply { + checkReply = false + mreply = reply + } + mh := c.msgb[:10] + mh = append(mh, subject...) + if len(queues) > 0 { + mh = append(mh, mreply...) + mh = append(mh, queues...) + } + sub.client = gwc + } + subPool.Put(sub) +} + +func subjectStartsWithGatewayReplyPrefix(subj []byte) bool { + return len(subj) > 8 && string(subj[:4]) == "foob" +} + +func (c *client) gatewayInterest(acc, subj string) *SublistResult { + ei, _ := c.gw.outsim.Load(acc) + var r *SublistResult + e := ei.(*outsie) + r = e.sl.Match(subj) + return r +} + +func (s *Sublist) Match(subject string) *SublistResult { + return nil +} + From ea8b0acdac0c542a5cd9249861ddc1c43e9c71ba Mon Sep 17 00:00:00 2001 From: Damien Neil Date: Wed, 31 Jul 2019 13:13:39 -0700 Subject: [PATCH 155/255] all: remove os.ErrTemporary As discussed in https://github.com/golang/go/issues/32463#issuecomment-506833421 the classification of deadline-based timeouts as "temporary" errors is a historical accident. I/O timeouts used to be duration-based, so they really were temporary--retrying a timed-out operation could succeed. Now that they're deadline-based, timeouts aren't temporary unless you reset the deadline. Drop ErrTemporary from Go 1.13, since its definition is wrong. We'll consider putting it back in Go 1.14 with a clear definition and deprecate net.OpError.Temporary. Fixes #32463 Change-Id: I70cda664590d8872541e17409a5780da76920891 Reviewed-on: https://go-review.googlesource.com/c/go/+/188398 Reviewed-by: Jonathan Amsterdam --- api/go1.13.txt | 1 - src/context/context.go | 2 +- src/internal/oserror/errors.go | 18 ------------------ src/internal/oserror/errors_test.go | 26 +++----------------------- src/internal/poll/fd.go | 2 +- src/net/cgo_unix.go | 2 -- src/net/http/transport.go | 4 +--- src/net/net.go | 4 ---- src/net/pipe.go | 2 +- src/net/url/url.go | 14 ++++++++++---- src/os/error.go | 2 -- src/syscall/syscall_js.go | 2 -- src/syscall/syscall_nacl.go | 2 -- src/syscall/syscall_plan9.go | 2 -- src/syscall/syscall_unix.go | 2 -- src/syscall/syscall_windows.go | 2 -- 16 files changed, 17 insertions(+), 70 deletions(-) diff --git a/api/go1.13.txt b/api/go1.13.txt index 16f11cf2b7..a8e39ce8ea 100644 --- a/api/go1.13.txt +++ b/api/go1.13.txt @@ -237,7 +237,6 @@ pkg os (netbsd-arm64), const O_SYNC = 128 pkg os (netbsd-arm64), const O_TRUNC = 1024 pkg os (netbsd-arm64), const PathListSeparator = 58 pkg os (netbsd-arm64), const PathSeparator = 47 -pkg os, var ErrTemporary error pkg os, var ErrTimeout error pkg path/filepath (netbsd-arm64-cgo), const ListSeparator = 58 pkg path/filepath (netbsd-arm64-cgo), const Separator = 47 diff --git a/src/context/context.go b/src/context/context.go index 05d01d0294..b400396513 100644 --- a/src/context/context.go +++ b/src/context/context.go @@ -164,7 +164,7 @@ func (deadlineExceededError) Error() string { return "context deadline exceede func (deadlineExceededError) Timeout() bool { return true } func (deadlineExceededError) Temporary() bool { return true } func (deadlineExceededError) Is(target error) bool { - return target == oserror.ErrTimeout || target == oserror.ErrTemporary + return target == oserror.ErrTimeout } // An emptyCtx is never canceled, has no values, and has no deadline. It is not diff --git a/src/internal/oserror/errors.go b/src/internal/oserror/errors.go index 8bd17c8b56..8fccc95482 100644 --- a/src/internal/oserror/errors.go +++ b/src/internal/oserror/errors.go @@ -15,7 +15,6 @@ var ( ErrExist = errors.New("file already exists") ErrNotExist = errors.New("file does not exist") ErrClosed = errors.New("file already closed") - ErrTemporary = temporaryError{} ErrTimeout = timeoutError{} ) @@ -45,20 +44,3 @@ func IsTimeout(err error) bool { } return false } - -// IsTemporary reports whether err indicates a temporary condition. -func IsTemporary(err error) bool { - for err != nil { - if err == ErrTemporary { - return true - } - if x, ok := err.(interface{ Temporary() bool }); ok { - return x.Temporary() - } - if x, ok := err.(interface{ Is(error) bool }); ok && x.Is(ErrTemporary) { - return true - } - err = errors.Unwrap(err) - } - return false -} diff --git a/src/internal/oserror/errors_test.go b/src/internal/oserror/errors_test.go index 6d6a56a0c7..bf3e057ccf 100644 --- a/src/internal/oserror/errors_test.go +++ b/src/internal/oserror/errors_test.go @@ -9,15 +9,13 @@ import ( ) type ttError struct { - timeout bool - temporary bool + timeout bool } func (e ttError) Error() string { - return fmt.Sprintf("ttError{timeout:%v temporary:%v}", e.timeout, e.temporary) + return fmt.Sprintf("ttError{timeout:%v}", e.timeout) } -func (e ttError) Timeout() bool { return e.timeout } -func (e ttError) Temporary() bool { return e.temporary } +func (e ttError) Timeout() bool { return e.timeout } type isError struct { err error @@ -43,21 +41,3 @@ func TestIsTimeout(t *testing.T) { } } } - -func TestIsTemporary(t *testing.T) { - for _, test := range []struct { - want bool - err error - }{ - {true, ttError{temporary: true}}, - {true, isError{os.ErrTemporary}}, - {true, os.ErrTemporary}, - {true, fmt.Errorf("wrap: %w", os.ErrTemporary)}, - {false, ttError{temporary: false}}, - {false, errors.New("error")}, - } { - if got, want := oserror.IsTemporary(test.err), test.want; got != want { - t.Errorf("IsTemporary(err) = %v, want %v\n%+v", got, want, test.err) - } - } -} diff --git a/src/internal/poll/fd.go b/src/internal/poll/fd.go index 784bea4b5a..5009e2671b 100644 --- a/src/internal/poll/fd.go +++ b/src/internal/poll/fd.go @@ -48,7 +48,7 @@ func (e *TimeoutError) Timeout() bool { return true } func (e *TimeoutError) Temporary() bool { return true } func (e *TimeoutError) Is(target error) bool { - return target == oserror.ErrTimeout || target == oserror.ErrTemporary + return target == oserror.ErrTimeout } // ErrNotPollable is returned when the file or socket is not suitable diff --git a/src/net/cgo_unix.go b/src/net/cgo_unix.go index b9a6ffaa60..c31cbfd814 100644 --- a/src/net/cgo_unix.go +++ b/src/net/cgo_unix.go @@ -40,8 +40,6 @@ func (eai addrinfoErrno) Timeout() bool { return false } func (eai addrinfoErrno) Is(target error) bool { switch target { - case os.ErrTemporary: - return eai.Temporary() case os.ErrTimeout: return eai.Timeout() } diff --git a/src/net/http/transport.go b/src/net/http/transport.go index 2f9bdc2700..e3a1a10cc6 100644 --- a/src/net/http/transport.go +++ b/src/net/http/transport.go @@ -2288,8 +2288,6 @@ func (e *httpError) Is(target error) bool { switch target { case os.ErrTimeout: return e.timeout - case os.ErrTemporary: - return true } return false } @@ -2629,7 +2627,7 @@ func (tlsHandshakeTimeoutError) Temporary() bool { return true } func (tlsHandshakeTimeoutError) Error() string { return "net/http: TLS handshake timeout" } func (tlsHandshakeTimeoutError) Is(target error) bool { - return target == os.ErrTimeout || target == os.ErrTemporary + return target == os.ErrTimeout } // fakeLocker is a sync.Locker which does nothing. It's used to guard diff --git a/src/net/net.go b/src/net/net.go index b3f9b8ba07..54e1ac383a 100644 --- a/src/net/net.go +++ b/src/net/net.go @@ -518,8 +518,6 @@ func (e *OpError) Temporary() bool { func (e *OpError) Is(target error) bool { switch target { - case os.ErrTemporary: - return e.Temporary() case os.ErrTimeout: return e.Timeout() } @@ -619,8 +617,6 @@ func (e *DNSError) Temporary() bool { return e.IsTimeout || e.IsTemporary } func (e *DNSError) Is(target error) bool { switch target { - case os.ErrTemporary: - return e.Temporary() case os.ErrTimeout: return e.Timeout() } diff --git a/src/net/pipe.go b/src/net/pipe.go index 8cc127464b..5abc4aabe6 100644 --- a/src/net/pipe.go +++ b/src/net/pipe.go @@ -86,7 +86,7 @@ func (timeoutError) Timeout() bool { return true } func (timeoutError) Temporary() bool { return true } func (timeoutError) Is(target error) bool { - return target == os.ErrTemporary || target == os.ErrTimeout + return target == os.ErrTimeout } type pipeAddr struct{} diff --git a/src/net/url/url.go b/src/net/url/url.go index 7f6ff93ce4..3212b9e998 100644 --- a/src/net/url/url.go +++ b/src/net/url/url.go @@ -26,10 +26,16 @@ type Error struct { Err error } -func (e *Error) Unwrap() error { return e.Err } -func (e *Error) Error() string { return e.Op + " " + e.URL + ": " + e.Err.Error() } -func (e *Error) Timeout() bool { return oserror.IsTimeout(e.Err) } -func (e *Error) Temporary() bool { return oserror.IsTemporary(e.Err) } +func (e *Error) Unwrap() error { return e.Err } +func (e *Error) Error() string { return e.Op + " " + e.URL + ": " + e.Err.Error() } +func (e *Error) Timeout() bool { return oserror.IsTimeout(e.Err) } + +func (e *Error) Temporary() bool { + t, ok := e.Err.(interface { + Temporary() bool + }) + return ok && t.Temporary() +} func ishex(c byte) bool { switch { diff --git a/src/os/error.go b/src/os/error.go index 0c2e6a7322..4cf35f2b77 100644 --- a/src/os/error.go +++ b/src/os/error.go @@ -23,7 +23,6 @@ var ( ErrNotExist = errNotExist() // "file does not exist" ErrClosed = errClosed() // "file already closed" ErrTimeout = errTimeout() // "deadline exceeded" - ErrTemporary = errTemporary() // "temporary error" ErrNoDeadline = errNoDeadline() // "file type does not support deadline" ) @@ -33,7 +32,6 @@ func errExist() error { return oserror.ErrExist } func errNotExist() error { return oserror.ErrNotExist } func errClosed() error { return oserror.ErrClosed } func errTimeout() error { return oserror.ErrTimeout } -func errTemporary() error { return oserror.ErrTemporary } func errNoDeadline() error { return poll.ErrNoDeadline } type timeout interface { diff --git a/src/syscall/syscall_js.go b/src/syscall/syscall_js.go index 99f9a935fe..6db01c32f1 100644 --- a/src/syscall/syscall_js.go +++ b/src/syscall/syscall_js.go @@ -58,8 +58,6 @@ func (e Errno) Error() string { func (e Errno) Is(target error) bool { switch target { - case oserror.ErrTemporary: - return e.Temporary() case oserror.ErrTimeout: return e.Timeout() case oserror.ErrPermission: diff --git a/src/syscall/syscall_nacl.go b/src/syscall/syscall_nacl.go index 3fc504fd9f..33ad8bfab0 100644 --- a/src/syscall/syscall_nacl.go +++ b/src/syscall/syscall_nacl.go @@ -65,8 +65,6 @@ func (e Errno) Error() string { func (e Errno) Is(target error) bool { switch target { - case oserror.ErrTemporary: - return e.Temporary() case oserror.ErrTimeout: return e.Timeout() case oserror.ErrPermission: diff --git a/src/syscall/syscall_plan9.go b/src/syscall/syscall_plan9.go index 9b5a2940b0..d1b4bd9bd5 100644 --- a/src/syscall/syscall_plan9.go +++ b/src/syscall/syscall_plan9.go @@ -29,8 +29,6 @@ func NewError(s string) error { return ErrorString(s) } func (e ErrorString) Is(target error) bool { switch target { - case oserror.ErrTemporary: - return e.Temporary() case oserror.ErrTimeout: return e.Timeout() case oserror.ErrPermission: diff --git a/src/syscall/syscall_unix.go b/src/syscall/syscall_unix.go index 1b66e3bb11..4bb7799d53 100644 --- a/src/syscall/syscall_unix.go +++ b/src/syscall/syscall_unix.go @@ -121,8 +121,6 @@ func (e Errno) Error() string { func (e Errno) Is(target error) bool { switch target { - case oserror.ErrTemporary: - return e.Temporary() case oserror.ErrTimeout: return e.Timeout() case oserror.ErrPermission: diff --git a/src/syscall/syscall_windows.go b/src/syscall/syscall_windows.go index 6201b6475d..aa4cfa7243 100644 --- a/src/syscall/syscall_windows.go +++ b/src/syscall/syscall_windows.go @@ -115,8 +115,6 @@ const _ERROR_BAD_NETPATH = Errno(53) func (e Errno) Is(target error) bool { switch target { - case oserror.ErrTemporary: - return e.Temporary() case oserror.ErrTimeout: return e.Timeout() case oserror.ErrPermission: From d6f6a46c0722e2e4565c5b146ab3012d9327efd1 Mon Sep 17 00:00:00 2001 From: Emmanuel T Odeke Date: Wed, 31 Jul 2019 19:18:32 -0700 Subject: [PATCH 156/255] doc/go1.13: add more release notes for net/http Fixes #33396 Change-Id: Id975a23b8d6555a3f19ef283fccbbe122f10acfe Reviewed-on: https://go-review.googlesource.com/c/go/+/188477 Reviewed-by: Andrew Bonventre --- doc/go1.13.html | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/doc/go1.13.html b/doc/go1.13.html index 7298f82889..f7a6aaefbd 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -713,6 +713,13 @@ godoc
    net/http
    +

    + The new fields Transport.WriteBufferSize + and Transport.ReadBufferSize + allow one to specify the sizes of the write and read buffers for a Transport. + If either field is zero, a default size of 4KB is used. +

    +

    The new field Transport.ForceAttemptHTTP2 controls whether HTTP/2 is enabled when a non-zero Dial, DialTLS, or DialContext @@ -729,6 +736,15 @@ godoc Pusher and Flusher interfaces.

    +

    + The StatusCode 103 "Early Hints" has been added. +

    + +

    + On encountering unsupported transfer-encodings, http.Server now + returns a "501 Unimplemented" status as mandated by the HTTP specification RFC 7230 Section 3.3.1. +

    +

    The new Server fields BaseContext and @@ -736,11 +752,26 @@ godoc allow finer control over the Context values provided to requests and connections.

    +

    + http.DetectContentType now correctly detects RAR signatures, and can now also detect RAR v5 signatures. +

    +

    The new Header method Clone returns a copy of the receiver.

    +

    + A new function NewRequestWithContext has been added and it + accepts a Context that controls the entire lifetime of + the created outgoing Request, suitable for use with + Client.Do and Transport.RoundTrip +

    + +

    + Transport now silently ignores a 408 "Request Timeout" response. +

    +
    os
    From e7c51cad71126c40bf130db30c35953321f32c9d Mon Sep 17 00:00:00 2001 From: Darren McCleary Date: Thu, 1 Aug 2019 20:34:29 +0000 Subject: [PATCH 157/255] net/http: fix a typo in spelling of MultiPartForm Change-Id: I33a5313ef10e8c88d9c12507573b385fa0843afe GitHub-Last-Rev: 844d4351583e3f2e94d6420dcd50d50845d1b4cb GitHub-Pull-Request: golang/go#33412 Reviewed-on: https://go-review.googlesource.com/c/go/+/188498 Reviewed-by: Emmanuel Odeke --- src/net/http/request.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/net/http/request.go b/src/net/http/request.go index e53dde16b4..31d62083cb 100644 --- a/src/net/http/request.go +++ b/src/net/http/request.go @@ -450,7 +450,7 @@ func (r *Request) Referer() string { // multipartByReader is a sentinel value. // Its presence in Request.MultipartForm indicates that parsing of the request -// body has been handed off to a MultipartReader instead of ParseMultipartFrom. +// body has been handed off to a MultipartReader instead of ParseMultipartForm. var multipartByReader = &multipart.Form{ Value: make(map[string][]string), File: make(map[string][]*multipart.FileHeader), From 2d6ee6e89a4b30c7528d2977df4e1aa86651e4e4 Mon Sep 17 00:00:00 2001 From: Baokun Lee Date: Fri, 2 Aug 2019 00:31:57 +0800 Subject: [PATCH 158/255] os: enable the close-on-exec flag for openFdAt There's a race here with fork/exec, enable the close-on-exec flag for the new file descriptor. Fixes #33405 Change-Id: If95bae97a52b7026a930bb3427e47bae3b0032ac Reviewed-on: https://go-review.googlesource.com/c/go/+/188537 Run-TryBot: Baokun Lee TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- src/os/removeall_at.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/os/removeall_at.go b/src/os/removeall_at.go index 3098b93368..bc632f5a75 100644 --- a/src/os/removeall_at.go +++ b/src/os/removeall_at.go @@ -173,7 +173,7 @@ func openFdAt(dirfd int, name string) (*File, error) { var r int for { var e error - r, e = unix.Openat(dirfd, name, O_RDONLY, 0) + r, e = unix.Openat(dirfd, name, O_RDONLY|syscall.O_CLOEXEC, 0) if e == nil { break } From 2d1a1e0a2a5d2be7614fa7ec9be7ec9ed72bc820 Mon Sep 17 00:00:00 2001 From: Alberto Donizetti Date: Fri, 2 Aug 2019 19:09:20 +0200 Subject: [PATCH 159/255] doc: fix Block interface parameters order The Effective Go document references the crypto/cipher Block interface, but the parameters' names are swapped. This change alignes them to the crypto definition, to avoid confusion. Fixes #33432 Change-Id: I8b9aac4dc6af3eec968bbc8f3ee5366b99016fcc Reviewed-on: https://go-review.googlesource.com/c/go/+/188797 Reviewed-by: Ian Lance Taylor --- doc/effective_go.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/effective_go.html b/doc/effective_go.html index 7bb60a0786..158f39ebc8 100644 --- a/doc/effective_go.html +++ b/doc/effective_go.html @@ -2282,8 +2282,8 @@ The crypto/cipher interfaces look like this:
     type Block interface {
         BlockSize() int
    -    Encrypt(src, dst []byte)
    -    Decrypt(src, dst []byte)
    +    Encrypt(dst, src []byte)
    +    Decrypt(dst, src []byte)
     }
     
     type Stream interface {
    
    From 0e54d28ff7ff63450356811b675a02e0afe610d6 Mon Sep 17 00:00:00 2001
    From: Damien Neil 
    Date: Fri, 2 Aug 2019 09:09:27 -0700
    Subject: [PATCH 160/255] all: remove os.ErrTimeout
    
    It is unclear whether the current definition of os.IsTimeout is
    desirable or not. Drop ErrTimeout for now so we can consider adding it
    (or some other error) in a future release with a corrected definition.
    
    Fixes #33411
    
    Change-Id: I8b880da7d22afc343a08339eb5f0efd1075ecafe
    Reviewed-on: https://go-review.googlesource.com/c/go/+/188758
    Reviewed-by: Russ Cox 
    Run-TryBot: Damien Neil 
    TryBot-Result: Gobot Gobot 
    ---
     api/go1.13.txt                      |  3 --
     src/context/context.go              |  4 ---
     src/context/context_test.go         |  5 ----
     src/go/build/deps_test.go           |  2 +-
     src/internal/oserror/errors.go      | 28 -------------------
     src/internal/oserror/errors_test.go | 43 -----------------------------
     src/internal/poll/fd.go             |  5 ----
     src/net/cgo_unix.go                 |  9 ------
     src/net/http/transport.go           | 12 --------
     src/net/net.go                      | 16 -----------
     src/net/pipe.go                     |  5 ----
     src/net/timeout_test.go             |  5 ----
     src/net/url/url.go                  |  9 ++++--
     src/os/error.go                     |  2 --
     src/syscall/syscall_js.go           |  2 --
     src/syscall/syscall_nacl.go         |  2 --
     src/syscall/syscall_plan9.go        |  2 --
     src/syscall/syscall_unix.go         |  2 --
     src/syscall/syscall_windows.go      |  2 --
     19 files changed, 8 insertions(+), 150 deletions(-)
     delete mode 100644 src/internal/oserror/errors_test.go
    
    diff --git a/api/go1.13.txt b/api/go1.13.txt
    index a8e39ce8ea..d964d64019 100644
    --- a/api/go1.13.txt
    +++ b/api/go1.13.txt
    @@ -209,8 +209,6 @@ pkg net/http, type Transport struct, ForceAttemptHTTP2 bool
     pkg net/http, type Transport struct, ReadBufferSize int
     pkg net/http, type Transport struct, WriteBufferSize int
     pkg net, method (*DNSConfigError) Unwrap() error
    -pkg net, method (*DNSError) Is(error) bool
    -pkg net, method (*OpError) Is(error) bool
     pkg net, method (*OpError) Unwrap() error
     pkg net, type DNSError struct, IsNotFound bool
     pkg net, type ListenConfig struct, KeepAlive time.Duration
    @@ -237,7 +235,6 @@ pkg os (netbsd-arm64), const O_SYNC = 128
     pkg os (netbsd-arm64), const O_TRUNC = 1024
     pkg os (netbsd-arm64), const PathListSeparator = 58
     pkg os (netbsd-arm64), const PathSeparator = 47
    -pkg os, var ErrTimeout error
     pkg path/filepath (netbsd-arm64-cgo), const ListSeparator = 58
     pkg path/filepath (netbsd-arm64-cgo), const Separator = 47
     pkg path/filepath (netbsd-arm64), const ListSeparator = 58
    diff --git a/src/context/context.go b/src/context/context.go
    index b400396513..62590850a6 100644
    --- a/src/context/context.go
    +++ b/src/context/context.go
    @@ -49,7 +49,6 @@ package context
     
     import (
     	"errors"
    -	"internal/oserror"
     	"internal/reflectlite"
     	"sync"
     	"time"
    @@ -163,9 +162,6 @@ type deadlineExceededError struct{}
     func (deadlineExceededError) Error() string   { return "context deadline exceeded" }
     func (deadlineExceededError) Timeout() bool   { return true }
     func (deadlineExceededError) Temporary() bool { return true }
    -func (deadlineExceededError) Is(target error) bool {
    -	return target == oserror.ErrTimeout
    -}
     
     // An emptyCtx is never canceled, has no values, and has no deadline. It is not
     // struct{}, since vars of this type must have distinct addresses.
    diff --git a/src/context/context_test.go b/src/context/context_test.go
    index 9991c5b09c..0e69e2f6fd 100644
    --- a/src/context/context_test.go
    +++ b/src/context/context_test.go
    @@ -5,10 +5,8 @@
     package context
     
     import (
    -	"errors"
     	"fmt"
     	"math/rand"
    -	"os"
     	"runtime"
     	"strings"
     	"sync"
    @@ -649,7 +647,4 @@ func XTestDeadlineExceededSupportsTimeout(t testingT) {
     	if !i.Timeout() {
     		t.Fatal("wrong value for timeout")
     	}
    -	if !errors.Is(DeadlineExceeded, os.ErrTimeout) {
    -		t.Fatal("errors.Is(DeadlineExceeded, os.ErrTimeout) = false, want true")
    -	}
     }
    diff --git a/src/go/build/deps_test.go b/src/go/build/deps_test.go
    index bd866ee738..fb862459c8 100644
    --- a/src/go/build/deps_test.go
    +++ b/src/go/build/deps_test.go
    @@ -250,7 +250,7 @@ var pkgDeps = map[string][]string{
     	"compress/gzip":                  {"L4", "compress/flate"},
     	"compress/lzw":                   {"L4"},
     	"compress/zlib":                  {"L4", "compress/flate"},
    -	"context":                        {"errors", "internal/oserror", "internal/reflectlite", "sync", "time"},
    +	"context":                        {"errors", "internal/reflectlite", "sync", "time"},
     	"database/sql":                   {"L4", "container/list", "context", "database/sql/driver", "database/sql/internal"},
     	"database/sql/driver":            {"L4", "context", "time", "database/sql/internal"},
     	"debug/dwarf":                    {"L4"},
    diff --git a/src/internal/oserror/errors.go b/src/internal/oserror/errors.go
    index 8fccc95482..28a1ab32d3 100644
    --- a/src/internal/oserror/errors.go
    +++ b/src/internal/oserror/errors.go
    @@ -15,32 +15,4 @@ var (
     	ErrExist      = errors.New("file already exists")
     	ErrNotExist   = errors.New("file does not exist")
     	ErrClosed     = errors.New("file already closed")
    -	ErrTimeout    = timeoutError{}
     )
    -
    -type timeoutError struct{}
    -
    -func (timeoutError) Error() string { return "deadline exceeded" }
    -func (timeoutError) Timeout() bool { return true }
    -
    -type temporaryError struct{}
    -
    -func (temporaryError) Error() string   { return "temporary error" }
    -func (temporaryError) Temporary() bool { return true }
    -
    -// IsTimeout reports whether err indicates a timeout.
    -func IsTimeout(err error) bool {
    -	for err != nil {
    -		if err == ErrTimeout {
    -			return true
    -		}
    -		if x, ok := err.(interface{ Timeout() bool }); ok {
    -			return x.Timeout()
    -		}
    -		if x, ok := err.(interface{ Is(error) bool }); ok && x.Is(ErrTimeout) {
    -			return true
    -		}
    -		err = errors.Unwrap(err)
    -	}
    -	return false
    -}
    diff --git a/src/internal/oserror/errors_test.go b/src/internal/oserror/errors_test.go
    deleted file mode 100644
    index bf3e057ccf..0000000000
    --- a/src/internal/oserror/errors_test.go
    +++ /dev/null
    @@ -1,43 +0,0 @@
    -package oserror_test
    -
    -import (
    -	"errors"
    -	"fmt"
    -	"internal/oserror"
    -	"os"
    -	"testing"
    -)
    -
    -type ttError struct {
    -	timeout bool
    -}
    -
    -func (e ttError) Error() string {
    -	return fmt.Sprintf("ttError{timeout:%v}", e.timeout)
    -}
    -func (e ttError) Timeout() bool { return e.timeout }
    -
    -type isError struct {
    -	err error
    -}
    -
    -func (e isError) Error() string        { return fmt.Sprintf("isError(%v)", e.err) }
    -func (e isError) Is(target error) bool { return e.err == target }
    -
    -func TestIsTimeout(t *testing.T) {
    -	for _, test := range []struct {
    -		want bool
    -		err  error
    -	}{
    -		{true, ttError{timeout: true}},
    -		{true, isError{os.ErrTimeout}},
    -		{true, os.ErrTimeout},
    -		{true, fmt.Errorf("wrap: %w", os.ErrTimeout)},
    -		{false, ttError{timeout: false}},
    -		{false, errors.New("error")},
    -	} {
    -		if got, want := oserror.IsTimeout(test.err), test.want; got != want {
    -			t.Errorf("IsTimeout(err) = %v, want %v\n%+v", got, want, test.err)
    -		}
    -	}
    -}
    diff --git a/src/internal/poll/fd.go b/src/internal/poll/fd.go
    index 5009e2671b..c0de50c1b4 100644
    --- a/src/internal/poll/fd.go
    +++ b/src/internal/poll/fd.go
    @@ -11,7 +11,6 @@ package poll
     
     import (
     	"errors"
    -	"internal/oserror"
     )
     
     // ErrNetClosing is returned when a network descriptor is used after
    @@ -47,10 +46,6 @@ func (e *TimeoutError) Error() string   { return "i/o timeout" }
     func (e *TimeoutError) Timeout() bool   { return true }
     func (e *TimeoutError) Temporary() bool { return true }
     
    -func (e *TimeoutError) Is(target error) bool {
    -	return target == oserror.ErrTimeout
    -}
    -
     // ErrNotPollable is returned when the file or socket is not suitable
     // for event notification.
     var ErrNotPollable = errors.New("not pollable")
    diff --git a/src/net/cgo_unix.go b/src/net/cgo_unix.go
    index c31cbfd814..69c99fe7db 100644
    --- a/src/net/cgo_unix.go
    +++ b/src/net/cgo_unix.go
    @@ -24,7 +24,6 @@ import "C"
     
     import (
     	"context"
    -	"os"
     	"syscall"
     	"unsafe"
     )
    @@ -38,14 +37,6 @@ func (eai addrinfoErrno) Error() string   { return C.GoString(C.gai_strerror(C.i
     func (eai addrinfoErrno) Temporary() bool { return eai == C.EAI_AGAIN }
     func (eai addrinfoErrno) Timeout() bool   { return false }
     
    -func (eai addrinfoErrno) Is(target error) bool {
    -	switch target {
    -	case os.ErrTimeout:
    -		return eai.Timeout()
    -	}
    -	return false
    -}
    -
     type portLookupResult struct {
     	port int
     	err  error
    diff --git a/src/net/http/transport.go b/src/net/http/transport.go
    index e3a1a10cc6..5c1708c832 100644
    --- a/src/net/http/transport.go
    +++ b/src/net/http/transport.go
    @@ -2284,14 +2284,6 @@ func (e *httpError) Error() string   { return e.err }
     func (e *httpError) Timeout() bool   { return e.timeout }
     func (e *httpError) Temporary() bool { return true }
     
    -func (e *httpError) Is(target error) bool {
    -	switch target {
    -	case os.ErrTimeout:
    -		return e.timeout
    -	}
    -	return false
    -}
    -
     var errTimeout error = &httpError{err: "net/http: timeout awaiting response headers", timeout: true}
     
     // errRequestCanceled is set to be identical to the one from h2 to facilitate
    @@ -2626,10 +2618,6 @@ func (tlsHandshakeTimeoutError) Timeout() bool   { return true }
     func (tlsHandshakeTimeoutError) Temporary() bool { return true }
     func (tlsHandshakeTimeoutError) Error() string   { return "net/http: TLS handshake timeout" }
     
    -func (tlsHandshakeTimeoutError) Is(target error) bool {
    -	return target == os.ErrTimeout
    -}
    -
     // fakeLocker is a sync.Locker which does nothing. It's used to guard
     // test-only fields when not under test, to avoid runtime atomic
     // overhead.
    diff --git a/src/net/net.go b/src/net/net.go
    index 54e1ac383a..4ed40237a8 100644
    --- a/src/net/net.go
    +++ b/src/net/net.go
    @@ -516,14 +516,6 @@ func (e *OpError) Temporary() bool {
     	return ok && t.Temporary()
     }
     
    -func (e *OpError) Is(target error) bool {
    -	switch target {
    -	case os.ErrTimeout:
    -		return e.Timeout()
    -	}
    -	return false
    -}
    -
     // A ParseError is the error type of literal network address parsers.
     type ParseError struct {
     	// Type is the type of string that was expected, such as
    @@ -615,14 +607,6 @@ func (e *DNSError) Timeout() bool { return e.IsTimeout }
     // error and return a DNSError for which Temporary returns false.
     func (e *DNSError) Temporary() bool { return e.IsTimeout || e.IsTemporary }
     
    -func (e *DNSError) Is(target error) bool {
    -	switch target {
    -	case os.ErrTimeout:
    -		return e.Timeout()
    -	}
    -	return false
    -}
    -
     type writerOnly struct {
     	io.Writer
     }
    diff --git a/src/net/pipe.go b/src/net/pipe.go
    index 5abc4aabe6..9177fc4036 100644
    --- a/src/net/pipe.go
    +++ b/src/net/pipe.go
    @@ -6,7 +6,6 @@ package net
     
     import (
     	"io"
    -	"os"
     	"sync"
     	"time"
     )
    @@ -85,10 +84,6 @@ func (timeoutError) Error() string   { return "deadline exceeded" }
     func (timeoutError) Timeout() bool   { return true }
     func (timeoutError) Temporary() bool { return true }
     
    -func (timeoutError) Is(target error) bool {
    -	return target == os.ErrTimeout
    -}
    -
     type pipeAddr struct{}
     
     func (pipeAddr) Network() string { return "pipe" }
    diff --git a/src/net/timeout_test.go b/src/net/timeout_test.go
    index 93e46025a2..b4fc2c0198 100644
    --- a/src/net/timeout_test.go
    +++ b/src/net/timeout_test.go
    @@ -7,9 +7,7 @@
     package net
     
     import (
    -	"errors"
     	"fmt"
    -	"internal/oserror"
     	"internal/poll"
     	"internal/testenv"
     	"io"
    @@ -90,9 +88,6 @@ func TestDialTimeout(t *testing.T) {
     			if nerr, ok := err.(Error); !ok || !nerr.Timeout() {
     				t.Fatalf("#%d: %v", i, err)
     			}
    -			if !errors.Is(err, oserror.ErrTimeout) {
    -				t.Fatalf("#%d: Dial error is not os.ErrTimeout: %v", i, err)
    -			}
     		}
     	}
     }
    diff --git a/src/net/url/url.go b/src/net/url/url.go
    index 3212b9e998..982cfe6c0c 100644
    --- a/src/net/url/url.go
    +++ b/src/net/url/url.go
    @@ -13,7 +13,6 @@ package url
     import (
     	"errors"
     	"fmt"
    -	"internal/oserror"
     	"sort"
     	"strconv"
     	"strings"
    @@ -28,7 +27,13 @@ type Error struct {
     
     func (e *Error) Unwrap() error { return e.Err }
     func (e *Error) Error() string { return e.Op + " " + e.URL + ": " + e.Err.Error() }
    -func (e *Error) Timeout() bool { return oserror.IsTimeout(e.Err) }
    +
    +func (e *Error) Timeout() bool {
    +	t, ok := e.Err.(interface {
    +		Timeout() bool
    +	})
    +	return ok && t.Timeout()
    +}
     
     func (e *Error) Temporary() bool {
     	t, ok := e.Err.(interface {
    diff --git a/src/os/error.go b/src/os/error.go
    index 4cf35f2b77..09ba158677 100644
    --- a/src/os/error.go
    +++ b/src/os/error.go
    @@ -22,7 +22,6 @@ var (
     	ErrExist      = errExist()      // "file already exists"
     	ErrNotExist   = errNotExist()   // "file does not exist"
     	ErrClosed     = errClosed()     // "file already closed"
    -	ErrTimeout    = errTimeout()    // "deadline exceeded"
     	ErrNoDeadline = errNoDeadline() // "file type does not support deadline"
     )
     
    @@ -31,7 +30,6 @@ func errPermission() error { return oserror.ErrPermission }
     func errExist() error      { return oserror.ErrExist }
     func errNotExist() error   { return oserror.ErrNotExist }
     func errClosed() error     { return oserror.ErrClosed }
    -func errTimeout() error    { return oserror.ErrTimeout }
     func errNoDeadline() error { return poll.ErrNoDeadline }
     
     type timeout interface {
    diff --git a/src/syscall/syscall_js.go b/src/syscall/syscall_js.go
    index 6db01c32f1..175fe47fca 100644
    --- a/src/syscall/syscall_js.go
    +++ b/src/syscall/syscall_js.go
    @@ -58,8 +58,6 @@ func (e Errno) Error() string {
     
     func (e Errno) Is(target error) bool {
     	switch target {
    -	case oserror.ErrTimeout:
    -		return e.Timeout()
     	case oserror.ErrPermission:
     		return e == EACCES || e == EPERM
     	case oserror.ErrExist:
    diff --git a/src/syscall/syscall_nacl.go b/src/syscall/syscall_nacl.go
    index 33ad8bfab0..e887b1e04e 100644
    --- a/src/syscall/syscall_nacl.go
    +++ b/src/syscall/syscall_nacl.go
    @@ -65,8 +65,6 @@ func (e Errno) Error() string {
     
     func (e Errno) Is(target error) bool {
     	switch target {
    -	case oserror.ErrTimeout:
    -		return e.Timeout()
     	case oserror.ErrPermission:
     		return e == EACCES || e == EPERM
     	case oserror.ErrExist:
    diff --git a/src/syscall/syscall_plan9.go b/src/syscall/syscall_plan9.go
    index d1b4bd9bd5..c11f030531 100644
    --- a/src/syscall/syscall_plan9.go
    +++ b/src/syscall/syscall_plan9.go
    @@ -29,8 +29,6 @@ func NewError(s string) error { return ErrorString(s) }
     
     func (e ErrorString) Is(target error) bool {
     	switch target {
    -	case oserror.ErrTimeout:
    -		return e.Timeout()
     	case oserror.ErrPermission:
     		return checkErrMessageContent(e, "permission denied")
     	case oserror.ErrExist:
    diff --git a/src/syscall/syscall_unix.go b/src/syscall/syscall_unix.go
    index 4bb7799d53..59c8c34933 100644
    --- a/src/syscall/syscall_unix.go
    +++ b/src/syscall/syscall_unix.go
    @@ -121,8 +121,6 @@ func (e Errno) Error() string {
     
     func (e Errno) Is(target error) bool {
     	switch target {
    -	case oserror.ErrTimeout:
    -		return e.Timeout()
     	case oserror.ErrPermission:
     		return e == EACCES || e == EPERM
     	case oserror.ErrExist:
    diff --git a/src/syscall/syscall_windows.go b/src/syscall/syscall_windows.go
    index aa4cfa7243..2e8edc7acc 100644
    --- a/src/syscall/syscall_windows.go
    +++ b/src/syscall/syscall_windows.go
    @@ -115,8 +115,6 @@ const _ERROR_BAD_NETPATH = Errno(53)
     
     func (e Errno) Is(target error) bool {
     	switch target {
    -	case oserror.ErrTimeout:
    -		return e.Timeout()
     	case oserror.ErrPermission:
     		return e == ERROR_ACCESS_DENIED
     	case oserror.ErrExist:
    
    From bdea352b96c6934ee49920b18c3b8aedffd27d08 Mon Sep 17 00:00:00 2001
    From: Emmanuel T Odeke 
    Date: Wed, 31 Jul 2019 18:14:56 -0700
    Subject: [PATCH 161/255] doc/go1.13: document net/http.Transport.Request.Body
     unfurling
    
    Documents the work from:
    * CL 163599
    * CL 163737
    
    which now uses the Request.Body's io.ReaderFrom implementation,
    if available, and permits system level optimizations such as
    "sendfile" to be used to transmit/upload the Body, which greatly
    speeds up file uploads.
    
    Updates #33396
    
    Change-Id: I7b8315c4b3e57ad47bb9be2b0c838857875d4bd5
    Reviewed-on: https://go-review.googlesource.com/c/go/+/188457
    Reviewed-by: Andrew Bonventre 
    ---
     doc/go1.13.html | 5 +++++
     1 file changed, 5 insertions(+)
    
    diff --git a/doc/go1.13.html b/doc/go1.13.html
    index f7a6aaefbd..c79a76f4b8 100644
    --- a/doc/go1.13.html
    +++ b/doc/go1.13.html
    @@ -740,6 +740,11 @@ godoc
           The StatusCode 103 "Early Hints" has been added.
         

    +

    + Transport now uses the Request.Body's + io.ReaderFrom implementation if available, to optimize writing the body. +

    +

    On encountering unsupported transfer-encodings, http.Server now returns a "501 Unimplemented" status as mandated by the HTTP specification RFC 7230 Section 3.3.1. From 316ac4f33061653871c0dff7f282d1c4de9388de Mon Sep 17 00:00:00 2001 From: Keith Randall Date: Fri, 2 Aug 2019 10:36:03 -0700 Subject: [PATCH 162/255] cmd/compile: fix crash on write barrier insertion The compiler can crash if the compiled code tries to unconditionally read from a nil pointer. This should cause the generated binary to panic, not the compiler. Fixes #33438 Change-Id: Ic8fa89646d6968e2cc4e27da0ad9286662f8bc49 Reviewed-on: https://go-review.googlesource.com/c/go/+/188760 Reviewed-by: Austin Clements --- src/cmd/compile/internal/ssa/writebarrier.go | 4 ++++ test/fixedbugs/issue33438.go | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 test/fixedbugs/issue33438.go diff --git a/src/cmd/compile/internal/ssa/writebarrier.go b/src/cmd/compile/internal/ssa/writebarrier.go index 3c64da20a7..8bc807c493 100644 --- a/src/cmd/compile/internal/ssa/writebarrier.go +++ b/src/cmd/compile/internal/ssa/writebarrier.go @@ -520,6 +520,10 @@ func IsReadOnlyGlobalAddr(v *Value) bool { if !IsGlobalAddr(v) { return false } + if v.Op == OpConst64 || v.Op == OpConst32 { + // Nil pointers are read only. See issue 33438. + return true + } // See TODO in OpAddr case in IsSanitizerSafeAddr below. return strings.HasPrefix(v.Aux.(*obj.LSym).Name, `""..stmp_`) } diff --git a/test/fixedbugs/issue33438.go b/test/fixedbugs/issue33438.go new file mode 100644 index 0000000000..e4206d7bcf --- /dev/null +++ b/test/fixedbugs/issue33438.go @@ -0,0 +1,19 @@ +// compile + +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package p + +type hasPtrs struct { + x [2]*int + // Note: array size needs to be >1 to force this type to be not SSAable. + // The bug triggers only for OpMove, which is only used for unSSAable types. +} + +func main() { + var x *hasPtrs // Can be local, global, or arg; nil or non-nil. + var y *hasPtrs = nil // Must initialize to nil. + *x = *y +} From 07b3e629cedb518533407628b64fe6fc96f5a9e4 Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Fri, 2 Aug 2019 16:24:45 -0400 Subject: [PATCH 163/255] cmd/go: report loading errors from 'go mod tidy' and 'go mod vendor' Fixes #27063 Change-Id: Iedd14fd614a3d79d1387b923a0f123c2bc9e0b33 Reviewed-on: https://go-review.googlesource.com/c/go/+/188763 Run-TryBot: Bryan C. Mills Reviewed-by: Jay Conrod TryBot-Result: Gobot Gobot --- src/cmd/go/internal/modload/load.go | 6 ++- src/cmd/go/testdata/script/mod_tidy_error.txt | 39 +++++++++++++++++++ src/cmd/go/testdata/script/mod_vendor.txt | 6 --- 3 files changed, 43 insertions(+), 8 deletions(-) create mode 100644 src/cmd/go/testdata/script/mod_tidy_error.txt diff --git a/src/cmd/go/internal/modload/load.go b/src/cmd/go/internal/modload/load.go index 9a5d4f231c..52b371e5a9 100644 --- a/src/cmd/go/internal/modload/load.go +++ b/src/cmd/go/internal/modload/load.go @@ -387,11 +387,13 @@ func loadAll(testAll bool) []string { var paths []string for _, pkg := range loaded.pkgs { - if e, ok := pkg.err.(*ImportMissingError); ok && e.Module.Path == "" { - continue // Package doesn't actually exist. + if pkg.err != nil { + base.Errorf("%s: %v", pkg.stackText(), pkg.err) + continue } paths = append(paths, pkg.path) } + base.ExitIfErrors() return paths } diff --git a/src/cmd/go/testdata/script/mod_tidy_error.txt b/src/cmd/go/testdata/script/mod_tidy_error.txt new file mode 100644 index 0000000000..9bb8528cb0 --- /dev/null +++ b/src/cmd/go/testdata/script/mod_tidy_error.txt @@ -0,0 +1,39 @@ +env GO111MODULE=on + +# Regression test for golang.org/issue/27063: +# 'go mod tidy' and 'go mod vendor' should not hide loading errors. + +! go mod tidy +stderr '^issue27063 imports\n\tnonexist: malformed module path "nonexist": missing dot in first path element' +stderr '^issue27063 imports\n\tnonexist.example.com: cannot find module providing package nonexist.example.com' +stderr '^issue27063 imports\n\tissue27063/other imports\n\tother.example.com/nonexist: cannot find module providing package other.example.com/nonexist' + +! go mod vendor +stderr '^issue27063 imports\n\tnonexist: malformed module path "nonexist": missing dot in first path element' +stderr '^issue27063 imports\n\tnonexist.example.com: cannot find module providing package nonexist.example.com' +stderr '^issue27063 imports\n\tissue27063/other imports\n\tother.example.com/nonexist: cannot find module providing package other.example.com/nonexist' + +-- go.mod -- +module issue27063 + +go 1.13 + +require issue27063/other v0.0.0 +replace issue27063/other => ./other +-- x.go -- +package main + +import ( + "nonexist" + + "nonexist.example.com" + "issue27063/other" +) + +func main() {} +-- other/go.mod -- +module issue27063/other +-- other/other.go -- +package other + +import "other.example.com/nonexist" diff --git a/src/cmd/go/testdata/script/mod_vendor.txt b/src/cmd/go/testdata/script/mod_vendor.txt index eae4f2946c..5d872c3c80 100644 --- a/src/cmd/go/testdata/script/mod_vendor.txt +++ b/src/cmd/go/testdata/script/mod_vendor.txt @@ -171,12 +171,6 @@ package m import _ "appengine" import _ "appengine/datastore" --- nonexistent.go -- -// +build alternatereality - -package m - -import _ "nonexistent.rsc.io" -- mypkg/go.mod -- module me -- mypkg/mydir/d.go -- From 55e23cb1fe18c6784b573a44bce4c798a1983c2f Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Fri, 2 Aug 2019 13:17:59 -0700 Subject: [PATCH 164/255] doc/go1.13: mention confusion between keep-alive timeout and deadline Updates #31449 Change-Id: I4d7075b20cd8171bc792e40b388f4215264a3317 Reviewed-on: https://go-review.googlesource.com/c/go/+/188819 Reviewed-by: Filippo Valsorda --- doc/go1.13.html | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/doc/go1.13.html b/doc/go1.13.html index c79a76f4b8..34a2d5e043 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -707,6 +707,24 @@ godoc

    The new field ListenConfig.KeepAlive specifies the keep-alive period for network connections accepted by the listener. + If this field is 0 (the default) TCP keep-alives will be enabled. + To disable them, set it to a negative value. +

    +

    + Note that the error returned from I/O on a connection that was + closed by a keep-alive timeout will have a + Timeout method that returns true if called. + This can make a keep-alive error difficult to distinguish from + an error returned due to a missed deadline as set by the + SetDeadline + method and similar methods. + Code that uses deadlines and checks for them with + the Timeout method or + with os.IsTimeout + may want to disable keep-alives, or + use errors.Is(syscall.ETIMEDOUT) (on Unix systems) + which will return true for a keep-alive timeout and false for a + deadline timeout.

    From d178c5888f06918e8dbd221f26c707e501a9fa98 Mon Sep 17 00:00:00 2001 From: Damien Neil Date: Fri, 2 Aug 2019 11:18:56 -0700 Subject: [PATCH 165/255] os: don't consult Is methods on non-syscall error types CL #163058 moves interpretation of platform-specific errors to the syscall package. Package syscall errors implement an Is method which os.IsPermission etc. consult. This results in an unintended semantic change to the os package predicate functions: The following program now prints 'true' where it used to print 'false': package main import "os" type myError struct{ error } func (e myError) Is(target error) bool { return target == os.ErrPermission } func main() { println(os.IsPermission(myError{})) } Change the os package error predicate functions to only examine syscall errors, avoiding this semantic change. This CL does retain one minor semantic change: On Plan9, os.IsPermission used to return true for any error with text containing the string "permission denied". It now only returns true for a syscall.ErrorString containing that text. Change-Id: I6b512b1de6ced46c2f1cc8d264fa2495ae7bf9f5 Reviewed-on: https://go-review.googlesource.com/c/go/+/188817 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor Reviewed-by: Russ Cox --- src/os/error.go | 3 ++- src/os/error_errno.go | 11 +++++++++++ src/os/error_plan9.go | 9 +++++++++ src/os/error_test.go | 10 ++++++++++ 4 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 src/os/error_errno.go create mode 100644 src/os/error_plan9.go diff --git a/src/os/error.go b/src/os/error.go index 09ba158677..0e8e2d47f8 100644 --- a/src/os/error.go +++ b/src/os/error.go @@ -115,7 +115,8 @@ func underlyingErrorIs(err, target error) bool { if err == target { return true } - e, ok := err.(interface{ Is(error) bool }) + // To preserve prior behavior, only examine syscall errors. + e, ok := err.(syscallErrorType) return ok && e.Is(target) } diff --git a/src/os/error_errno.go b/src/os/error_errno.go new file mode 100644 index 0000000000..31ae05a21e --- /dev/null +++ b/src/os/error_errno.go @@ -0,0 +1,11 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !plan9 + +package os + +import "syscall" + +type syscallErrorType = syscall.Errno diff --git a/src/os/error_plan9.go b/src/os/error_plan9.go new file mode 100644 index 0000000000..af6065db56 --- /dev/null +++ b/src/os/error_plan9.go @@ -0,0 +1,9 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package os + +import "syscall" + +type syscallErrorType = syscall.ErrorString diff --git a/src/os/error_test.go b/src/os/error_test.go index a03bd28b9a..3d921578fd 100644 --- a/src/os/error_test.go +++ b/src/os/error_test.go @@ -175,3 +175,13 @@ func TestPathErrorUnwrap(t *testing.T) { t.Error("errors.Is failed, wanted success") } } + +type myErrorIs struct{ error } + +func (e myErrorIs) Is(target error) bool { return target == e.error } + +func TestErrorIsMethods(t *testing.T) { + if os.IsPermission(myErrorIs{os.ErrPermission}) { + t.Error("os.IsPermission(err) = true when err.Is(os.ErrPermission), wanted false") + } +} From fc821667dd73987d1e579a813b50e403f8ff3c22 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Tue, 30 Jul 2019 06:28:57 -0700 Subject: [PATCH 166/255] os: change Readdirnames doc to follow that of Readdir The two methods act the same, so make their documentation similar so that people don't think they act differently. Change-Id: If224692ef50870faf855d789380a614d1e724132 Reviewed-on: https://go-review.googlesource.com/c/go/+/188137 Reviewed-by: Rob Pike --- src/os/dir.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/os/dir.go b/src/os/dir.go index 6c54456a21..1d7ced8061 100644 --- a/src/os/dir.go +++ b/src/os/dir.go @@ -26,7 +26,10 @@ func (f *File) Readdir(n int) ([]FileInfo, error) { return f.readdir(n) } -// Readdirnames reads and returns a slice of names from the directory f. +// Readdirnames reads the contents of the directory associated with file +// and returns a slice of up to n names of files in the directory, +// in directory order. Subsequent calls on the same file will yield +// further names. // // If n > 0, Readdirnames returns at most n names. In this case, if // Readdirnames returns an empty slice, it will return a non-nil error From a2f5d644d3a2903a82e527e3bca2c4bdff1d0750 Mon Sep 17 00:00:00 2001 From: Agniva De Sarker Date: Fri, 2 Aug 2019 21:58:29 +0530 Subject: [PATCH 167/255] doc/go1.13: add release notes for GOWASM environment variable Change-Id: I103a21ae0be8feb9447fa277483b7c2a8b5807e7 Reviewed-on: https://go-review.googlesource.com/c/go/+/188540 Reviewed-by: Andrew Bonventre Reviewed-by: Richard Musiol --- doc/go1.13.html | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/go1.13.html b/doc/go1.13.html index 34a2d5e043..bc44531133 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -105,6 +105,11 @@ Do not send CLs removing the interior tags from such phrases. Go 1.13 is the last release that will run on Native Client (NaCl).

    +

    + For GOARCH=wasm, the new environment variable GOWASM takes a comma-separated list of experimental features that the binary gets compiled with. + The valid values are documented here. +

    +

    AIX

    From 09c9d3a58a4aa1531ac516754f65c31aa8418d3f Mon Sep 17 00:00:00 2001 From: Shivani Singhal Date: Sun, 4 Aug 2019 12:47:55 +0530 Subject: [PATCH 168/255] net/http: fix typo in Response.Body's doc Fixes #33453. Change-Id: If0aa48f953633690884ddcff033b3be6d1d66443 Reviewed-on: https://go-review.googlesource.com/c/go/+/188541 Reviewed-by: Emmanuel Odeke --- src/net/http/response.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/net/http/response.go b/src/net/http/response.go index 2065a25015..cd9d796c26 100644 --- a/src/net/http/response.go +++ b/src/net/http/response.go @@ -66,7 +66,7 @@ type Response struct { // The Body is automatically dechunked if the server replied // with a "chunked" Transfer-Encoding. // - // As of Go 1.12, the Body will be also implement io.Writer + // As of Go 1.12, the Body will also implement io.Writer // on a successful "101 Switching Protocols" response, // as used by WebSockets and HTTP/2's "h2c" mode. Body io.ReadCloser From 6c74db40247737da2d3c3ffe1871d9cf67afd0a5 Mon Sep 17 00:00:00 2001 From: Mark Glines Date: Wed, 31 Jul 2019 03:46:15 +0000 Subject: [PATCH 169/255] cmd/go: look for .go.buildinfo section when looking for ELF version Based on original fix from Mark Glines in golang.org/cl/186737 Fixes #31861 Change-Id: Ibd583a3aa8f8b8eefade998aa2ac757b55140937 Reviewed-on: https://go-review.googlesource.com/c/go/+/188957 Run-TryBot: Andrew Bonventre TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- src/cmd/go/internal/version/exe.go | 5 +++++ src/cmd/go/testdata/script/version.txt | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/src/cmd/go/internal/version/exe.go b/src/cmd/go/internal/version/exe.go index 55da960c02..528433e325 100644 --- a/src/cmd/go/internal/version/exe.go +++ b/src/cmd/go/internal/version/exe.go @@ -103,6 +103,11 @@ func (x *elfExe) ReadData(addr, size uint64) ([]byte, error) { } func (x *elfExe) DataStart() uint64 { + for _, s := range x.f.Sections { + if s.Name == ".go.buildinfo" { + return s.Addr + } + } for _, p := range x.f.Progs { if p.Type == elf.PT_LOAD && p.Flags&(elf.PF_X|elf.PF_W) == elf.PF_W { return p.Vaddr diff --git a/src/cmd/go/testdata/script/version.txt b/src/cmd/go/testdata/script/version.txt index cb4881f7a7..9086f047e4 100644 --- a/src/cmd/go/testdata/script/version.txt +++ b/src/cmd/go/testdata/script/version.txt @@ -8,5 +8,12 @@ go version -m fortune.exe stdout '^\tpath\trsc.io/fortune' stdout '^\tmod\trsc.io/fortune\tv1.0.0' +go build -buildmode=pie -o external.exe rsc.io/fortune +go version external.exe +stdout '^external.exe: .+' +go version -m external.exe +stdout '^\tpath\trsc.io/fortune' +stdout '^\tmod\trsc.io/fortune\tv1.0.0' + -- go.mod -- module m From 6e11d81b4dd1c1d83d28f861db624f5340b8a6c5 Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Mon, 5 Aug 2019 12:29:51 -0400 Subject: [PATCH 170/255] cmd/go: adjust expected error message in TestScript/mod_invalid_version CL 188817 improved the error message for a nonexistent version in a dependency. This CL locks in that improvement in a regression test. Fixes #33474 Change-Id: I6246b4995adee966f24eaebe491d35830aea8370 Reviewed-on: https://go-review.googlesource.com/c/go/+/188977 Reviewed-by: Emmanuel Odeke --- src/cmd/go/testdata/script/mod_invalid_version.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cmd/go/testdata/script/mod_invalid_version.txt b/src/cmd/go/testdata/script/mod_invalid_version.txt index e6811d9fb7..76e0b43a73 100644 --- a/src/cmd/go/testdata/script/mod_invalid_version.txt +++ b/src/cmd/go/testdata/script/mod_invalid_version.txt @@ -141,7 +141,7 @@ go mod edit -require golang.org/x/text@v1.999999.0 go mod edit -replace golang.org/x/text@v1.999999.0=golang.org/x/text@v0.0.0-20170915032832-14c0d48ead0c cd outside ! go get -d golang.org/x/text@upgrade -stderr 'go get golang.org/x/text@upgrade: golang.org/x/text@v1.999999.0: invalid version: unknown revision v1.999999.0' +stderr 'go: example.com@v0.0.0 requires\n\tgolang.org/x/text@v1.999999.0: reading golang.org/x/text/go.mod at revision v1.999999.0: unknown revision v1.999999.0' cd .. go get -d golang.org/x/text@upgrade go list -m golang.org/x/text From d1338ec30e8c611395a6b253b441734adb9635de Mon Sep 17 00:00:00 2001 From: Keith Randall Date: Mon, 29 Jul 2019 14:41:00 -0700 Subject: [PATCH 171/255] syscall: include complete prototype of system calls The prototypes were truncated because they were on multiple lines of the source file. Copied from the STD lines for these functions in https://svn.freebsd.org/base/stable/12/sys/kern/syscalls.master Change-Id: I618a5444f1353aabee2758c06f86ad726185d19c Reviewed-on: https://go-review.googlesource.com/c/go/+/188077 Reviewed-by: Brad Fitzpatrick --- src/syscall/syscall_freebsd.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/syscall/syscall_freebsd.go b/src/syscall/syscall_freebsd.go index eb7208f5cc..3abc722c42 100644 --- a/src/syscall/syscall_freebsd.go +++ b/src/syscall/syscall_freebsd.go @@ -19,12 +19,12 @@ import ( const ( _SYS_FSTAT_FREEBSD12 = 551 // { int fstat(int fd, _Out_ struct stat *sb); } - _SYS_FSTATAT_FREEBSD12 = 552 // { int fstatat(int fd, _In_z_ char *path, \ - _SYS_GETDIRENTRIES_FREEBSD12 = 554 // { ssize_t getdirentries(int fd, \ - _SYS_STATFS_FREEBSD12 = 555 // { int statfs(_In_z_ char *path, \ - _SYS_FSTATFS_FREEBSD12 = 556 // { int fstatfs(int fd, \ - _SYS_GETFSSTAT_FREEBSD12 = 557 // { int getfsstat( \ - _SYS_MKNODAT_FREEBSD12 = 559 // { int mknodat(int fd, _In_z_ char *path, \ + _SYS_FSTATAT_FREEBSD12 = 552 // { int fstatat(int fd, _In_z_ char *path, _Out_ struct stat *buf, int flag); } + _SYS_GETDIRENTRIES_FREEBSD12 = 554 // { ssize_t getdirentries(int fd, _Out_writes_bytes_(count) char *buf, size_t count, _Out_ off_t *basep); } + _SYS_STATFS_FREEBSD12 = 555 // { int statfs(_In_z_ char *path, _Out_ struct statfs *buf); } + _SYS_FSTATFS_FREEBSD12 = 556 // { int fstatfs(int fd, _Out_ struct statfs *buf); } + _SYS_GETFSSTAT_FREEBSD12 = 557 // { int getfsstat(_Out_writes_bytes_opt_(bufsize) struct statfs *buf, long bufsize, int mode); } + _SYS_MKNODAT_FREEBSD12 = 559 // { int mknodat(int fd, _In_z_ char *path, mode_t mode, dev_t dev); } ) // See https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/versions.html. From a4c825156d0a3817377a2b7e5b30ab50e11440ab Mon Sep 17 00:00:00 2001 From: Jonathan Amsterdam Date: Mon, 5 Aug 2019 10:14:40 -0400 Subject: [PATCH 172/255] doc/go1.13.html: describe error-value additions A brief description at the top the Standard Library section of the changes to support error wrapping. Fixes #33365. Change-Id: Id5a3b2fe148d9bfb949f2cfc9e5d8a1613a0e219 Reviewed-on: https://go-review.googlesource.com/c/go/+/188798 Reviewed-by: Ian Lance Taylor --- doc/go1.13.html | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/doc/go1.13.html b/doc/go1.13.html index bc44531133..f38474b327 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -525,6 +525,37 @@ godoc crypto/ed25519 when used with Go 1.13+.

    +

    Error wrapping

    + +

    + Go 1.13 contains support for error wrapping, as first proposed in + the + Error Values proposal and discussed on the + associated issue. +

    +

    + An error e can wrap another error w by providing + an Unwrap method that returns w. Both e + and w are available to programs, allowing e to provide + additional context to w or to reinterpret it while still allowing + programs to make decisions based on w. +

    +

    + To support wrapping, fmt.Errorf now has a %w + verb for creating wrapped errors, and three new functions in + the errors package ( + errors.Unwrap, + errors.Is and + errors.As) simplify unwrapping + and inspecting wrapped errors. +

    +

    + For more information, read the errors package + documentation, or see + the Error Value FAQ. + There will soon be a blog post as well. +

    +

    Minor changes to the library

    @@ -612,7 +643,8 @@ godoc

    - The new function As finds the first error in a given error’s chain + The new function As finds the first + error in a given error’s chain (sequence of wrapped errors) that matches a given target’s type, and if so, sets the target to that error value.

    From 546ea78efa159680dde0df42f1f2091ccafef4df Mon Sep 17 00:00:00 2001 From: Jonathan Amsterdam Date: Fri, 2 Aug 2019 06:43:20 -0400 Subject: [PATCH 173/255] errors: improve doc Explain wrapping and how to use Is and As in the package doc. Explain "chain" in Is and As. Updates #33364. Change-Id: Ic06362106dbd129e33dd47e63176ee5355492086 Reviewed-on: https://go-review.googlesource.com/c/go/+/188737 Reviewed-by: Rob Pike --- src/errors/errors.go | 49 ++++++++++++++++++++++++++++++++++++++++++++ src/errors/wrap.go | 6 ++++++ 2 files changed, 55 insertions(+) diff --git a/src/errors/errors.go b/src/errors/errors.go index b8a46921be..85d4260762 100644 --- a/src/errors/errors.go +++ b/src/errors/errors.go @@ -3,9 +3,58 @@ // license that can be found in the LICENSE file. // Package errors implements functions to manipulate errors. +// +// The New function creates errors whose only content is a text message. +// +// The Unwrap, Is and As functions work on errors that may wrap other errors. +// An error wraps another error if its type has the method +// +// Unwrap() error +// +// If e.Unwrap() returns a non-nil error w, then we say that e wraps w. +// +// A simple way to create wrapped errors is to call fmt.Errorf and apply the %w verb +// to the error argument: +// +// fmt.Errorf("... %w ...", ..., err, ...).Unwrap() +// +// returns err. +// +// Unwrap unpacks wrapped errors. If its argument's type has an +// Unwrap method, it calls the method once. Otherwise, it returns nil. +// +// Is unwraps its first argument sequentially looking for an error that matches the +// second. It reports whether it finds a match. It should be used in preference to +// simple equality checks: +// +// if errors.Is(err, os.ErrExist) +// +// is preferable to +// +// if err == os.ErrExist +// +// because the former will succeed if err wraps os.ErrExist. +// +// As unwraps its first argument sequentially looking for an error that can be +// assigned to its second argument, which must be a pointer. If it succeeds, it +// performs the assignment and returns true. Otherwise, it returns false. The form +// +// var perr *os.PathError +// if errors.As(err, &perr) { +// fmt.Println(perr.Path) +// } +// +// is preferable to +// +// if perr, ok := err.(*os.PathError); ok { +// fmt.Println(perr.Path) +// } +// +// because the former will succeed if err wraps an *os.PathError. package errors // New returns an error that formats as the given text. +// Each call to New returns a distinct error value even if the text is identical. func New(text string) error { return &errorString{text} } diff --git a/src/errors/wrap.go b/src/errors/wrap.go index 666d1ff207..240da37c29 100644 --- a/src/errors/wrap.go +++ b/src/errors/wrap.go @@ -23,6 +23,9 @@ func Unwrap(err error) error { // Is reports whether any error in err's chain matches target. // +// The chain consists of err itself followed by the sequence of errors obtained by +// repeatedly calling Unwrap. +// // An error is considered to match a target if it is equal to that target or if // it implements a method Is(error) bool such that Is(target) returns true. func Is(err, target error) bool { @@ -50,6 +53,9 @@ func Is(err, target error) bool { // As finds the first error in err's chain that matches target, and if so, sets // target to that error value and returns true. // +// The chain consists of err itself followed by the sequence of errors obtained by +// repeatedly calling Unwrap. +// // An error matches target if the error's concrete value is assignable to the value // pointed to by target, or if the error has a method As(interface{}) bool such that // As(target) returns true. In the latter case, the As method is responsible for From 8e82624e691387eed2261e6c34decb27348f4685 Mon Sep 17 00:00:00 2001 From: Bharath Thiruveedula Date: Tue, 6 Aug 2019 09:26:48 +0530 Subject: [PATCH 174/255] net: fix the docs in IPNet.String Fixes #33433 Change-Id: Idb3961685a3cfd13ba26155a1d64fc24cc418fdb Reviewed-on: https://go-review.googlesource.com/c/go/+/189117 Reviewed-by: Ian Lance Taylor --- src/net/ip.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/net/ip.go b/src/net/ip.go index cf90c0cd54..1a1d0e7dba 100644 --- a/src/net/ip.go +++ b/src/net/ip.go @@ -513,12 +513,12 @@ func (n *IPNet) Contains(ip IP) bool { // Network returns the address's network name, "ip+net". func (n *IPNet) Network() string { return "ip+net" } -// String returns the CIDR notation of n like "192.0.2.1/24" +// String returns the CIDR notation of n like "192.0.2.0/24" // or "2001:db8::/48" as defined in RFC 4632 and RFC 4291. // If the mask is not in the canonical form, it returns the // string which consists of an IP address, followed by a slash // character and a mask expressed as hexadecimal form with no -// punctuation like "198.51.100.1/c000ff00". +// punctuation like "198.51.100.0/c000ff00". func (n *IPNet) String() string { nn, m := networkNumberAndMask(n) if nn == nil || m == nil { From 46f99ce7ea97d11b0a1a079da8dda0f51df2a2d2 Mon Sep 17 00:00:00 2001 From: Jay Conrod Date: Tue, 6 Aug 2019 13:12:23 -0400 Subject: [PATCH 175/255] cmd/go: look for __go_buildinfo section when looking for Mach-O version This mirrors the ELF fix in CL 188957. TestScript/version failed on darwin after that change. Fixes #31861 Change-Id: I4ce953ebec8dd5fa47e26d373c59d7e290b75a34 Reviewed-on: https://go-review.googlesource.com/c/go/+/189159 Run-TryBot: Jay Conrod Reviewed-by: Bryan C. Mills TryBot-Result: Gobot Gobot --- src/cmd/go/internal/version/exe.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/cmd/go/internal/version/exe.go b/src/cmd/go/internal/version/exe.go index 528433e325..0e7deef149 100644 --- a/src/cmd/go/internal/version/exe.go +++ b/src/cmd/go/internal/version/exe.go @@ -213,7 +213,13 @@ func (x *machoExe) ReadData(addr, size uint64) ([]byte, error) { } func (x *machoExe) DataStart() uint64 { - // Assume data is first non-empty writable segment. + // Look for section named "__go_buildinfo". + for _, sec := range x.f.Sections { + if sec.Name == "__go_buildinfo" { + return sec.Addr + } + } + // Try the first non-empty writable segment. const RW = 3 for _, load := range x.f.Loads { seg, ok := load.(*macho.Segment) From 0ed86cda677f04a9ca01498dfa9722f234f984d2 Mon Sep 17 00:00:00 2001 From: Marcel van Lohuizen Date: Mon, 5 Aug 2019 17:57:29 +0200 Subject: [PATCH 176/255] doc: mention Unicode update in release notes Fixes #33472 Change-Id: Iab69e69589f2e017f4cf9770858884b1a570c89e Reviewed-on: https://go-review.googlesource.com/c/go/+/188799 Reviewed-by: Andrew Bonventre --- doc/go1.13.html | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/doc/go1.13.html b/doc/go1.13.html index f38474b327..3b9da340aa 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -992,3 +992,13 @@ godoc

    +
    unicode
    +
    +

    + The unicode package and associated + support throughout the system has been upgraded from Unicode 10.0 to + Unicode 11.0, + which adds 684 new characters, including seven new scripts, and 66 new emoji. +

    + +
    From e37a1b1ca6afcbe3b02d2dfd599ad1d3d926ec34 Mon Sep 17 00:00:00 2001 From: Jay Conrod Date: Tue, 6 Aug 2019 12:44:30 -0400 Subject: [PATCH 177/255] cmd/go: improve error message for missing import starting with cmd/ In modload.Import, confirm that the import path does not start with "cmd/" before calling QueryPackage, which returns a less helpful error. In load.loadPackageData, don't wrap errors with "unknown import path". The wrapped error should always include the import path, and it's also repeated in the PackageError wrapper. Fixes #31031 Change-Id: I071efa22e3842c62831d096f888a8006811fe724 Reviewed-on: https://go-review.googlesource.com/c/go/+/189157 Run-TryBot: Jay Conrod TryBot-Result: Gobot Gobot Reviewed-by: Bryan C. Mills --- src/cmd/go.sum | 2 ++ src/cmd/go/internal/load/pkg.go | 2 +- src/cmd/go/internal/modload/import.go | 7 +++++++ src/cmd/go/testdata/script/cmd_import_error.txt | 16 ++++++++++++++++ 4 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 src/cmd/go/testdata/script/cmd_import_error.txt diff --git a/src/cmd/go.sum b/src/cmd/go.sum index 6ca1dee5ed..da3123b9f0 100644 --- a/src/cmd/go.sum +++ b/src/cmd/go.sum @@ -7,11 +7,13 @@ golang.org/x/arch v0.0.0-20181203225421-5a4828bb7045/go.mod h1:cYlCBUl1MsqxdiKgm golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c h1:Vj5n4GlwjmQteupaxJ9+0FNOmBrHfq7vN4btdGoDZgI= golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/net v0.0.0-20190311183353-d8887717615a h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82 h1:vsphBvatvfbhlb4PO1BYSr9dzugGxJ/SQHoNufZJq1w= golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/tools v0.0.0-20190611154301-25a4f137592f h1:6awn5JC4pwVI5HiBqs7MDtRxnwV9PpO5iSA9v6P09pA= golang.org/x/tools v0.0.0-20190611154301-25a4f137592f/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= diff --git a/src/cmd/go/internal/load/pkg.go b/src/cmd/go/internal/load/pkg.go index d52df046ff..27efc7c04a 100644 --- a/src/cmd/go/internal/load/pkg.go +++ b/src/cmd/go/internal/load/pkg.go @@ -653,7 +653,7 @@ func loadPackageData(path, parentPath, parentDir, parentRoot string, parentIsStd } } else if r.err != nil { data.p = new(build.Package) - data.err = fmt.Errorf("unknown import path %q: %v", r.path, r.err) + data.err = r.err } else if cfg.ModulesEnabled && path != "unsafe" { data.p = new(build.Package) data.err = fmt.Errorf("unknown import path %q: internal error: module loader did not resolve import", r.path) diff --git a/src/cmd/go/internal/modload/import.go b/src/cmd/go/internal/modload/import.go index dacc876701..70add3507a 100644 --- a/src/cmd/go/internal/modload/import.go +++ b/src/cmd/go/internal/modload/import.go @@ -22,6 +22,7 @@ import ( "cmd/go/internal/par" "cmd/go/internal/search" "cmd/go/internal/semver" + "cmd/go/internal/str" ) type ImportMissingError struct { @@ -35,6 +36,9 @@ type ImportMissingError struct { func (e *ImportMissingError) Error() string { if e.Module.Path == "" { + if str.HasPathPrefix(e.ImportPath, "cmd") { + return fmt.Sprintf("package %s is not in GOROOT (%s)", e.ImportPath, filepath.Join(cfg.GOROOT, "src", e.ImportPath)) + } return "cannot find module providing package " + e.ImportPath } return "missing module for import: " + e.Module.Path + "@" + e.Module.Version + " provides " + e.ImportPath @@ -74,6 +78,9 @@ func Import(path string) (m module.Version, dir string, err error) { dir := filepath.Join(cfg.GOROOT, "src", path) return module.Version{}, dir, nil } + if str.HasPathPrefix(path, "cmd") { + return module.Version{}, "", &ImportMissingError{ImportPath: path} + } // -mod=vendor is special. // Everything must be in the main module or the main module's vendor directory. diff --git a/src/cmd/go/testdata/script/cmd_import_error.txt b/src/cmd/go/testdata/script/cmd_import_error.txt new file mode 100644 index 0000000000..ba94f9bd3e --- /dev/null +++ b/src/cmd/go/testdata/script/cmd_import_error.txt @@ -0,0 +1,16 @@ +env GO111MODULE=on + +# Regression test for golang.org/issue/31031: +# Importing or loading a non-existent package in cmd/ should print +# a clear error in module mode. + +! go list cmd/unknown +stderr '^can''t load package: package cmd/unknown: package cmd/unknown is not in GOROOT \('$GOROOT'[/\\]src[/\\]cmd[/\\]unknown\)$' + +go list -f '{{range .DepsErrors}}{{.Err}}{{end}}' x.go +stdout '^package cmd/unknown is not in GOROOT \('$GOROOT'[/\\]src[/\\]cmd[/\\]unknown\)$' + +-- x.go -- +package x + +import _ "cmd/unknown" From 0ca4f6be35d2abf54128b57c3aa1a1fcbd5adfe3 Mon Sep 17 00:00:00 2001 From: David Finkel Date: Wed, 31 Jul 2019 09:10:28 -0400 Subject: [PATCH 178/255] runtime/pprof: Mention goroutine label heritability Document goroutine label inheritance. Goroutine labels are copied upon goroutine creation and there is a test enforcing this, but it was not mentioned in the docstrings for `Do` or `SetGoroutineLabels`. Add notes to both of those functions' docstrings so it's clear that one does not need to set labels as soon as a new goroutine is spawned if they want to propagate tags. Updates #32223 Updates #23458 Change-Id: Idfa33031af0104b884b03ca855ac82b98500c8b4 Reviewed-on: https://go-review.googlesource.com/c/go/+/189317 Reviewed-by: Ian Lance Taylor --- src/runtime/pprof/runtime.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/runtime/pprof/runtime.go b/src/runtime/pprof/runtime.go index e6aace83e2..b71bbad9a6 100644 --- a/src/runtime/pprof/runtime.go +++ b/src/runtime/pprof/runtime.go @@ -16,6 +16,7 @@ func runtime_setProfLabel(labels unsafe.Pointer) func runtime_getProfLabel() unsafe.Pointer // SetGoroutineLabels sets the current goroutine's labels to match ctx. +// A new goroutine inherits the labels of the goroutine that created it. // This is a lower-level API than Do, which should be used instead when possible. func SetGoroutineLabels(ctx context.Context) { ctxLabels, _ := ctx.Value(labelContextKey{}).(*labelMap) @@ -24,6 +25,7 @@ func SetGoroutineLabels(ctx context.Context) { // Do calls f with a copy of the parent context with the // given labels added to the parent's label map. +// Goroutines spawned while executing f will inherit the augmented label-set. // Each key/value pair in labels is inserted into the label map in the // order provided, overriding any previous value for the same key. // The augmented label map will be set for the duration of the call to f From e9782bdebd7b55d8c40961dca10f5e91b06e9016 Mon Sep 17 00:00:00 2001 From: Derek Phan Date: Wed, 7 Aug 2019 23:42:03 +0000 Subject: [PATCH 179/255] path: fix mismatch between error message and corresponding test function Change-Id: Ib0ae6e3e678dc7ace21b891e946ffc6bc2a78835 GitHub-Last-Rev: 8c6704ea8c032072ac339dc9d1c6ec78aec15b2a GitHub-Pull-Request: golang/go#33534 Reviewed-on: https://go-review.googlesource.com/c/go/+/189378 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- src/path/path_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/path/path_test.go b/src/path/path_test.go index 85b2450a62..2a3635300e 100644 --- a/src/path/path_test.go +++ b/src/path/path_test.go @@ -138,7 +138,7 @@ var jointests = []JoinTest{ func TestJoin(t *testing.T) { for _, test := range jointests { if p := Join(test.elem...); p != test.path { - t.Errorf("join(%q) = %q, want %q", test.elem, p, test.path) + t.Errorf("Join(%q) = %q, want %q", test.elem, p, test.path) } } } From f4be93a8f1ab2cbcdec5e0502fdf20de0b279265 Mon Sep 17 00:00:00 2001 From: Alberto Donizetti Date: Wed, 7 Aug 2019 20:11:46 +0200 Subject: [PATCH 180/255] doc: update list of archs supporting -race Change-Id: Id0a55674a16671aaee99182d9096a9263f7a80b3 Reviewed-on: https://go-review.googlesource.com/c/go/+/189357 Reviewed-by: Ian Lance Taylor --- doc/articles/race_detector.html | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/doc/articles/race_detector.html b/doc/articles/race_detector.html index 6defd98f96..2f18acfbfb 100644 --- a/doc/articles/race_detector.html +++ b/doc/articles/race_detector.html @@ -377,8 +377,11 @@ func (w *Watchdog) Start() {

    Supported Systems

    -The race detector runs on darwin/amd64, freebsd/amd64, -linux/amd64, and windows/amd64. + The race detector runs on + linux/amd64, linux/ppc64le, + linux/arm64, freebsd/amd64, + netbsd/amd64, darwin/amd64, + and windows/amd64.

    Runtime Overhead

    From fc23e216319f9e4338720dbd28e1cdedc0896b4d Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Thu, 8 Aug 2019 14:08:48 -0400 Subject: [PATCH 181/255] api/go1.13: add debug/elf.Symbol fields added in CL 184099 These will need auditing per #32813 like a few others in go1.13.txt, but in the meantime they break the API check for beta/RC releases. Updates #32813 Updates #31912 Change-Id: I3b0501b46324ee6fc0985f84971b99b772c7e4a4 Reviewed-on: https://go-review.googlesource.com/c/go/+/189458 Reviewed-by: Dmitri Shuralyov --- api/go1.13.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/api/go1.13.txt b/api/go1.13.txt index d964d64019..bb0f683b37 100644 --- a/api/go1.13.txt +++ b/api/go1.13.txt @@ -39,6 +39,8 @@ pkg debug/dwarf, method (*UnsupportedType) String() string pkg debug/dwarf, type UnsupportedType struct pkg debug/dwarf, type UnsupportedType struct, embedded CommonType pkg debug/dwarf, type UnsupportedType struct, Tag Tag +pkg debug/elf, type Symbol struct, Library string +pkg debug/elf, type Symbol struct, Version string pkg encoding/csv, method (*ParseError) Unwrap() error pkg encoding/json, method (*MarshalerError) Unwrap() error pkg errors, func As(error, interface{}) bool From c5178ef69eedce1374e684212ea9cdae6220e0f6 Mon Sep 17 00:00:00 2001 From: Joe Tsai Date: Thu, 8 Aug 2019 06:01:24 +0000 Subject: [PATCH 182/255] Revert "go/ast: fix SortImports to handle block comments" This reverts CL 162337. Reason for revert: this introduces a regression Fixes #33538 Updates #18929 Change-Id: Ib2320a840c6d3ec7912e8f414e933d04fbf11ab4 Reviewed-on: https://go-review.googlesource.com/c/go/+/189379 Reviewed-by: Robert Griesemer --- src/cmd/gofmt/testdata/import.golden | 60 --------------------- src/cmd/gofmt/testdata/import.input | 62 --------------------- src/go/ast/import.go | 81 ++++++++-------------------- 3 files changed, 23 insertions(+), 180 deletions(-) diff --git a/src/cmd/gofmt/testdata/import.golden b/src/cmd/gofmt/testdata/import.golden index f7d742e3e8..51d7be79df 100644 --- a/src/cmd/gofmt/testdata/import.golden +++ b/src/cmd/gofmt/testdata/import.golden @@ -1,4 +1,3 @@ -// package comment package main import ( @@ -21,10 +20,6 @@ import ( "io" ) -// We reset the line numbering to test that -// the formatting works independent of line directives -//line :19 - import ( "errors" "fmt" @@ -129,58 +124,3 @@ import ( "dedup_by_group" ) - -import ( - "fmt" // for Printf - /* comment */ io1 "io" - /* comment */ io2 "io" - /* comment */ "log" -) - -import ( - "fmt" - /* comment */ io1 "io" - /* comment */ io2 "io" // hello - "math" /* right side */ - // end -) - -import ( - "errors" // for New - "fmt" - /* comment */ io1 "io" /* before */ // after - io2 "io" // another - // end -) - -import ( - "errors" // for New - /* left */ "fmt" /* right */ - "log" // for Fatal - /* left */ "math" /* right */ -) - -import /* why */ /* comment here? */ ( - /* comment */ "fmt" - "math" -) - -// Reset it again -//line :100 - -// Dedup with different import styles -import ( - "path" - . "path" - _ "path" - pathpkg "path" -) - -/* comment */ -import ( - "fmt" - "math" // for Abs - // This is a new run - "errors" - "fmt" -) diff --git a/src/cmd/gofmt/testdata/import.input b/src/cmd/gofmt/testdata/import.input index 6e3a3a3bed..9a4b09dbf9 100644 --- a/src/cmd/gofmt/testdata/import.input +++ b/src/cmd/gofmt/testdata/import.input @@ -1,4 +1,3 @@ -// package comment package main import ( @@ -21,10 +20,6 @@ import ( "io" ) -// We reset the line numbering to test that -// the formatting works independent of line directives -//line :19 - import ( "fmt" "math" @@ -134,60 +129,3 @@ import ( "dedup_by_group" ) - -import ( - /* comment */ io1 "io" - "fmt" // for Printf - /* comment */ "log" - /* comment */ io2 "io" -) - -import ( - /* comment */ io2 "io" // hello - /* comment */ io1 "io" - "math" /* right side */ - "fmt" - // end -) - -import ( - /* comment */ io1 "io" /* before */ // after - "fmt" - "errors" // for New - io2 "io" // another - // end -) - -import ( - /* left */ "fmt" /* right */ - "errors" // for New - /* left */ "math" /* right */ - "log" // for Fatal -) - -import /* why */ /* comment here? */ ( - /* comment */ "fmt" - "math" -) - -// Reset it again -//line :100 - -// Dedup with different import styles -import ( - "path" - . "path" - _ "path" - "path" - pathpkg "path" -) - -/* comment */ -import ( - "math" // for Abs - "fmt" - // This is a new run - "errors" - "fmt" - "errors" -) diff --git a/src/go/ast/import.go b/src/go/ast/import.go index 7102884c85..be23c7fc43 100644 --- a/src/go/ast/import.go +++ b/src/go/ast/import.go @@ -30,7 +30,7 @@ func SortImports(fset *token.FileSet, f *File) { i := 0 specs := d.Specs[:0] for j, s := range d.Specs { - if j > i && lineAt(fset, s.Pos()) > 1+lineAt(fset, d.Specs[j-1].End()) { + if j > i && fset.Position(s.Pos()).Line > 1+fset.Position(d.Specs[j-1].End()).Line { // j begins a new run. End this one. specs = append(specs, sortSpecs(fset, f, d.Specs[i:j])...) i = j @@ -42,8 +42,8 @@ func SortImports(fset *token.FileSet, f *File) { // Deduping can leave a blank line before the rparen; clean that up. if len(d.Specs) > 0 { lastSpec := d.Specs[len(d.Specs)-1] - lastLine := lineAt(fset, lastSpec.Pos()) - rParenLine := lineAt(fset, d.Rparen) + lastLine := fset.Position(lastSpec.Pos()).Line + rParenLine := fset.Position(d.Rparen).Line for rParenLine > lastLine+1 { rParenLine-- fset.File(d.Rparen).MergeLine(rParenLine) @@ -52,10 +52,6 @@ func SortImports(fset *token.FileSet, f *File) { } } -func lineAt(fset *token.FileSet, pos token.Pos) int { - return fset.PositionFor(pos, false).Line -} - func importPath(s Spec) string { t, err := strconv.Unquote(s.(*ImportSpec).Path.Value) if err == nil { @@ -93,11 +89,6 @@ type posSpan struct { End token.Pos } -type cgPos struct { - left bool // true if comment is to the left of the spec, false otherwise. - cg *CommentGroup -} - func sortSpecs(fset *token.FileSet, f *File, specs []Spec) []Spec { // Can't short-circuit here even if specs are already sorted, // since they might yet need deduplication. @@ -113,57 +104,39 @@ func sortSpecs(fset *token.FileSet, f *File, specs []Spec) []Spec { } // Identify comments in this range. - begSpecs := pos[0].Start - endSpecs := pos[len(pos)-1].End - beg := fset.File(begSpecs).LineStart(lineAt(fset, begSpecs)) - end := fset.File(endSpecs).LineStart(lineAt(fset, endSpecs) + 1) // beginning of next line - first := len(f.Comments) - last := -1 + // Any comment from pos[0].Start to the final line counts. + lastLine := fset.Position(pos[len(pos)-1].End).Line + cstart := len(f.Comments) + cend := len(f.Comments) for i, g := range f.Comments { - if g.End() >= end { + if g.Pos() < pos[0].Start { + continue + } + if i < cstart { + cstart = i + } + if fset.Position(g.End()).Line > lastLine { + cend = i break } - // g.End() < end - if beg <= g.Pos() { - // comment is within the range [beg, end[ of import declarations - if i < first { - first = i - } - if i > last { - last = i - } - } } + comments := f.Comments[cstart:cend] - var comments []*CommentGroup - if last >= 0 { - comments = f.Comments[first : last+1] - } - - // Assign each comment to the import spec on the same line. - importComments := map[*ImportSpec][]cgPos{} + // Assign each comment to the import spec preceding it. + importComments := map[*ImportSpec][]*CommentGroup{} specIndex := 0 for _, g := range comments { for specIndex+1 < len(specs) && pos[specIndex+1].Start <= g.Pos() { specIndex++ } - var left bool - // A block comment can appear before the first import spec. - if specIndex == 0 && pos[specIndex].Start > g.Pos() { - left = true - } else if specIndex+1 < len(specs) && // Or it can appear on the left of an import spec. - lineAt(fset, pos[specIndex].Start)+1 == lineAt(fset, g.Pos()) { - specIndex++ - left = true - } s := specs[specIndex].(*ImportSpec) - importComments[s] = append(importComments[s], cgPos{left: left, cg: g}) + importComments[s] = append(importComments[s], g) } // Sort the import specs by import path. // Remove duplicates, when possible without data loss. // Reassign the import paths to have the same position sequence. - // Reassign each comment to the spec on the same line. + // Reassign each comment to abut the end of its spec. // Sort the comments by new position. sort.Slice(specs, func(i, j int) bool { ipath := importPath(specs[i]) @@ -187,7 +160,7 @@ func sortSpecs(fset *token.FileSet, f *File, specs []Spec) []Spec { deduped = append(deduped, s) } else { p := s.Pos() - fset.File(p).MergeLine(lineAt(fset, p)) + fset.File(p).MergeLine(fset.Position(p).Line) } } specs = deduped @@ -201,16 +174,8 @@ func sortSpecs(fset *token.FileSet, f *File, specs []Spec) []Spec { s.Path.ValuePos = pos[i].Start s.EndPos = pos[i].End for _, g := range importComments[s] { - for _, c := range g.cg.List { - if g.left { - c.Slash = pos[i].Start - 1 - } else { - // An import spec can have both block comment and a line comment - // to its right. In that case, both of them will have the same pos. - // But while formatting the AST, the line comment gets moved to - // after the block comment. - c.Slash = pos[i].End - } + for _, c := range g.List { + c.Slash = pos[i].End } } } From 1dc0110bf725640a9b912e3d31e6654ed1c4da9d Mon Sep 17 00:00:00 2001 From: Jay Conrod Date: Wed, 7 Aug 2019 16:27:39 -0400 Subject: [PATCH 183/255] cmd/go: improve 'go mod download' and 'go list -m' error messages modload.ListModules now wraps errors as module.ModuleError as appropriate. The resulting errors always include the module path and will include the version, if known. 'go mod download' no longer ignores errors reported by ListModules. Previously, it started requesting module info, go.mod, and zip. Those requests would fail, overwriting the original failure. They were usually less descriptive. 'go mod download' with a module not in the build list (and no version query) is now an error. Previously, this was silently ignored. Fixes #30743 Change-Id: Icee8c1c6c5240de135a8b6ba42d6bbcdb757cdac Reviewed-on: https://go-review.googlesource.com/c/go/+/189323 Run-TryBot: Jay Conrod TryBot-Result: Gobot Gobot Reviewed-by: Bryan C. Mills --- src/cmd/go/internal/list/list.go | 2 +- src/cmd/go/internal/modcmd/download.go | 20 +++++++++--- src/cmd/go/internal/modload/list.go | 35 ++++++++++++++------- src/cmd/go/testdata/script/mod_download.txt | 10 ++++++ src/cmd/go/testdata/script/mod_list.txt | 8 ++--- src/cmd/go/testdata/script/mod_query.txt | 2 +- 6 files changed, 55 insertions(+), 22 deletions(-) diff --git a/src/cmd/go/internal/list/list.go b/src/cmd/go/internal/list/list.go index 4a6633d9a1..a5f1abe64a 100644 --- a/src/cmd/go/internal/list/list.go +++ b/src/cmd/go/internal/list/list.go @@ -390,7 +390,7 @@ func runList(cmd *base.Command, args []string) { if !*listE { for _, m := range mods { if m.Error != nil { - base.Errorf("go list -m %s: %v", m.Path, m.Error.Err) + base.Errorf("go list -m: %v", m.Error.Err) } } base.ExitIfErrors() diff --git a/src/cmd/go/internal/modcmd/download.go b/src/cmd/go/internal/modcmd/download.go index 1137982e47..60d0d5b6e2 100644 --- a/src/cmd/go/internal/modcmd/download.go +++ b/src/cmd/go/internal/modcmd/download.go @@ -89,7 +89,8 @@ func runDownload(cmd *base.Command, args []string) { if info.Replace != nil { info = info.Replace } - if info.Version == "" { + if info.Version == "" && info.Error == nil { + // main module continue } m := &moduleJSON{ @@ -97,6 +98,10 @@ func runDownload(cmd *base.Command, args []string) { Version: info.Version, } mods = append(mods, m) + if info.Error != nil { + m.Error = info.Error.Err + continue + } work.Add(m) } @@ -110,12 +115,17 @@ func runDownload(cmd *base.Command, args []string) { // downloading the modules. var latestArgs []string for _, m := range mods { + if m.Error != "" { + continue + } latestArgs = append(latestArgs, m.Path+"@latest") } - for _, info := range modload.ListModules(latestArgs, listU, listVersions) { - if info.Version != "" { - latest[info.Path] = info.Version + if len(latestArgs) > 0 { + for _, info := range modload.ListModules(latestArgs, listU, listVersions) { + if info.Version != "" { + latest[info.Path] = info.Version + } } } } @@ -169,7 +179,7 @@ func runDownload(cmd *base.Command, args []string) { } else { for _, m := range mods { if m.Error != "" { - base.Errorf("%s@%s: %s\n", m.Path, m.Version, m.Error) + base.Errorf("%s", m.Error) } } base.ExitIfErrors() diff --git a/src/cmd/go/internal/modload/list.go b/src/cmd/go/internal/modload/list.go index c571ddc5f5..35d0c28cde 100644 --- a/src/cmd/go/internal/modload/list.go +++ b/src/cmd/go/internal/modload/list.go @@ -5,6 +5,7 @@ package modload import ( + "errors" "fmt" "os" "strings" @@ -70,9 +71,7 @@ func listModules(args []string, listVersions bool) []*modinfo.ModulePublic { mods = append(mods, &modinfo.ModulePublic{ Path: path, Version: vers, - Error: &modinfo.ModuleError{ - Err: err.Error(), - }, + Error: modinfoError(path, vers, err), }) continue } @@ -116,19 +115,15 @@ func listModules(args []string, listVersions bool) []*modinfo.ModulePublic { mods = append(mods, moduleInfo(module.Version{Path: arg, Version: info.Version}, false)) } else { mods = append(mods, &modinfo.ModulePublic{ - Path: arg, - Error: &modinfo.ModuleError{ - Err: err.Error(), - }, + Path: arg, + Error: modinfoError(arg, "", err), }) } continue } mods = append(mods, &modinfo.ModulePublic{ - Path: arg, - Error: &modinfo.ModuleError{ - Err: fmt.Sprintf("module %q is not a known dependency", arg), - }, + Path: arg, + Error: modinfoError(arg, "", errors.New("not a known dependency")), }) } else { fmt.Fprintf(os.Stderr, "warning: pattern %q matched no module dependencies\n", arg) @@ -138,3 +133,21 @@ func listModules(args []string, listVersions bool) []*modinfo.ModulePublic { return mods } + +// modinfoError wraps an error to create an error message in +// modinfo.ModuleError with minimal redundancy. +func modinfoError(path, vers string, err error) *modinfo.ModuleError { + var nerr *NoMatchingVersionError + var merr *module.ModuleError + if errors.As(err, &nerr) { + // NoMatchingVersionError contains the query, so we don't mention the + // query again in ModuleError. + err = &module.ModuleError{Path: path, Err: err} + } else if !errors.As(err, &merr) { + // If the error does not contain path and version, wrap it in a + // module.ModuleError. + err = &module.ModuleError{Path: path, Version: vers, Err: err} + } + + return &modinfo.ModuleError{Err: err.Error()} +} diff --git a/src/cmd/go/testdata/script/mod_download.txt b/src/cmd/go/testdata/script/mod_download.txt index 75e4acbab0..9eb3140c33 100644 --- a/src/cmd/go/testdata/script/mod_download.txt +++ b/src/cmd/go/testdata/script/mod_download.txt @@ -85,6 +85,16 @@ exists $GOPATH/pkg/mod/cache/download/rsc.io/quote/@v/v1.5.3-pre1.zip go mod download -json rsc.io/quote@v1.5.1 exists $GOPATH/pkg/mod/cache/download/rsc.io/quote/@v/v1.5.1.zip +# download reports errors encountered when locating modules +! go mod download bad/path +stderr '^module bad/path: not a known dependency$' +! go mod download bad/path@latest +stderr '^bad/path@latest: malformed module path "bad/path": missing dot in first path element$' +! go mod download rsc.io/quote@v1.999.999 +stderr '^rsc.io/quote@v1.999.999: reading .*/v1.999.999.info: 404 Not Found$' +! go mod download -json bad/path +stdout '^\t"Error": "module bad/path: not a known dependency"' + # allow go mod download without go.mod env GO111MODULE=auto rm go.mod diff --git a/src/cmd/go/testdata/script/mod_list.txt b/src/cmd/go/testdata/script/mod_list.txt index a15f5bca63..17b33fcc7b 100644 --- a/src/cmd/go/testdata/script/mod_list.txt +++ b/src/cmd/go/testdata/script/mod_list.txt @@ -34,12 +34,12 @@ go list rsc.io/quote/buggy # rsc.io/quote/buggy should not be listable as a module go list -m -e -f '{{.Error.Err}}' nonexist rsc.io/quote/buggy -stdout '^module "nonexist" is not a known dependency' -stdout '^module "rsc.io/quote/buggy" is not a known dependency' +stdout '^module nonexist: not a known dependency$' +stdout '^module rsc.io/quote/buggy: not a known dependency$' ! go list -m nonexist rsc.io/quote/buggy -stderr '^go list -m nonexist: module "nonexist" is not a known dependency' -stderr '^go list -m rsc.io/quote/buggy: module "rsc.io/quote/buggy" is not a known dependency' +stderr '^go list -m: module nonexist: not a known dependency' +stderr '^go list -m: module rsc.io/quote/buggy: not a known dependency' # Module loader does not interfere with list -e (golang.org/issue/24149). go list -e -f '{{.Error.Err}}' database diff --git a/src/cmd/go/testdata/script/mod_query.txt b/src/cmd/go/testdata/script/mod_query.txt index c41f83d264..e87ca302f0 100644 --- a/src/cmd/go/testdata/script/mod_query.txt +++ b/src/cmd/go/testdata/script/mod_query.txt @@ -22,7 +22,7 @@ go list -m rsc.io/quote@v1.5.3 -stderr 'go list -m rsc.io/quote: no matching versions for query ">v1.5.3"' +stderr 'go list -m: module rsc.io/quote: no matching versions for query ">v1.5.3"' go list -m -e -f '{{.Error.Err}}' rsc.io/quote@>v1.5.3 stdout 'no matching versions for query ">v1.5.3"' From 2b8b34aa30b69d66d48aedc5ffb4a9f26f37988f Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Thu, 8 Aug 2019 18:09:54 -0400 Subject: [PATCH 184/255] cmd/go: query each path only once in 'go get' MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If we don't know whether a path is a module path or a package path, previously we would first try a module query for it, then fall back to a package query. If we are using a sequence of proxies with fallback (as will be the default in Go 1.13), and the path is not actually a module path, that initial module query will fail against the first proxy, then immediately fall back to the next proxy in the sequence — even if the query could have been satisfied by some other (prefix) module available from the first proxy. Instead, we now query the requested path as only one kind of path. If we query it as a package path but it turns out to only exist as a module, we can detect that as a PackageNotInModuleError with an appropriate module path — we do not need to issue a second query to classify it. Fixes #31785 Change-Id: I581d44279196e41d1fed27ec25489e75d62654e3 Reviewed-on: https://go-review.googlesource.com/c/go/+/189517 Run-TryBot: Bryan C. Mills TryBot-Result: Gobot Gobot Reviewed-by: Jay Conrod --- src/cmd/go/internal/modfetch/repo.go | 2 +- src/cmd/go/internal/modget/get.go | 49 ++++++++++++------- src/cmd/go/internal/modload/query.go | 47 +++++++++--------- .../go/testdata/script/mod_get_fallback.txt | 10 ++++ .../go/testdata/script/mod_get_newcycle.txt | 2 + src/cmd/go/testdata/script/mod_sumdb.txt | 4 +- 6 files changed, 69 insertions(+), 45 deletions(-) create mode 100644 src/cmd/go/testdata/script/mod_get_fallback.txt diff --git a/src/cmd/go/internal/modfetch/repo.go b/src/cmd/go/internal/modfetch/repo.go index 95351269db..be52a8dc11 100644 --- a/src/cmd/go/internal/modfetch/repo.go +++ b/src/cmd/go/internal/modfetch/repo.go @@ -240,7 +240,7 @@ func lookup(proxy, path string) (r Repo, err error) { var ( errModVendor = errors.New("module lookup disabled by -mod=vendor") - errProxyOff = errors.New("module lookup disabled by GOPROXY=off") + errProxyOff = notExistError("module lookup disabled by GOPROXY=off") errNoproxy error = notExistError("disabled by GOPRIVATE/GONOPROXY") errUseProxy error = notExistError("path does not match GOPRIVATE/GONOPROXY") ) diff --git a/src/cmd/go/internal/modget/get.go b/src/cmd/go/internal/modget/get.go index 84b1ac1b01..1cae311c4c 100644 --- a/src/cmd/go/internal/modget/get.go +++ b/src/cmd/go/internal/modget/get.go @@ -735,7 +735,7 @@ func runQueries(cache map[querySpec]*query, queries []*query, modOnly map[string return byPath } -// getQuery evaluates the given package path, version pair +// getQuery evaluates the given (package or module) path and version // to determine the underlying module version being requested. // If forceModulePath is set, getQuery must interpret path // as a module path. @@ -753,40 +753,51 @@ func getQuery(path, vers string, prevM module.Version, forceModulePath bool) (mo base.Fatalf("go get: internal error: prevM may be set if and only if forceModulePath is set") } - if forceModulePath || !strings.Contains(path, "...") { + // If the query must be a module path, try only that module path. + if forceModulePath { if path == modload.Target.Path { if vers != "latest" { return module.Version{}, fmt.Errorf("can't get a specific version of the main module") } } - // If the path doesn't contain a wildcard, try interpreting it as a module path. info, err := modload.Query(path, vers, prevM.Version, modload.Allowed) if err == nil { return module.Version{Path: path, Version: info.Version}, nil } - // If the query fails, and the path must be a real module, report the query error. - if forceModulePath { - // If the query was "upgrade" or "patch" and the current version has been - // replaced, check to see whether the error was for that same version: - // if so, the version was probably replaced because it is invalid, - // and we should keep that replacement without complaining. - if vers == "upgrade" || vers == "patch" { - var vErr *module.InvalidVersionError - if errors.As(err, &vErr) && vErr.Version == prevM.Version && modload.Replacement(prevM).Path != "" { - return prevM, nil - } + // If the query was "upgrade" or "patch" and the current version has been + // replaced, check to see whether the error was for that same version: + // if so, the version was probably replaced because it is invalid, + // and we should keep that replacement without complaining. + if vers == "upgrade" || vers == "patch" { + var vErr *module.InvalidVersionError + if errors.As(err, &vErr) && vErr.Version == prevM.Version && modload.Replacement(prevM).Path != "" { + return prevM, nil } - return module.Version{}, err } - } - // Otherwise, try a package path or pattern. - results, err := modload.QueryPattern(path, vers, modload.Allowed) - if err != nil { return module.Version{}, err } + + // If the query may be either a package or a module, try it as a package path. + // If it turns out to only exist as a module, we can detect the resulting + // PackageNotInModuleError and avoid a second round-trip through (potentially) + // all of the configured proxies. + results, err := modload.QueryPattern(path, vers, modload.Allowed) + if err != nil { + // If the path doesn't contain a wildcard, check whether it was actually a + // module path instead. If so, return that. + if !strings.Contains(path, "...") { + var modErr *modload.PackageNotInModuleError + if errors.As(err, &modErr) && modErr.Mod.Path == path { + return modErr.Mod, nil + } + } + + return module.Version{}, err + } + return results[0].Mod, nil } diff --git a/src/cmd/go/internal/modload/query.go b/src/cmd/go/internal/modload/query.go index 8c5fdc8bf9..602bf47275 100644 --- a/src/cmd/go/internal/modload/query.go +++ b/src/cmd/go/internal/modload/query.go @@ -380,10 +380,10 @@ func QueryPattern(pattern, query string, allowed func(module.Version) bool) ([]Q } r.Packages = match(r.Mod, root, isLocal) if len(r.Packages) == 0 { - return r, &packageNotInModuleError{ - mod: r.Mod, - query: query, - pattern: pattern, + return r, &PackageNotInModuleError{ + Mod: r.Mod, + Query: query, + Pattern: pattern, } } return r, nil @@ -446,30 +446,31 @@ func queryPrefixModules(candidateModules []string, queryModule func(path string) wg.Wait() // Classify the results. In case of failure, identify the error that the user - // is most likely to find helpful. + // is most likely to find helpful: the most useful class of error at the + // longest matching path. var ( + noPackage *PackageNotInModuleError noVersion *NoMatchingVersionError - noPackage *packageNotInModuleError notExistErr error ) for _, r := range results { switch rErr := r.err.(type) { case nil: found = append(found, r.QueryResult) + case *PackageNotInModuleError: + if noPackage == nil { + noPackage = rErr + } case *NoMatchingVersionError: if noVersion == nil { noVersion = rErr } - case *packageNotInModuleError: - if noPackage == nil { - noPackage = rErr - } default: if errors.Is(rErr, os.ErrNotExist) { if notExistErr == nil { notExistErr = rErr } - } else { + } else if err == nil { err = r.err } } @@ -515,31 +516,31 @@ func (e *NoMatchingVersionError) Error() string { return fmt.Sprintf("no matching versions for query %q", e.query) + currentSuffix } -// A packageNotInModuleError indicates that QueryPattern found a candidate +// A PackageNotInModuleError indicates that QueryPattern found a candidate // module at the requested version, but that module did not contain any packages // matching the requested pattern. // -// NOTE: packageNotInModuleError MUST NOT implement Is(os.ErrNotExist). +// NOTE: PackageNotInModuleError MUST NOT implement Is(os.ErrNotExist). // // If the module came from a proxy, that proxy had to return a successful status // code for the versions it knows about, and thus did not have the opportunity // to return a non-400 status code to suppress fallback. -type packageNotInModuleError struct { - mod module.Version - query string - pattern string +type PackageNotInModuleError struct { + Mod module.Version + Query string + Pattern string } -func (e *packageNotInModuleError) Error() string { +func (e *PackageNotInModuleError) Error() string { found := "" - if e.query != e.mod.Version { - found = fmt.Sprintf(" (%s)", e.mod.Version) + if e.Query != e.Mod.Version { + found = fmt.Sprintf(" (%s)", e.Mod.Version) } - if strings.Contains(e.pattern, "...") { - return fmt.Sprintf("module %s@%s%s found, but does not contain packages matching %s", e.mod.Path, e.query, found, e.pattern) + if strings.Contains(e.Pattern, "...") { + return fmt.Sprintf("module %s@%s%s found, but does not contain packages matching %s", e.Mod.Path, e.Query, found, e.Pattern) } - return fmt.Sprintf("module %s@%s%s found, but does not contain package %s", e.mod.Path, e.query, found, e.pattern) + return fmt.Sprintf("module %s@%s%s found, but does not contain package %s", e.Mod.Path, e.Query, found, e.Pattern) } // ModuleHasRootPackage returns whether module m contains a package m.Path. diff --git a/src/cmd/go/testdata/script/mod_get_fallback.txt b/src/cmd/go/testdata/script/mod_get_fallback.txt new file mode 100644 index 0000000000..a9834a324e --- /dev/null +++ b/src/cmd/go/testdata/script/mod_get_fallback.txt @@ -0,0 +1,10 @@ +env GO111MODULE=on + +[!net] skip + +env GOPROXY=https://proxy.golang.org,direct +env GOSUMDB=off + +go get -x -v -d golang.org/x/tools/cmd/goimports +stderr '# get https://proxy.golang.org/golang.org/x/tools/@latest' +! stderr '# get https://golang.org' diff --git a/src/cmd/go/testdata/script/mod_get_newcycle.txt b/src/cmd/go/testdata/script/mod_get_newcycle.txt index 9616863383..b1838f824a 100644 --- a/src/cmd/go/testdata/script/mod_get_newcycle.txt +++ b/src/cmd/go/testdata/script/mod_get_newcycle.txt @@ -1,6 +1,7 @@ env GO111MODULE=on # Download modules to avoid stderr chatter +go mod download example.com@v1.0.0 go mod download example.com/newcycle/a@v1.0.0 go mod download example.com/newcycle/a@v1.0.1 go mod download example.com/newcycle/b@v1.0.0 @@ -10,5 +11,6 @@ go mod init m cmp stderr stderr-expected -- stderr-expected -- +go: finding example.com/newcycle v1.0.0 go get: inconsistent versions: example.com/newcycle/a@v1.0.0 requires example.com/newcycle/a@v1.0.1 (not example.com/newcycle/a@v1.0.0) diff --git a/src/cmd/go/testdata/script/mod_sumdb.txt b/src/cmd/go/testdata/script/mod_sumdb.txt index 8e1f3d7a7b..641b9e73bc 100644 --- a/src/cmd/go/testdata/script/mod_sumdb.txt +++ b/src/cmd/go/testdata/script/mod_sumdb.txt @@ -9,8 +9,8 @@ env dbname=localhost.localdev/sumdb cp go.mod.orig go.mod env GOSUMDB=$sumdb' '$proxy/sumdb-wrong ! go get -d rsc.io/quote -stderr 'verifying rsc.io/quote@v1.5.2/go.mod: checksum mismatch' -stderr 'downloaded: h1:LzX7' +stderr 'verifying rsc.io/quote@v1.5.2: checksum mismatch' +stderr 'downloaded: h1:3fEy' stderr 'localhost.localdev/sumdb: h1:wrong' stderr 'SECURITY ERROR\nThis download does NOT match the one reported by the checksum server.' ! go get -d rsc.io/sampler From 362625209b6cd2bc059b6b0a67712ddebab312d9 Mon Sep 17 00:00:00 2001 From: Agniva De Sarker Date: Fri, 9 Aug 2019 14:37:39 +0530 Subject: [PATCH 185/255] doc/install-source.html: add new GOOS and GOARCHes And also insert new paragraphs between GOOS and GOARCH listings for better readability. Fixes #28142 Fixes #26513 Change-Id: Ie92e98dbfd924e80032a12afbfa02f30e3a6f916 Reviewed-on: https://go-review.googlesource.com/c/go/+/189578 Reviewed-by: Andrew Bonventre --- doc/install-source.html | 46 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 42 insertions(+), 4 deletions(-) diff --git a/doc/install-source.html b/doc/install-source.html index 79c2a14b18..f78dacf7ea 100644 --- a/doc/install-source.html +++ b/doc/install-source.html @@ -33,7 +33,7 @@ compiler using the GCC back end, see

    -The Go compilers support eight instruction sets. +The Go compilers support nine instruction sets. There are important differences in the quality of the compilers for the different architectures.

    @@ -87,6 +87,12 @@ architectures.
    Supports Linux binaries. New in 1.7 and not as well exercised as other ports.
    +
    + wasm (WebAssembly) +
    +
    + Targets the WebAssembly platform. New in 1.11 and not as well exercised as other ports. +

    @@ -493,25 +499,45 @@ These default to the values of $GOHOSTOS and

    Choices for $GOOS are -darwin (macOS 10.10 and above and iOS), dragonfly, freebsd, +android, darwin (macOS 10.11 and above and iOS), +dragonfly, freebsd, illumos, js, linux, netbsd, openbsd, plan9, solaris and windows. +

    + +

    Choices for $GOARCH are amd64 (64-bit x86, the most mature port), 386 (32-bit x86), arm (32-bit ARM), arm64 (64-bit ARM), ppc64le (PowerPC 64-bit, little-endian), ppc64 (PowerPC 64-bit, big-endian), mips64le (MIPS 64-bit, little-endian), mips64 (MIPS 64-bit, big-endian), -mipsle (MIPS 32-bit, little-endian), mips (MIPS 32-bit, big-endian), and -s390x (IBM System z 64-bit, big-endian). +mipsle (MIPS 32-bit, little-endian), mips (MIPS 32-bit, big-endian), +s390x (IBM System z 64-bit, big-endian), and +wasm (WebAssembly 32-bit). +

    + +

    The valid combinations of $GOOS and $GOARCH are: + + + + + + + + + + + + @@ -536,6 +562,12 @@ The valid combinations of $GOOS and $GOARCH are: + + + + + + @@ -587,12 +619,18 @@ The valid combinations of $GOOS and $GOARCH are: + + + + + + From 951143cf1425189965498cc32fc8dc132bf7c777 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Fri, 9 Aug 2019 10:54:43 -0700 Subject: [PATCH 186/255] cmd/link: increase the function call limit in stkcheck There is real (albeit generated) code that exceeds the limit. Fixes #33555 Change-Id: I668e85825d3d2a471970e869abe63f3492213cc1 Reviewed-on: https://go-review.googlesource.com/c/go/+/189697 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Cherry Zhang --- src/cmd/link/internal/ld/lib.go | 2 +- test/fixedbugs/issue33555.go | 81 +++++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 test/fixedbugs/issue33555.go diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go index 9c71a4f51e..3fa258d275 100644 --- a/src/cmd/link/internal/ld/lib.go +++ b/src/cmd/link/internal/ld/lib.go @@ -2066,7 +2066,7 @@ func stkcheck(ctxt *Link, up *chain, depth int) int { s.Attr |= sym.AttrStackCheck } - if depth > 100 { + if depth > 500 { Errorf(s, "nosplit stack check too deep") stkbroke(ctxt, up, 0) return -1 diff --git a/test/fixedbugs/issue33555.go b/test/fixedbugs/issue33555.go new file mode 100644 index 0000000000..7debd2049c --- /dev/null +++ b/test/fixedbugs/issue33555.go @@ -0,0 +1,81 @@ +// +build !nacl,!js +// run + +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Test that the linker permits long call sequences. +package main + +import ( + "bytes" + "fmt" + "io/ioutil" + "os" + "os/exec" + "path/filepath" + "strconv" +) + +const start = ` +package main + +func main() { + println(f0() + 1) +} +` + +const fn = ` +//go:noinline +func f%d() int { + return f%d() + 1 +}` + +const fnlast = ` +//go:noinline +func f%d() int { + return 0 +} +` + +const count = 400 + +func main() { + if err := test(); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } +} + +func test() error { + var buf bytes.Buffer + buf.WriteString(start) + for i := 0; i < count; i++ { + fmt.Fprintf(&buf, fn, i, i + 1) + } + fmt.Fprintf(&buf, fnlast, count) + + dir, err := ioutil.TempDir("", "issue33555") + if err != nil { + return err + } + defer os.RemoveAll(dir) + + fn := filepath.Join(dir, "x.go") + if err := ioutil.WriteFile(fn, buf.Bytes(), 0644); err != nil { + return err + } + + out, err := exec.Command("go", "run", fn).CombinedOutput() + if err != nil { + return err + } + + want := strconv.Itoa(count + 1) + if got := string(bytes.TrimSpace(out)); got != want { + return fmt.Errorf("got %q want %q", got, want) + } + + return nil +} From 9c1f14f3763dbbc0d8105fa88c0b7bdad5674ee7 Mon Sep 17 00:00:00 2001 From: "K. \"pestophagous\" Heller" Date: Sun, 4 Aug 2019 22:46:29 -0700 Subject: [PATCH 187/255] doc/install-source: create distinction between steps that involve "git clone" Prior doc implied that "git clone" was one way to obtain a go1.4 bootstrap toochain, but it did not state this outright. Further, the doc did not make it explicit in the "Fetch the repository" section that one must necessarily "git clone" a second time in the (presumed-to-be-uncommon) case where "git clone" had already been perfomed in the "compiler binaries" section. Updates #33402 Change-Id: Id70a6587b6ee09aca13559d63868b75cb07dff1e Reviewed-on: https://go-review.googlesource.com/c/go/+/188900 Reviewed-by: Ian Lance Taylor --- doc/install-source.html | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/doc/install-source.html b/doc/install-source.html index f78dacf7ea..12b10d5621 100644 --- a/doc/install-source.html +++ b/doc/install-source.html @@ -140,12 +140,16 @@ For example, $GOROOT_BOOTSTRAP/bin/go should be the go command binary for the bootstrap toolchain.

    +

    Bootstrap toolchain from binary release

    +

    To use a binary release as a bootstrap toolchain, see the downloads page or use any other packaged Go distribution.

    +

    Bootstrap toolchain from source

    +

    To build a bootstrap toolchain from source, use either the git branch release-branch.go1.4 or @@ -159,6 +163,17 @@ the environment, and run make.bash (or, on Windows, make.bat).

    +

    +Once the Go 1.4 source has been unpacked into your GOROOT_BOOTSTRAP directory, +you must keep this git clone instance checked out to branch +release-branch.go1.4. Specifically, do not attempt to reuse +this git clone in the later step named "Fetch the repository." The go1.4 +bootstrap toolchain must be able to properly traverse the go1.4 sources +that it assumes are present under this repository root. +

    + +

    Bootstrap toolchain from cross-compiled source

    +

    To cross-compile a bootstrap toolchain from source, which is necessary on systems Go 1.4 did not target (for @@ -181,6 +196,8 @@ That tree can be copied to a machine of the given target type and used as GOROOT_BOOTSTRAP to bootstrap a local build.

    +

    Bootstrap toolchain using gccgo

    +

    To use gccgo as the bootstrap toolchain, you need to arrange for $GOROOT_BOOTSTRAP/bin/go to be the go tool that comes @@ -246,6 +263,11 @@ that if Go is checked out in $HOME/go, it will conflict with the default location of $GOPATH. See GOPATH below.

    +Reminder: If you opted to also compile the bootstrap binaries from source (in an +earlier section), you still need to git clone again at this point +(to checkout the latest <tag>), because you must keep your +go1.4 repository distinct. +

    If you intend to modify the go source code, and From 3928915ec74029269f8dacb46c627cbdbd295c2b Mon Sep 17 00:00:00 2001 From: Carlo Alberto Ferraris Date: Sat, 10 Aug 2019 13:11:26 +0000 Subject: [PATCH 188/255] doc/go1.13: mention faster sync.Mutex/RWMutex/Once Mention faster sync.Mutex/RWMutex/Once in the 1.13 release notes. Change-Id: I29d8a5004a0af42542e8db82a8c9e2e06a15dbb0 GitHub-Last-Rev: 2995401dab563ea5af98c0f5351f51a6116f105e GitHub-Pull-Request: golang/go#33404 Reviewed-on: https://go-review.googlesource.com/c/go/+/188479 Reviewed-by: Emmanuel Odeke --- doc/go1.13.html | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc/go1.13.html b/doc/go1.13.html index 3b9da340aa..554557cd7f 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -892,6 +892,14 @@ godoc

    sync
    +

    + The fast paths of Mutex.Lock, Mutex.Unlock, + RWMutex.Lock, RWMutex.RUnlock, and + Once.Do are now inlined in their callers. + For the uncontended cases on amd64, these changes make Once.Do twice as fast, and the + Mutex/RWMutex methods up to 10% faster. +

    +

    Large Pool no longer increase stop-the-world pause times.

    From 2754118731b81baf0c812116a9b72b6153abf79d Mon Sep 17 00:00:00 2001 From: Pure White Date: Sun, 11 Aug 2019 05:37:29 +0000 Subject: [PATCH 189/255] doc/asm: document go_asm.h only works in the runtime package Fixes #33054 Change-Id: I687d45e092d721a6c22888cc7ddbe420c16a5af9 GitHub-Last-Rev: a7208c89a0d613a53ab057e0b4418ae4719cfcbd GitHub-Pull-Request: golang/go#33069 Reviewed-on: https://go-review.googlesource.com/c/go/+/185917 Reviewed-by: Rob Pike --- doc/asm.html | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/doc/asm.html b/doc/asm.html index 77defdbd28..11033fe3c5 100644 --- a/doc/asm.html +++ b/doc/asm.html @@ -590,27 +590,37 @@ Here follow some descriptions of key Go-specific details for the supported archi

    The runtime pointer to the g structure is maintained through the value of an otherwise unused (as far as Go is concerned) register in the MMU. -A OS-dependent macro get_tls is defined for the assembler if the source includes -a special header, go_asm.h: +An OS-dependent macro get_tls is defined for the assembler if the source is +in the runtime package and includes a special header, go_tls.h:

    -#include "go_asm.h"
    +#include "go_tls.h"
     

    Within the runtime, the get_tls macro loads its argument register with a pointer to the g pointer, and the g struct contains the m pointer. +There's another special header containing the offsets for each +element of g, called go_asm.h. The sequence to load g and m using CX looks like this:

    +#include "go_tls.h"
    +#include "go_asm.h"
    +...
     get_tls(CX)
     MOVL	g(CX), AX     // Move g into AX.
     MOVL	g_m(AX), BX   // Move g.m into BX.
     
    +

    +Note: The code above works only in the runtime package, while go_tls.h also +applies to arm, amd64 and amd64p32, and go_asm.h applies to all architectures. +

    +

    Addressing modes:

    From 8b058cfbcec5dc3002ddd6cedc7070ff946b2257 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Fri, 9 Aug 2019 13:48:34 -0700 Subject: [PATCH 190/255] net: document that a keep-alive failure also returns a timeout Updates #31449 Change-Id: I76490c5e83eb2f7ba529b387a57ba088428aece5 Reviewed-on: https://go-review.googlesource.com/c/go/+/189757 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Emmanuel Odeke Reviewed-by: Filippo Valsorda --- src/net/net.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/net/net.go b/src/net/net.go index 4ed40237a8..38c6b99637 100644 --- a/src/net/net.go +++ b/src/net/net.go @@ -146,6 +146,13 @@ type Conn interface { // the deadline after successful Read or Write calls. // // A zero value for t means I/O operations will not time out. + // + // Note that if a TCP connection has keep-alive turned on, + // which is the default unless overridden by Dialer.KeepAlive + // or ListenConfig.KeepAlive, then a keep-alive failure may + // also return a timeout error. On Unix systems a keep-alive + // failure on I/O can be detected using + // errors.Is(err, syscall.ETIMEDOUT). SetDeadline(t time.Time) error // SetReadDeadline sets the deadline for future Read calls From 45504066d7eb369b5be47429806e64d2ba6eb43a Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Sun, 11 Aug 2019 14:34:32 -0400 Subject: [PATCH 191/255] src/go.mod: sync golang.org/x/net with h2_bundle.go The bundle included changes from a commit after the one referred to by the go.mod, probably due to cmd/bundle using the GOPATH source. Identified with the new go/packages based cmd/bundle from CL 189818. $ go get golang.org/x/net@461777fb6f $ go mod tidy $ go mod vendor $ go generate net/http # with CL 189818 Also, updated the socks_bundle.go generate command to drop obsolete options and match h2_bundle.go. It caused no output changes. Updates #32031 Change-Id: I0322d4e842dbfdad749455111072ca4872a62ad4 Reviewed-on: https://go-review.googlesource.com/c/go/+/189897 Reviewed-by: Dmitri Shuralyov --- src/go.mod | 2 +- src/go.sum | 4 ++-- src/net/http/socks_bundle.go | 2 +- src/vendor/modules.txt | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/go.mod b/src/go.mod index 2e0fec4b15..0d7d70f014 100644 --- a/src/go.mod +++ b/src/go.mod @@ -4,7 +4,7 @@ go 1.12 require ( golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8 - golang.org/x/net v0.0.0-20190607172144-d5cec3884524 + golang.org/x/net v0.0.0-20190607181551-461777fb6f67 golang.org/x/sys v0.0.0-20190529130038-5219a1e1c5f8 // indirect golang.org/x/text v0.3.2 // indirect ) diff --git a/src/go.sum b/src/go.sum index f6e979df2b..363ee7ae23 100644 --- a/src/go.sum +++ b/src/go.sum @@ -2,8 +2,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8 h1:1wopBVtVdWnn03fZelqdXTqk7U7zPQCb+T4rbU9ZEoU= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190607172144-d5cec3884524 h1:A4fHjHFi2zGH4/ziDBluIhhGzT/kAuTD1lKHLAztlG8= -golang.org/x/net v0.0.0-20190607172144-d5cec3884524/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190607181551-461777fb6f67 h1:rJJxsykSlULwd2P2+pg/rtnwN2FrWp4IuCxOSyS0V00= +golang.org/x/net v0.0.0-20190607181551-461777fb6f67/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190529130038-5219a1e1c5f8 h1:2WjIC11WRITGlVWmyLXKjzIVj1ZwoWZ//tadeUUV6/o= diff --git a/src/net/http/socks_bundle.go b/src/net/http/socks_bundle.go index e6640dd404..d22d636381 100644 --- a/src/net/http/socks_bundle.go +++ b/src/net/http/socks_bundle.go @@ -1,5 +1,5 @@ // Code generated by golang.org/x/tools/cmd/bundle. DO NOT EDIT. -//go:generate bundle -o socks_bundle.go -dst net/http -prefix socks -underscore golang.org/x/net/internal/socks +//go:generate bundle -o socks_bundle.go -prefix socks golang.org/x/net/internal/socks // Package socks provides a SOCKS version 5 client implementation. // diff --git a/src/vendor/modules.txt b/src/vendor/modules.txt index f18965e405..20f261bf83 100644 --- a/src/vendor/modules.txt +++ b/src/vendor/modules.txt @@ -7,7 +7,7 @@ golang.org/x/crypto/hkdf golang.org/x/crypto/internal/chacha20 golang.org/x/crypto/internal/subtle golang.org/x/crypto/poly1305 -# golang.org/x/net v0.0.0-20190607172144-d5cec3884524 +# golang.org/x/net v0.0.0-20190607181551-461777fb6f67 golang.org/x/net/dns/dnsmessage golang.org/x/net/http/httpguts golang.org/x/net/http/httpproxy From 61bb56ad63992a3199acc55b2537c8355ef887b6 Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Tue, 6 Aug 2019 19:32:16 -0400 Subject: [PATCH 192/255] net/url: make Hostname and Port predictable for invalid Host values When Host is not valid per RFC 3986, the behavior of Hostname and Port was wildly unpredictable, to the point that Host could have a suffix that didn't appear in neither Hostname nor Port. This is a security issue when applications are applying checks to Host and expecting them to be meaningful for the contents of Hostname. To reduce disruption, this change only aims to guarantee the following two security-relevant invariants. * Host is either Hostname or [Hostname] with Port empty, or Hostname:Port or [Hostname]:Port. * Port is only decimals. The second invariant is the one that's most likely to cause disruption, but I believe it's important, as it's conceivable an application might do a suffix check on Host and expect it to be meaningful for the contents of Hostname (if the suffix is not a valid port). There are three ways to ensure it. 1) Reject invalid ports in Parse. Note that non-numeric ports are already rejected if and only if the host starts with "[". 2) Consider non-numeric ports as part of Hostname, not Port. 3) Allow non-numeric ports, and hope they only flow down to net/http, which will reject them (#14353). This change adopts both 1 and 2. We could do only the latter, but then these invalid hosts would flow past port checks, like in http_test.TestTransportRejectsAlphaPort. Non-numeric ports weren't fully supported anyway, because they were rejected after IPv6 literals, so this restores consistency. We could do only the former, but at this point 2) is free and might help with manually constructed Host values (or if we get something wrong in Parse). Note that net.SplitHostPort and net.Dial explicitly accept service names in place of port numbers, but this is an URL package, and RFC 3986, Section 3.2.3, clearly specifies ports as a number in decimal. net/http uses a mix of net.SplitHostPort and url.Parse that would deserve looking into, but in general it seems that it will still accept service names in Addr fields as they are passed to net.Listen, while rejecting them in URLs, which feels correct. This leaves a number of invalid URLs to reject, which however are not security relevant once the two invariants above hold, so can be done in Go 1.14: IPv6 literals without brackets (#31024), invalid IPv6 literals, hostnames with invalid characters, and more. Tested with 200M executions of go-fuzz and the following Fuzz function. u, err := url.Parse(string(data)) if err != nil { return 0 } h := u.Hostname() p := u.Port() switch u.Host { case h + ":" + p: return 1 case "[" + h + "]:" + p: return 1 case h: fallthrough case "[" + h + "]": if p != "" { panic("unexpected Port()") } return 1 } panic("Host is not a variant of [Hostname]:Port") Fixes CVE-2019-14809 Updates #29098 Change-Id: I7ef40823dab28f29511329fa2d5a7fb10c3ec895 Reviewed-on: https://go-review.googlesource.com/c/go/+/189258 Reviewed-by: Ian Lance Taylor --- src/net/http/transport.go | 2 + src/net/http/transport_test.go | 2 +- src/net/url/url.go | 54 +++++++++++----------- src/net/url/url_test.go | 82 ++++++++++++++++------------------ 4 files changed, 69 insertions(+), 71 deletions(-) diff --git a/src/net/http/transport.go b/src/net/http/transport.go index 5c1708c832..f9d9f4451c 100644 --- a/src/net/http/transport.go +++ b/src/net/http/transport.go @@ -710,6 +710,8 @@ func resetProxyConfig() { } func (t *Transport) connectMethodForRequest(treq *transportRequest) (cm connectMethod, err error) { + // TODO: the validPort check is redundant after CL 189258, as url.URL.Port + // only returns valid ports now. golang.org/issue/33600 if port := treq.URL.Port(); !validPort(port) { return cm, fmt.Errorf("invalid URL port %q", port) } diff --git a/src/net/http/transport_test.go b/src/net/http/transport_test.go index ea01a2017e..1a6f631ea2 100644 --- a/src/net/http/transport_test.go +++ b/src/net/http/transport_test.go @@ -4289,7 +4289,7 @@ func TestTransportRejectsAlphaPort(t *testing.T) { t.Fatalf("got %#v; want *url.Error", err) } got := ue.Err.Error() - want := `invalid URL port "123foo"` + want := `invalid port ":123foo" after host` if got != want { t.Errorf("got error %q; want %q", got, want) } diff --git a/src/net/url/url.go b/src/net/url/url.go index 982cfe6c0c..12ea35f0f9 100644 --- a/src/net/url/url.go +++ b/src/net/url/url.go @@ -648,6 +648,11 @@ func parseHost(host string) (string, error) { } return host1 + host2 + host3, nil } + } else if i := strings.LastIndex(host, ":"); i != -1 { + colonPort := host[i:] + if !validOptionalPort(colonPort) { + return "", fmt.Errorf("invalid port %q after host", colonPort) + } } var err error @@ -1046,44 +1051,39 @@ func (u *URL) RequestURI() string { return result } -// Hostname returns u.Host, without any port number. +// Hostname returns u.Host, stripping any valid port number if present. // -// If Host is an IPv6 literal with a port number, Hostname returns the -// IPv6 literal without the square brackets. IPv6 literals may include -// a zone identifier. +// If the result is enclosed in square brackets, as literal IPv6 addresses are, +// the square brackets are removed from the result. func (u *URL) Hostname() string { - return stripPort(u.Host) + host, _ := splitHostPort(u.Host) + return host } // Port returns the port part of u.Host, without the leading colon. -// If u.Host doesn't contain a port, Port returns an empty string. +// +// If u.Host doesn't contain a valid numeric port, Port returns an empty string. func (u *URL) Port() string { - return portOnly(u.Host) + _, port := splitHostPort(u.Host) + return port } -func stripPort(hostport string) string { - colon := strings.IndexByte(hostport, ':') - if colon == -1 { - return hostport - } - if i := strings.IndexByte(hostport, ']'); i != -1 { - return strings.TrimPrefix(hostport[:i], "[") - } - return hostport[:colon] -} +// splitHostPort separates host and port. If the port is not valid, it returns +// the entire input as host, and it doesn't check the validity of the host. +// Unlike net.SplitHostPort, but per RFC 3986, it requires ports to be numeric. +func splitHostPort(hostport string) (host, port string) { + host = hostport -func portOnly(hostport string) string { - colon := strings.IndexByte(hostport, ':') - if colon == -1 { - return "" + colon := strings.LastIndexByte(host, ':') + if colon != -1 && validOptionalPort(host[colon:]) { + host, port = host[:colon], host[colon+1:] } - if i := strings.Index(hostport, "]:"); i != -1 { - return hostport[i+len("]:"):] + + if strings.HasPrefix(host, "[") && strings.HasSuffix(host, "]") { + host = host[1 : len(host)-1] } - if strings.Contains(hostport, "]") { - return "" - } - return hostport[colon+len(":"):] + + return } // Marshaling interface implementations. diff --git a/src/net/url/url_test.go b/src/net/url/url_test.go index e6d6ef8a83..e83c86c424 100644 --- a/src/net/url/url_test.go +++ b/src/net/url/url_test.go @@ -422,10 +422,10 @@ var urltests = []URLTest{ }, // worst case host, still round trips { - "scheme://!$&'()*+,;=hello!:port/path", + "scheme://!$&'()*+,;=hello!:1/path", &URL{ Scheme: "scheme", - Host: "!$&'()*+,;=hello!:port", + Host: "!$&'()*+,;=hello!:1", Path: "/path", }, "", @@ -1425,11 +1425,13 @@ func TestParseErrors(t *testing.T) { {"http://[::1]", false}, {"http://[::1]:80", false}, {"http://[::1]:namedport", true}, // rfc3986 3.2.3 + {"http://x:namedport", true}, // rfc3986 3.2.3 {"http://[::1]/", false}, {"http://[::1]a", true}, {"http://[::1]%23", true}, {"http://[::1%25en0]", false}, // valid zone id {"http://[::1]:", false}, // colon, but no port OK + {"http://x:", false}, // colon, but no port OK {"http://[::1]:%38%30", true}, // not allowed: % encoding only for non-ASCII {"http://[::1%25%41]", false}, // RFC 6874 allows over-escaping in zone {"http://[%10::1]", true}, // no %xx escapes in IP address @@ -1621,52 +1623,46 @@ func TestURLErrorImplementsNetError(t *testing.T) { } } -func TestURLHostname(t *testing.T) { +func TestURLHostnameAndPort(t *testing.T) { tests := []struct { - host string // URL.Host field - want string + in string // URL.Host field + host string + port string }{ - {"foo.com:80", "foo.com"}, - {"foo.com", "foo.com"}, - {"FOO.COM", "FOO.COM"}, // no canonicalization (yet?) - {"1.2.3.4", "1.2.3.4"}, - {"1.2.3.4:80", "1.2.3.4"}, - {"[1:2:3:4]", "1:2:3:4"}, - {"[1:2:3:4]:80", "1:2:3:4"}, - {"[::1]:80", "::1"}, - {"[::1]", "::1"}, - {"localhost", "localhost"}, - {"localhost:443", "localhost"}, - {"some.super.long.domain.example.org:8080", "some.super.long.domain.example.org"}, - {"[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:17000", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"}, - {"[2001:0db8:85a3:0000:0000:8a2e:0370:7334]", "2001:0db8:85a3:0000:0000:8a2e:0370:7334"}, - } - for _, tt := range tests { - u := &URL{Host: tt.host} - got := u.Hostname() - if got != tt.want { - t.Errorf("Hostname for Host %q = %q; want %q", tt.host, got, tt.want) - } - } -} + {"foo.com:80", "foo.com", "80"}, + {"foo.com", "foo.com", ""}, + {"foo.com:", "foo.com", ""}, + {"FOO.COM", "FOO.COM", ""}, // no canonicalization + {"1.2.3.4", "1.2.3.4", ""}, + {"1.2.3.4:80", "1.2.3.4", "80"}, + {"[1:2:3:4]", "1:2:3:4", ""}, + {"[1:2:3:4]:80", "1:2:3:4", "80"}, + {"[::1]:80", "::1", "80"}, + {"[::1]", "::1", ""}, + {"[::1]:", "::1", ""}, + {"localhost", "localhost", ""}, + {"localhost:443", "localhost", "443"}, + {"some.super.long.domain.example.org:8080", "some.super.long.domain.example.org", "8080"}, + {"[2001:0db8:85a3:0000:0000:8a2e:0370:7334]:17000", "2001:0db8:85a3:0000:0000:8a2e:0370:7334", "17000"}, + {"[2001:0db8:85a3:0000:0000:8a2e:0370:7334]", "2001:0db8:85a3:0000:0000:8a2e:0370:7334", ""}, -func TestURLPort(t *testing.T) { - tests := []struct { - host string // URL.Host field - want string - }{ - {"foo.com", ""}, - {"foo.com:80", "80"}, - {"1.2.3.4", ""}, - {"1.2.3.4:80", "80"}, - {"[1:2:3:4]", ""}, - {"[1:2:3:4]:80", "80"}, + // Ensure that even when not valid, Host is one of "Hostname", + // "Hostname:Port", "[Hostname]" or "[Hostname]:Port". + // See https://golang.org/issue/29098. + {"[google.com]:80", "google.com", "80"}, + {"google.com]:80", "google.com]", "80"}, + {"google.com:80_invalid_port", "google.com:80_invalid_port", ""}, + {"[::1]extra]:80", "::1]extra", "80"}, + {"google.com]extra:extra", "google.com]extra:extra", ""}, } for _, tt := range tests { - u := &URL{Host: tt.host} - got := u.Port() - if got != tt.want { - t.Errorf("Port for Host %q = %q; want %q", tt.host, got, tt.want) + u := &URL{Host: tt.in} + host, port := u.Hostname(), u.Port() + if host != tt.host { + t.Errorf("Hostname for Host %q = %q; want %q", tt.in, host, tt.host) + } + if port != tt.port { + t.Errorf("Port for Host %q = %q; want %q", tt.in, port, tt.port) } } } From ad4ed87f80c33f23bdd3767ef3208f15a1fb5c90 Mon Sep 17 00:00:00 2001 From: Toshihiro Shiino Date: Wed, 14 Aug 2019 05:26:56 +0000 Subject: [PATCH 193/255] doc/go1.13: add missing periods Change-Id: If9ad650174572c475f0b3d3394208c2a9dd0a596 Reviewed-on: https://go-review.googlesource.com/c/go/+/190237 Reviewed-by: Agniva De Sarker --- doc/go1.13.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/go1.13.html b/doc/go1.13.html index 554557cd7f..71d56612a5 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -825,7 +825,7 @@ godoc A new function NewRequestWithContext has been added and it accepts a Context that controls the entire lifetime of the created outgoing Request, suitable for use with - Client.Do and Transport.RoundTrip + Client.Do and Transport.RoundTrip.

    @@ -876,7 +876,7 @@ godoc Tracebacks, runtime.Caller, and runtime.Callers now refer to the function that initializes the global variables of PKG - as PKG.init instead of PKG.init.ializers + as PKG.init instead of PKG.init.ializers.

    From 5f45a3337ec78f303fbbcadd89d459af56183724 Mon Sep 17 00:00:00 2001 From: Cherry Zhang Date: Wed, 14 Aug 2019 09:50:51 -0400 Subject: [PATCH 194/255] reflect: align first argument in callMethod When calling a function obtained from reflect.Value.Method (or MethodByName), we copy the arguments from the caller frame, which does not include the receiver, to a new frame to call the actual method, which does include the receiver. Here we need to align the first (non-receiver) argument. As the receiver is pointer sized, it is generally naturally aligned, except on amd64p32, where the argument can have larger alignment, and this aligning becomes necessary. Fixes #33628. Change-Id: I5bea0e20173f06d1602c5666d4f334e3d0de5c1e Reviewed-on: https://go-review.googlesource.com/c/go/+/190297 Run-TryBot: Cherry Zhang TryBot-Result: Gobot Gobot Reviewed-by: Keith Randall --- src/reflect/all_test.go | 21 +++++++++++++++++++++ src/reflect/value.go | 16 +++++++++++----- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/src/reflect/all_test.go b/src/reflect/all_test.go index 0dbf4c5e87..4431ce2391 100644 --- a/src/reflect/all_test.go +++ b/src/reflect/all_test.go @@ -2057,6 +2057,16 @@ func (p Point) TotalDist(points ...Point) int { return tot } +// This will be index 5. +func (p *Point) Int64Method(x int64) int64 { + return x +} + +// This will be index 6. +func (p *Point) Int32Method(x int32) int32 { + return x +} + func TestMethod(t *testing.T) { // Non-curried method of type. p := Point{3, 4} @@ -2265,6 +2275,17 @@ func TestMethodValue(t *testing.T) { if i != 425 { t.Errorf("Interface MethodByName returned %d; want 425", i) } + + // For issue #33628: method args are not stored at the right offset + // on amd64p32. + m64 := ValueOf(&p).MethodByName("Int64Method").Interface().(func(int64) int64) + if x := m64(123); x != 123 { + t.Errorf("Int64Method returned %d; want 123", x) + } + m32 := ValueOf(&p).MethodByName("Int32Method").Interface().(func(int32) int32) + if x := m32(456); x != 456 { + t.Errorf("Int32Method returned %d; want 456", x) + } } func TestVariadicMethodValue(t *testing.T) { diff --git a/src/reflect/value.go b/src/reflect/value.go index 218b4d25cc..9ea95bc1d9 100644 --- a/src/reflect/value.go +++ b/src/reflect/value.go @@ -696,10 +696,16 @@ func callMethod(ctxt *methodValue, frame unsafe.Pointer, retValid *bool) { scratch := framePool.Get().(unsafe.Pointer) // Copy in receiver and rest of args. - // Avoid constructing out-of-bounds pointers if there are no args. storeRcvr(rcvr, scratch) - if argSize-ptrSize > 0 { - typedmemmovepartial(frametype, add(scratch, ptrSize, "argSize > ptrSize"), frame, ptrSize, argSize-ptrSize) + // Align the first arg. Only on amd64p32 the alignment can be + // larger than ptrSize. + argOffset := uintptr(ptrSize) + if len(t.in()) > 0 { + argOffset = align(argOffset, uintptr(t.in()[0].align)) + } + // Avoid constructing out-of-bounds pointers if there are no args. + if argSize-argOffset > 0 { + typedmemmovepartial(frametype, add(scratch, argOffset, "argSize > argOffset"), frame, argOffset, argSize-argOffset) } // Call. @@ -714,9 +720,9 @@ func callMethod(ctxt *methodValue, frame unsafe.Pointer, retValid *bool) { // Ignore any changes to args and just copy return values. // Avoid constructing out-of-bounds pointers if there are no return values. if frametype.size-retOffset > 0 { - callerRetOffset := retOffset - ptrSize + callerRetOffset := retOffset - argOffset if runtime.GOARCH == "amd64p32" { - callerRetOffset = align(argSize-ptrSize, 8) + callerRetOffset = align(argSize-argOffset, 8) } // This copies to the stack. Write barriers are not needed. memmove(add(frame, callerRetOffset, "frametype.size > retOffset"), From 395fd106bcb1fadad7fb20b21153f9bf20964d82 Mon Sep 17 00:00:00 2001 From: Dmitri Shuralyov Date: Tue, 13 Aug 2019 10:27:29 -0400 Subject: [PATCH 195/255] doc: document Go 1.12.8 and Go 1.11.13 Change-Id: I0daab6cd347e1fc0066e516f02c33f1b63e3f1a3 Reviewed-on: https://team-review.git.corp.google.com/c/golang/go-private/+/526992 Reviewed-by: Filippo Valsorda (cherry picked from commit 305f6dc30cfd163aa959ec4bd2a912f7c29da5c8) Reviewed-on: https://go-review.googlesource.com/c/go/+/190437 Reviewed-by: Filippo Valsorda --- doc/devel/release.html | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/doc/devel/release.html b/doc/devel/release.html index 6bca2e5ff8..1bb3730d8b 100644 --- a/doc/devel/release.html +++ b/doc/devel/release.html @@ -84,6 +84,13 @@ See the Go 1.12.7 milestone on our issue tracker for details.

    +

    +go1.12.8 (released 2019/08/13) includes security fixes to the +net/http and net/url packages. +See the Go +1.12.8 milestone on our issue tracker for details. +

    +

    go1.11 (released 2018/08/24)

    @@ -181,6 +188,13 @@ See the Go 1.11.12 milestone on our issue tracker for details.

    +

    +go1.11.13 (released 2019/08/13) includes security fixes to the +net/http and net/url packages. +See the Go +1.11.13 milestone on our issue tracker for details. +

    +

    go1.10 (released 2018/02/16)

    From 0212f0410f845815f5327a7f2e705891a9598f3d Mon Sep 17 00:00:00 2001 From: Dmitri Shuralyov Date: Thu, 15 Aug 2019 12:57:01 -0400 Subject: [PATCH 196/255] doc: document Go 1.12.9 Change-Id: I88b7e085fc70f9c021788d364099f5bc6b705ba8 Reviewed-on: https://go-review.googlesource.com/c/go/+/190438 Reviewed-by: Filippo Valsorda --- doc/devel/release.html | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/devel/release.html b/doc/devel/release.html index 1bb3730d8b..437e3c60a4 100644 --- a/doc/devel/release.html +++ b/doc/devel/release.html @@ -91,6 +91,13 @@ See the Go 1.12.8 milestone on our issue tracker for details.

    +

    +go1.12.9 (released 2019/08/15) includes fixes to the linker, +and the os and math/big packages. +See the Go +1.12.9 milestone on our issue tracker for details. +

    +

    go1.11 (released 2018/08/24)

    From 4983a0b75b40448d3245811ddcf682a9c86fc975 Mon Sep 17 00:00:00 2001 From: Joe Tsai Date: Fri, 16 Aug 2019 03:16:34 +0000 Subject: [PATCH 197/255] Revert "time: optimize Sub" This reverts commit CL 131196 because there is a bug in the calculation of nanoseconds. Fixes #33677 Change-Id: Ic8e94c547ee29b8aeda1b9a5cb9764dbf47b14b4 Reviewed-on: https://go-review.googlesource.com/c/go/+/190497 Run-TryBot: Andrew Bonventre TryBot-Result: Gobot Gobot Reviewed-by: Emmanuel Odeke Reviewed-by: Andrew Bonventre --- src/time/time.go | 33 ++++++++------------------------- src/time/time_test.go | 10 +--------- 2 files changed, 9 insertions(+), 34 deletions(-) diff --git a/src/time/time.go b/src/time/time.go index c8116a74f4..0d1cb9e5a1 100644 --- a/src/time/time.go +++ b/src/time/time.go @@ -906,33 +906,16 @@ func (t Time) Sub(u Time) Duration { } return d } - - ts, us := t.sec(), u.sec() - - var sec, nsec, d int64 - - ssub := ts - us - if (ssub < ts) != (us > 0) { - goto overflow - } - - if ssub < int64(minDuration/Second) || ssub > int64(maxDuration/Second) { - goto overflow - } - sec = ssub * int64(Second) - - nsec = int64(t.nsec() - u.nsec()) - d = sec + nsec - if (d > sec) != (nsec > 0) { - goto overflow - } - return Duration(d) - -overflow: - if t.Before(u) { + d := Duration(t.sec()-u.sec())*Second + Duration(t.nsec()-u.nsec()) + // Check for overflow or underflow. + switch { + case u.Add(d).Equal(t): + return d // d is correct + case t.Before(u): return minDuration // t - u is negative out of range + default: + return maxDuration // t - u is positive out of range } - return maxDuration // t - u is positive out of range } // Since returns the time elapsed since t. diff --git a/src/time/time_test.go b/src/time/time_test.go index dd3a8160cd..0ac3c3a27f 100644 --- a/src/time/time_test.go +++ b/src/time/time_test.go @@ -690,7 +690,7 @@ var gobTests = []Time{ Date(0, 1, 2, 3, 4, 5, 6, UTC), Date(7, 8, 9, 10, 11, 12, 13, FixedZone("", 0)), Unix(81985467080890095, 0x76543210), // Time.sec: 0x0123456789ABCDEF - {}, // nil location + {}, // nil location Date(1, 2, 3, 4, 5, 6, 7, FixedZone("", 32767*60)), Date(1, 2, 3, 4, 5, 6, 7, FixedZone("", -32768*60)), } @@ -1008,14 +1008,6 @@ func TestSub(t *testing.T) { } } -func BenchmarkSub(b *testing.B) { - for i := 0; i < b.N; i++ { - for _, st := range subTests { - st.t.Sub(st.u) - } - } -} - var nsDurationTests = []struct { d Duration want int64 From bb5441de4893c0802e3445250fbcc13c7b8e105c Mon Sep 17 00:00:00 2001 From: Joe Tsai Date: Fri, 16 Aug 2019 10:42:18 -0700 Subject: [PATCH 198/255] cmd/gofmt: update TestRewrite to avoid future regressions CL 162337 changed go/ast to better handle block comments, but was reverted because it introduced an off-by-one bug. This CL adds a test case to enforce the correct behavior so that future changes do not break this again. Updates #18929 Updates #33538 Change-Id: I2d25c139d007f8db1091b7a48b1dd20c584e2699 Reviewed-on: https://go-review.googlesource.com/c/go/+/190523 Run-TryBot: Joe Tsai TryBot-Result: Gobot Gobot Reviewed-by: Robert Griesemer --- src/cmd/gofmt/testdata/import.golden | 5 +++++ src/cmd/gofmt/testdata/import.input | 3 +++ 2 files changed, 8 insertions(+) diff --git a/src/cmd/gofmt/testdata/import.golden b/src/cmd/gofmt/testdata/import.golden index 51d7be79df..29bdc9baf4 100644 --- a/src/cmd/gofmt/testdata/import.golden +++ b/src/cmd/gofmt/testdata/import.golden @@ -8,6 +8,11 @@ import ( "math" ) +import ( + "fmt" + "math" +) + import ( "fmt" diff --git a/src/cmd/gofmt/testdata/import.input b/src/cmd/gofmt/testdata/import.input index 9a4b09dbf9..78ab4f6544 100644 --- a/src/cmd/gofmt/testdata/import.input +++ b/src/cmd/gofmt/testdata/import.input @@ -8,6 +8,9 @@ import ( "io" ) +import("fmt" +"math") + import ( "fmt" From c485506b0aae298652448e80fca35036bfa755ac Mon Sep 17 00:00:00 2001 From: Joe Tsai Date: Fri, 16 Aug 2019 10:36:01 -0700 Subject: [PATCH 199/255] time: update TestSub to avoid future regressions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CL 131196 optimized Time.Sub, but was reverted because it incorrectly computed the nanoseconds in some edge cases. This CL adds a test case to enforce the correct behavior so that a future optimization does not break this again. Updates #17858 Updates #33677 Change-Id: I596d8302ca6bf721cf7ca11cc6f939639fcbdd43 Reviewed-on: https://go-review.googlesource.com/c/go/+/190524 Run-TryBot: Joe Tsai Reviewed-by: Daniel Martí Reviewed-by: Andrew Bonventre TryBot-Result: Gobot Gobot --- src/time/time_test.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/time/time_test.go b/src/time/time_test.go index 0ac3c3a27f..95998c362f 100644 --- a/src/time/time_test.go +++ b/src/time/time_test.go @@ -690,7 +690,7 @@ var gobTests = []Time{ Date(0, 1, 2, 3, 4, 5, 6, UTC), Date(7, 8, 9, 10, 11, 12, 13, FixedZone("", 0)), Unix(81985467080890095, 0x76543210), // Time.sec: 0x0123456789ABCDEF - {}, // nil location + {}, // nil location Date(1, 2, 3, 4, 5, 6, 7, FixedZone("", 32767*60)), Date(1, 2, 3, 4, 5, 6, 7, FixedZone("", -32768*60)), } @@ -995,6 +995,7 @@ var subTests = []struct { {Date(2300, 1, 1, 0, 0, 0, 0, UTC), Date(2000, 1, 1, 0, 0, 0, 0, UTC), Duration(maxDuration)}, {Date(2000, 1, 1, 0, 0, 0, 0, UTC), Date(2290, 1, 1, 0, 0, 0, 0, UTC), -290*365*24*Hour - 71*24*Hour}, {Date(2000, 1, 1, 0, 0, 0, 0, UTC), Date(2300, 1, 1, 0, 0, 0, 0, UTC), Duration(minDuration)}, + {Date(2311, 11, 26, 02, 16, 47, 63535996, UTC), Date(2019, 8, 16, 2, 29, 30, 268436582, UTC), 9223372036795099414}, {MinMonoTime, MaxMonoTime, minDuration}, {MaxMonoTime, MinMonoTime, maxDuration}, } From 0dd120df7e97387411ddba9f58384e69e8862073 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Sat, 17 Aug 2019 13:22:22 -0700 Subject: [PATCH 200/255] encoding/json: fix format string in the Fuzz func Currently test build fails with: $ go test -tags=gofuzz encoding/json encoding/json/fuzz.go:36:4: Println call has possible formatting directive %s FAIL encoding/json [build failed] Change-Id: I23aef44a421ed0e7bcf48b74ac5a8c6768a4841b Reviewed-on: https://go-review.googlesource.com/c/go/+/190698 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- src/encoding/json/fuzz.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/encoding/json/fuzz.go b/src/encoding/json/fuzz.go index 4872b6f7ee..be03f0d7ff 100644 --- a/src/encoding/json/fuzz.go +++ b/src/encoding/json/fuzz.go @@ -33,7 +33,7 @@ func Fuzz(data []byte) (score int) { err = Unmarshal(m, u) if err != nil { fmt.Printf("v=%#v\n", v) - fmt.Println("m=%s\n", string(m)) + fmt.Printf("m=%s\n", m) panic(err) } } From d6ffc1d8394d6f6420bb92d79d320da88720fbe0 Mon Sep 17 00:00:00 2001 From: Wagner Riffel Date: Mon, 19 Aug 2019 00:41:12 -0300 Subject: [PATCH 201/255] doc: rewrite reference to plan9.bell-labs.com to 9p.io Change-Id: I75619feced842b8ca509ee08e01b63258c5e87ca Reviewed-on: https://go-review.googlesource.com/c/go/+/190757 Reviewed-by: Ian Lance Taylor Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot --- doc/go1.3.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/go1.3.html b/doc/go1.3.html index feed6480c7..18b3ec65d2 100644 --- a/doc/go1.3.html +++ b/doc/go1.3.html @@ -373,7 +373,7 @@ which can be useful information when debugging deadlocks or performance issues.

    A new package debug/plan9obj was added to the standard library. -It implements access to Plan 9 a.out object files. +It implements access to Plan 9 a.out object files.

    Major changes to the library

    From 53c088fbf05f42b24e1f7aa40889ca51055f9f29 Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Mon, 19 Aug 2019 13:17:34 -0400 Subject: [PATCH 202/255] cmd/go: fix "go help build -o" docs The docs refer to "the last two paragraphs", but in fact should refer to the first two of the previous three paragraphs. Moved up the out of place paragraph. Updates #14295 Change-Id: I066da7a665bc6754d246782b941af214a385017a Reviewed-on: https://go-review.googlesource.com/c/go/+/190839 Reviewed-by: Bryan C. Mills Reviewed-by: Dmitri Shuralyov Run-TryBot: Bryan C. Mills TryBot-Result: Gobot Gobot --- src/cmd/go/alldocs.go | 4 ++-- src/cmd/go/internal/work/build.go | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/cmd/go/alldocs.go b/src/cmd/go/alldocs.go index f15ff16abe..63ec2321be 100644 --- a/src/cmd/go/alldocs.go +++ b/src/cmd/go/alldocs.go @@ -78,6 +78,8 @@ // If the arguments to build are a list of .go files from a single directory, // build treats them as a list of source files specifying a single package. // +// When compiling packages, build ignores files that end in '_test.go'. +// // When compiling a single main package, build writes // the resulting executable to an output file named after // the first source file ('go build ed.go rx.go' writes 'ed' or 'ed.exe') @@ -88,8 +90,6 @@ // build compiles the packages but discards the resulting object, // serving only as a check that the packages can be built. // -// When compiling packages, build ignores files that end in '_test.go'. -// // The -o flag forces build to write the resulting executable or object // to the named output file or directory, instead of the default behavior described // in the last two paragraphs. If the named output is a directory that exists, diff --git a/src/cmd/go/internal/work/build.go b/src/cmd/go/internal/work/build.go index ed5a149da3..9305b2d859 100644 --- a/src/cmd/go/internal/work/build.go +++ b/src/cmd/go/internal/work/build.go @@ -30,6 +30,8 @@ along with their dependencies, but it does not install the results. If the arguments to build are a list of .go files from a single directory, build treats them as a list of source files specifying a single package. +When compiling packages, build ignores files that end in '_test.go'. + When compiling a single main package, build writes the resulting executable to an output file named after the first source file ('go build ed.go rx.go' writes 'ed' or 'ed.exe') @@ -40,8 +42,6 @@ When compiling multiple packages or a single non-main package, build compiles the packages but discards the resulting object, serving only as a check that the packages can be built. -When compiling packages, build ignores files that end in '_test.go'. - The -o flag forces build to write the resulting executable or object to the named output file or directory, instead of the default behavior described in the last two paragraphs. If the named output is a directory that exists, From 723852388eed2b023c7a47219ebebf722b3a7ced Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Tue, 20 Aug 2019 16:02:24 -0400 Subject: [PATCH 203/255] doc/go1.13: mention '-o ' support for 'go build' Fixes #33720 Updates #14295 Change-Id: I9cb6e02bcaccd7971057315163d8810157d465bd Reviewed-on: https://go-review.googlesource.com/c/go/+/190907 Run-TryBot: Bryan C. Mills TryBot-Result: Gobot Gobot Reviewed-by: Jay Conrod --- doc/go1.13.html | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/go1.13.html b/doc/go1.13.html index 71d56612a5..30ea1a5c30 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -389,6 +389,13 @@ go env -w GOSUMDB=off from the compiled executable, to improve build reproducibility.

    +

    + If the -o flag passed to go build + refers to an existing directory, go build will now + write executable files within that directory for main packages + matching its package arguments. +

    +

    The go build flag -tags now takes a comma-separated list of build tags, to allow for multiple tags in From c61c29fe563134f752ea14e794d08031982145e8 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Wed, 21 Aug 2019 10:43:49 -0400 Subject: [PATCH 204/255] cmd/go: accept GOSUMDB=sum.golang.google.cn This CL makes the go command understand that GOSUMDB=sum.golang.google.cn should connect to that domain but expect to find a checksum database signed by sum.golang.org there. The host sum.golang.google.cn is not yet completely configured; we hope it will be available in a few weeks. Change-Id: Ie0fc4323f0c7084dda59bd3b45fc406717fa16d9 Reviewed-on: https://go-review.googlesource.com/c/go/+/191137 Run-TryBot: Russ Cox Reviewed-by: Andrew Bonventre --- src/cmd/go/alldocs.go | 8 +++++--- src/cmd/go/internal/modfetch/fetch.go | 8 +++++--- src/cmd/go/internal/modfetch/sumdb.go | 12 +++++++++++- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/cmd/go/alldocs.go b/src/cmd/go/alldocs.go index 63ec2321be..ebbead5d31 100644 --- a/src/cmd/go/alldocs.go +++ b/src/cmd/go/alldocs.go @@ -2743,9 +2743,11 @@ // GOSUMDB="sum.golang.org+" // GOSUMDB="sum.golang.org+ https://sum.golang.org" // -// The go command knows the public key of sum.golang.org; use of any other -// database requires giving the public key explicitly. The URL defaults to -// "https://" followed by the database name. +// The go command knows the public key of sum.golang.org, and also that the name +// sum.golang.google.cn (available inside mainland China) connects to the +// sum.golang.org checksum database; use of any other database requires giving +// the public key explicitly. +// The URL defaults to "https://" followed by the database name. // // GOSUMDB defaults to "sum.golang.org", the Go checksum database run by Google. // See https://sum.golang.org/privacy for the service's privacy policy. diff --git a/src/cmd/go/internal/modfetch/fetch.go b/src/cmd/go/internal/modfetch/fetch.go index 74e36cc6fc..51a56028c4 100644 --- a/src/cmd/go/internal/modfetch/fetch.go +++ b/src/cmd/go/internal/modfetch/fetch.go @@ -701,9 +701,11 @@ to use and optionally its public key and URL, as in: GOSUMDB="sum.golang.org+" GOSUMDB="sum.golang.org+ https://sum.golang.org" -The go command knows the public key of sum.golang.org; use of any other -database requires giving the public key explicitly. The URL defaults to -"https://" followed by the database name. +The go command knows the public key of sum.golang.org, and also that the name +sum.golang.google.cn (available inside mainland China) connects to the +sum.golang.org checksum database; use of any other database requires giving +the public key explicitly. +The URL defaults to "https://" followed by the database name. GOSUMDB defaults to "sum.golang.org", the Go checksum database run by Google. See https://sum.golang.org/privacy for the service's privacy policy. diff --git a/src/cmd/go/internal/modfetch/sumdb.go b/src/cmd/go/internal/modfetch/sumdb.go index b0bb3d4d5e..1c24ec273b 100644 --- a/src/cmd/go/internal/modfetch/sumdb.go +++ b/src/cmd/go/internal/modfetch/sumdb.go @@ -60,7 +60,17 @@ func dbDial() (dbName string, db *sumweb.Conn, err error) { // $GOSUMDB can be "key" or "key url", // and the key can be a full verifier key // or a host on our list of known keys. - key := strings.Fields(cfg.GOSUMDB) + + // Special case: sum.golang.google.cn + // is an alias, reachable inside mainland China, + // for sum.golang.org. If there are more + // of these we should add a map like knownGOSUMDB. + gosumdb := cfg.GOSUMDB + if gosumdb == "sum.golang.google.cn" { + gosumdb = "sum.golang.org https://sum.golang.google.cn" + } + + key := strings.Fields(gosumdb) if len(key) >= 1 { if k := knownGOSUMDB[key[0]]; k != "" { key[0] = k From eee07a8e685e72c287ca4a0e7a049ce941ef6ab3 Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Tue, 20 Aug 2019 17:29:04 -0400 Subject: [PATCH 205/255] Revert "encoding/json: avoid work when unquoting strings" This reverts CL 151157. CL 151157 introduced a crash when decoding into ",string" fields. It came with a moderate speedup, so at this stage of the release cycle let's just revert it, and reapply it in Go 1.14 with the fix in CL 190659. Also applied the test cases from CL 190659. Updates #33728 Change-Id: Ie46e2bc15224b251888580daf6b79d5865f3878e Reviewed-on: https://go-review.googlesource.com/c/go/+/190909 Run-TryBot: Andrew Bonventre TryBot-Result: Gobot Gobot Reviewed-by: Andrew Bonventre --- src/encoding/json/decode.go | 68 ++++++++++++++++---------------- src/encoding/json/decode_test.go | 2 + 2 files changed, 36 insertions(+), 34 deletions(-) diff --git a/src/encoding/json/decode.go b/src/encoding/json/decode.go index bdd94e34ce..cbd71acfc6 100644 --- a/src/encoding/json/decode.go +++ b/src/encoding/json/decode.go @@ -272,9 +272,6 @@ type decodeState struct { savedError error useNumber bool disallowUnknownFields bool - // safeUnquote is the number of current string literal bytes that don't - // need to be unquoted. When negative, no bytes need unquoting. - safeUnquote int } // readIndex returns the position of the last byte read. @@ -376,27 +373,13 @@ func (d *decodeState) rescanLiteral() { Switch: switch data[i-1] { case '"': // string - // safeUnquote is initialized at -1, which means that all bytes - // checked so far can be unquoted at a later time with no work - // at all. When reaching the closing '"', if safeUnquote is - // still -1, all bytes can be unquoted with no work. Otherwise, - // only those bytes up until the first '\\' or non-ascii rune - // can be safely unquoted. - safeUnquote := -1 for ; i < len(data); i++ { - if c := data[i]; c == '\\' { - if safeUnquote < 0 { // first unsafe byte - safeUnquote = int(i - d.off) - } + switch data[i] { + case '\\': i++ // escaped char - } else if c == '"' { - d.safeUnquote = safeUnquote + case '"': i++ // tokenize the closing quote too break Switch - } else if c >= utf8.RuneSelf { - if safeUnquote < 0 { // first unsafe byte - safeUnquote = int(i - d.off) - } } } case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-': // number @@ -749,7 +732,7 @@ func (d *decodeState) object(v reflect.Value) error { start := d.readIndex() d.rescanLiteral() item := d.data[start:d.readIndex()] - key, ok := d.unquoteBytes(item) + key, ok := unquoteBytes(item) if !ok { panic(phasePanicMsg) } @@ -950,7 +933,7 @@ func (d *decodeState) literalStore(item []byte, v reflect.Value, fromQuoted bool d.saveError(&UnmarshalTypeError{Value: val, Type: v.Type(), Offset: int64(d.readIndex())}) return nil } - s, ok := d.unquoteBytes(item) + s, ok := unquoteBytes(item) if !ok { if fromQuoted { return fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", item, v.Type()) @@ -1001,7 +984,7 @@ func (d *decodeState) literalStore(item []byte, v reflect.Value, fromQuoted bool } case '"': // string - s, ok := d.unquoteBytes(item) + s, ok := unquoteBytes(item) if !ok { if fromQuoted { return fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", item, v.Type()) @@ -1159,7 +1142,7 @@ func (d *decodeState) objectInterface() map[string]interface{} { start := d.readIndex() d.rescanLiteral() item := d.data[start:d.readIndex()] - key, ok := d.unquote(item) + key, ok := unquote(item) if !ok { panic(phasePanicMsg) } @@ -1208,7 +1191,7 @@ func (d *decodeState) literalInterface() interface{} { return c == 't' case '"': // string - s, ok := d.unquote(item) + s, ok := unquote(item) if !ok { panic(phasePanicMsg) } @@ -1251,21 +1234,38 @@ func getu4(s []byte) rune { // unquote converts a quoted JSON string literal s into an actual string t. // The rules are different than for Go, so cannot use strconv.Unquote. -func (d *decodeState) unquote(s []byte) (t string, ok bool) { - s, ok = d.unquoteBytes(s) +func unquote(s []byte) (t string, ok bool) { + s, ok = unquoteBytes(s) t = string(s) return } -func (d *decodeState) unquoteBytes(s []byte) (t []byte, ok bool) { - r := d.safeUnquote - // The bytes have been scanned, so we know that the first and last bytes - // are double quotes. +func unquoteBytes(s []byte) (t []byte, ok bool) { + if len(s) < 2 || s[0] != '"' || s[len(s)-1] != '"' { + return + } s = s[1 : len(s)-1] - // If there are no unusual characters, no unquoting is needed, so return - // a slice of the original bytes. - if r == -1 { + // Check for unusual characters. If there are none, + // then no unquoting is needed, so return a slice of the + // original bytes. + r := 0 + for r < len(s) { + c := s[r] + if c == '\\' || c == '"' || c < ' ' { + break + } + if c < utf8.RuneSelf { + r++ + continue + } + rr, size := utf8.DecodeRune(s[r:]) + if rr == utf8.RuneError && size == 1 { + break + } + r += size + } + if r == len(s) { return s, true } diff --git a/src/encoding/json/decode_test.go b/src/encoding/json/decode_test.go index 719a9fa290..3f25893b41 100644 --- a/src/encoding/json/decode_test.go +++ b/src/encoding/json/decode_test.go @@ -1250,6 +1250,8 @@ var wrongStringTests = []wrongStringTest{ {`{"result":"foo"}`, `json: invalid use of ,string struct tag, trying to unmarshal "foo" into string`}, {`{"result":"123"}`, `json: invalid use of ,string struct tag, trying to unmarshal "123" into string`}, {`{"result":123}`, `json: invalid use of ,string struct tag, trying to unmarshal unquoted value into string`}, + {`{"result":"\""}`, `json: invalid use of ,string struct tag, trying to unmarshal "\"" into string`}, + {`{"result":"\"foo"}`, `json: invalid use of ,string struct tag, trying to unmarshal "\"foo" into string`}, } // If people misuse the ,string modifier, the error message should be From e764432605cb26478067890b49f4f16019c9a9b9 Mon Sep 17 00:00:00 2001 From: Emmanuel T Odeke Date: Tue, 20 Aug 2019 23:09:31 -0600 Subject: [PATCH 206/255] doc/go1.13: document _ between digits for math/big, strconv Document that: * math/big.Float.Parse * math/big.Int.SetString * strconv.ParseFloat * strconv.ParseInt * strconv.ParseUint now accept underscores to group digits only if base = 0, as per the Go 2 language changes. Updates #32815 Change-Id: Id45bd803a18442436419739297e8aed0d32ca56c Reviewed-on: https://go-review.googlesource.com/c/go/+/191077 Reviewed-by: Robert Griesemer --- doc/go1.13.html | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/doc/go1.13.html b/doc/go1.13.html index 30ea1a5c30..6cee0b28e6 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -723,6 +723,18 @@ godoc The new Rat.SetUint64 method sets the Rat to a uint64 value.

    +

    + For Float.Parse, if base is 0, underscores + may be used between digits for readability. + See the Changes to the language for details. +

    + +

    + For Int.SetString, if base is 0, underscores + may be used between digits for readability. + See the Changes to the language for details. +

    +

    Rat.SetString now accepts non-decimal floating point representations.

    @@ -888,6 +900,18 @@ godoc +
    strconv
    +
    +

    + For strconv.ParseFloat, + strconv.ParseInt + and strconv.ParseUint, + if base is 0, underscores may be used between digits for readability. + See the Changes to the language for details. +

    + +
    +
    strings

    From d9b13233378668a4fd24ac5d044e9d550cd2a8be Mon Sep 17 00:00:00 2001 From: Emmanuel T Odeke Date: Tue, 20 Aug 2019 23:30:43 -0600 Subject: [PATCH 207/255] strconv: update documentation Fixes #33750. Updates #31197. Change-Id: I26f63cef57e5f0eec85b84554c82f6d47b4f41a1 Reviewed-on: https://go-review.googlesource.com/c/go/+/191078 Reviewed-by: Robert Griesemer --- src/strconv/atof.go | 2 +- src/strconv/atoi.go | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/strconv/atof.go b/src/strconv/atof.go index 0903fa155a..190b25fbf5 100644 --- a/src/strconv/atof.go +++ b/src/strconv/atof.go @@ -643,7 +643,7 @@ func atof64(s string) (f float64, err error) { // ParseFloat returns the nearest floating-point number rounded // using IEEE754 unbiased rounding. // (Parsing a hexadecimal floating-point value only rounds when -// there are more bits in the hexadecimal representatiton than +// there are more bits in the hexadecimal representation than // will fit in the mantissa.) // // The errors that ParseFloat returns have concrete type *NumError diff --git a/src/strconv/atoi.go b/src/strconv/atoi.go index 31774d0c9a..0233f14b40 100644 --- a/src/strconv/atoi.go +++ b/src/strconv/atoi.go @@ -154,7 +154,8 @@ func ParseUint(s string, base int, bitSize int) (uint64, error) { // // If base == 0, the base is implied by the string's prefix: // base 2 for "0b", base 8 for "0" or "0o", base 16 for "0x", -// and base 10 otherwise. +// and base 10 otherwise. Also, for base == 0 only, underscore +// characters are permitted per the Go integer literal syntax. // If base is below 0, is 1, or is above 36, an error is returned. // // The bitSize argument specifies the integer type From f3e3b71a50d7a247d07cc4e4295ec2dc44b04b6a Mon Sep 17 00:00:00 2001 From: Jeff Hodges Date: Thu, 22 Aug 2019 06:51:44 +0000 Subject: [PATCH 208/255] net/http: change TimeoutHandler's docs to match its new interfaces As of Go 1.13rc1, TimeoutHandler supports the Flusher and Pusher interfaces and this change corrects its documentation to say that. Fixes #33769 Updates #29193 Change-Id: Ia0523f7f2e3dc1f8f0b68950b85a7bf81c4abe60 GitHub-Last-Rev: 5310d2c9608a1af2d3030a9573e920906c76744e GitHub-Pull-Request: golang/go#33770 Reviewed-on: https://go-review.googlesource.com/c/go/+/191237 Reviewed-by: Andrew Bonventre Run-TryBot: Andrew Bonventre TryBot-Result: Gobot Gobot --- src/net/http/server.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/net/http/server.go b/src/net/http/server.go index bcc283b66c..2eb16ff632 100644 --- a/src/net/http/server.go +++ b/src/net/http/server.go @@ -3177,8 +3177,8 @@ func (srv *Server) onceSetNextProtoDefaults() { // After such a timeout, writes by h to its ResponseWriter will return // ErrHandlerTimeout. // -// TimeoutHandler buffers all Handler writes to memory and does not -// support the Hijacker or Flusher interfaces. +// TimeoutHandler supports the Flusher and Pusher interfaces but does not +// support the Hijacker interface. func TimeoutHandler(h Handler, dt time.Duration, msg string) Handler { return &timeoutHandler{ handler: h, From 65e624e7b9c9bbeb04a3c3a29a88986a4b8b816c Mon Sep 17 00:00:00 2001 From: Jonathan Amsterdam Date: Thu, 22 Aug 2019 12:40:52 -0400 Subject: [PATCH 209/255] syscall: document relationship among Errno, errors.Is and os.Err* - Add doc to syscall.Errno (and syscall.ErrorString for plan9). - Mention under `syscall` in release notes. Fixes #33436. Change-Id: I032ffebaa76ed67eb9d748e7645ca73f26144ea0 Reviewed-on: https://go-review.googlesource.com/c/go/+/191337 Reviewed-by: Ian Lance Taylor --- doc/go1.13.html | 7 +++++++ src/syscall/syscall_js.go | 6 ++++++ src/syscall/syscall_nacl.go | 6 ++++++ src/syscall/syscall_plan9.go | 6 ++++++ src/syscall/syscall_unix.go | 6 ++++++ src/syscall/syscall_windows.go | 6 ++++++ 6 files changed, 37 insertions(+) diff --git a/doc/go1.13.html b/doc/go1.13.html index 6cee0b28e6..5760669fe5 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -961,6 +961,13 @@ godoc Chmod mode on Windows.

    +

    + Values of type Errno can be tested against error values in + the os package, + like ErrExist, using + errors.Is. +

    +
    syscall/js
    diff --git a/src/syscall/syscall_js.go b/src/syscall/syscall_js.go index 175fe47fca..24fbd51189 100644 --- a/src/syscall/syscall_js.go +++ b/src/syscall/syscall_js.go @@ -44,6 +44,12 @@ const PathMax = 256 // if errno != 0 { // err = errno // } +// +// Errno values can be tested against error values from the the os package +// using errors.Is. For example: +// +// _, _, err := syscall.Syscall(...) +// if errors.Is(err, os.ErrNotExist) ... type Errno uintptr func (e Errno) Error() string { diff --git a/src/syscall/syscall_nacl.go b/src/syscall/syscall_nacl.go index e887b1e04e..efc986a6f4 100644 --- a/src/syscall/syscall_nacl.go +++ b/src/syscall/syscall_nacl.go @@ -51,6 +51,12 @@ const PathMax = 256 // if errno != 0 { // err = errno // } +// +// Errno values can be tested against error values from the the os package +// using errors.Is. For example: +// +// _, _, err := syscall.Syscall(...) +// if errors.Is(err, os.ErrNotExist) ... type Errno uintptr func (e Errno) Error() string { diff --git a/src/syscall/syscall_plan9.go b/src/syscall/syscall_plan9.go index c11f030531..52a9d2aabe 100644 --- a/src/syscall/syscall_plan9.go +++ b/src/syscall/syscall_plan9.go @@ -20,6 +20,12 @@ const ImplementsGetwd = true const bitSize16 = 2 // ErrorString implements Error's String method by returning itself. +// +// ErrorString values can be tested against error values from the the os package +// using errors.Is. For example: +// +// _, _, err := syscall.Syscall(...) +// if errors.Is(err, os.ErrNotExist) ... type ErrorString string func (e ErrorString) Error() string { return string(e) } diff --git a/src/syscall/syscall_unix.go b/src/syscall/syscall_unix.go index 59c8c34933..4a6305e4c5 100644 --- a/src/syscall/syscall_unix.go +++ b/src/syscall/syscall_unix.go @@ -107,6 +107,12 @@ func (m *mmapper) Munmap(data []byte) (err error) { // if errno != 0 { // err = errno // } +// +// Errno values can be tested against error values from the the os package +// using errors.Is. For example: +// +// _, _, err := syscall.Syscall(...) +// if errors.Is(err, os.ErrNotExist) ... type Errno uintptr func (e Errno) Error() string { diff --git a/src/syscall/syscall_windows.go b/src/syscall/syscall_windows.go index 2e8edc7acc..cfa9d9c5d0 100644 --- a/src/syscall/syscall_windows.go +++ b/src/syscall/syscall_windows.go @@ -77,6 +77,12 @@ func UTF16PtrFromString(s string) (*uint16, error) { } // Errno is the Windows error number. +// +// Errno values can be tested against error values from the the os package +// using errors.Is. For example: +// +// _, _, err := syscall.Syscall(...) +// if errors.Is(err, os.ErrNotExist) ... type Errno uintptr func langid(pri, sub uint16) uint32 { return uint32(sub)<<10 | uint32(pri) } From 5498fa90e9921193be11c6e6a9e017a53c0e1588 Mon Sep 17 00:00:00 2001 From: Rob Pike Date: Thu, 22 Aug 2019 15:50:06 +1000 Subject: [PATCH 210/255] strconv: simplify the text for bases in ParseInt Followon from a review comment in https://golang.org/cl/191078 Change-Id: If115b2ae0df5e5cb9babd60802947ddb687d56c2 Reviewed-on: https://go-review.googlesource.com/c/go/+/191219 Reviewed-by: Ian Lance Taylor --- src/strconv/atoi.go | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/strconv/atoi.go b/src/strconv/atoi.go index 0233f14b40..e811bc4df1 100644 --- a/src/strconv/atoi.go +++ b/src/strconv/atoi.go @@ -152,11 +152,10 @@ func ParseUint(s string, base int, bitSize int) (uint64, error) { // ParseInt interprets a string s in the given base (0, 2 to 36) and // bit size (0 to 64) and returns the corresponding value i. // -// If base == 0, the base is implied by the string's prefix: -// base 2 for "0b", base 8 for "0" or "0o", base 16 for "0x", -// and base 10 otherwise. Also, for base == 0 only, underscore -// characters are permitted per the Go integer literal syntax. -// If base is below 0, is 1, or is above 36, an error is returned. +// If the base argument is 0, the true base is implied by the string's +// prefix: 2 for "0b", 8 for "0" or "0o", 16 for "0x", and 10 otherwise. +// Also, for argument base 0 only, underscore characters are permitted +// as defined by the Go syntax for integer literals. // // The bitSize argument specifies the integer type // that the result must fit into. Bit sizes 0, 8, 16, 32, and 64 From 145e193131eb486077b66009beb051aba07c52a5 Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Tue, 13 Aug 2019 16:29:01 -0400 Subject: [PATCH 211/255] net/http: update bundled golang.org/x/net/http2 to import security fix Update golang.org/x/net to v0.0.0-20190813141303-74dc4d7220e7 to import the following security fix. commit 74dc4d7220e7acc4e100824340f3e66577424772 Author: Filippo Valsorda Date: Sun Aug 11 02:12:18 2019 -0400 http2: limit number of control frames in server send queue An attacker could cause servers to queue an unlimited number of PING ACKs or RST_STREAM frames by soliciting them and not reading them, until the program runs out of memory. Limit control frames in the queue to a few thousands (matching the limit imposed by other vendors) by counting as they enter and exit the scheduler, so the protection will work with any WriteScheduler. Once the limit is exceeded, close the connection, as we have no way to communicate with the peer. Change-Id: I842968fc6ed3eac654b497ade8cea86f7267886b Reviewed-on: https://team-review.git.corp.google.com/c/golang/go-private/+/525552 Reviewed-by: Brad Fitzpatrick This change was generated with cmd/go and cmd/bundle: $ go get -u golang.org/x/net $ go mod tidy $ go mod vendor $ go generate net/http Fixes CVE-2019-9512 and CVE-2019-9514 Fixes #33606 Change-Id: I464baf96175006aa101d65d3b0f6494f28a626ab Reviewed-on: https://go-review.googlesource.com/c/go/+/190137 Reviewed-by: Dmitri Shuralyov --- src/go.mod | 2 +- src/go.sum | 4 +- src/net/http/h2_bundle.go | 56 +++++++++++++++---- .../x/net/lif/zsys_solaris_amd64.go | 2 +- .../golang.org/x/net/route/zsys_darwin.go | 2 +- .../golang.org/x/net/route/zsys_dragonfly.go | 2 +- .../x/net/route/zsys_freebsd_386.go | 2 +- .../x/net/route/zsys_freebsd_amd64.go | 2 +- .../x/net/route/zsys_freebsd_arm.go | 2 +- .../golang.org/x/net/route/zsys_netbsd.go | 2 +- .../golang.org/x/net/route/zsys_openbsd.go | 2 +- src/vendor/modules.txt | 2 +- 12 files changed, 58 insertions(+), 22 deletions(-) diff --git a/src/go.mod b/src/go.mod index 0d7d70f014..90af2a7ea0 100644 --- a/src/go.mod +++ b/src/go.mod @@ -4,7 +4,7 @@ go 1.12 require ( golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8 - golang.org/x/net v0.0.0-20190607181551-461777fb6f67 + golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7 golang.org/x/sys v0.0.0-20190529130038-5219a1e1c5f8 // indirect golang.org/x/text v0.3.2 // indirect ) diff --git a/src/go.sum b/src/go.sum index 363ee7ae23..e358118e4c 100644 --- a/src/go.sum +++ b/src/go.sum @@ -2,8 +2,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8 h1:1wopBVtVdWnn03fZelqdXTqk7U7zPQCb+T4rbU9ZEoU= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190607181551-461777fb6f67 h1:rJJxsykSlULwd2P2+pg/rtnwN2FrWp4IuCxOSyS0V00= -golang.org/x/net v0.0.0-20190607181551-461777fb6f67/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7 h1:fHDIZ2oxGnUZRN6WgWFCbYBjH9uqVPRCUVUDhs0wnbA= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190529130038-5219a1e1c5f8 h1:2WjIC11WRITGlVWmyLXKjzIVj1ZwoWZ//tadeUUV6/o= diff --git a/src/net/http/h2_bundle.go b/src/net/http/h2_bundle.go index 173622fc8b..53cc5bd1b8 100644 --- a/src/net/http/h2_bundle.go +++ b/src/net/http/h2_bundle.go @@ -3611,10 +3611,11 @@ func (p *http2pipe) Done() <-chan struct{} { } const ( - http2prefaceTimeout = 10 * time.Second - http2firstSettingsTimeout = 2 * time.Second // should be in-flight with preface anyway - http2handlerChunkWriteSize = 4 << 10 - http2defaultMaxStreams = 250 // TODO: make this 100 as the GFE seems to? + http2prefaceTimeout = 10 * time.Second + http2firstSettingsTimeout = 2 * time.Second // should be in-flight with preface anyway + http2handlerChunkWriteSize = 4 << 10 + http2defaultMaxStreams = 250 // TODO: make this 100 as the GFE seems to? + http2maxQueuedControlFrames = 10000 ) var ( @@ -3722,6 +3723,15 @@ func (s *http2Server) maxConcurrentStreams() uint32 { return http2defaultMaxStreams } +// maxQueuedControlFrames is the maximum number of control frames like +// SETTINGS, PING and RST_STREAM that will be queued for writing before +// the connection is closed to prevent memory exhaustion attacks. +func (s *http2Server) maxQueuedControlFrames() int { + // TODO: if anybody asks, add a Server field, and remember to define the + // behavior of negative values. + return http2maxQueuedControlFrames +} + type http2serverInternalState struct { mu sync.Mutex activeConns map[*http2serverConn]struct{} @@ -4065,6 +4075,7 @@ type http2serverConn struct { sawFirstSettings bool // got the initial SETTINGS frame after the preface needToSendSettingsAck bool unackedSettings int // how many SETTINGS have we sent without ACKs? + queuedControlFrames int // control frames in the writeSched queue clientMaxStreams uint32 // SETTINGS_MAX_CONCURRENT_STREAMS from client (our PUSH_PROMISE limit) advMaxStreams uint32 // our SETTINGS_MAX_CONCURRENT_STREAMS advertised the client curClientStreams uint32 // number of open streams initiated by the client @@ -4456,6 +4467,14 @@ func (sc *http2serverConn) serve() { } } + // If the peer is causing us to generate a lot of control frames, + // but not reading them from us, assume they are trying to make us + // run out of memory. + if sc.queuedControlFrames > sc.srv.maxQueuedControlFrames() { + sc.vlogf("http2: too many control frames in send queue, closing connection") + return + } + // Start the shutdown timer after sending a GOAWAY. When sending GOAWAY // with no error code (graceful shutdown), don't start the timer until // all open streams have been completed. @@ -4657,6 +4676,14 @@ func (sc *http2serverConn) writeFrame(wr http2FrameWriteRequest) { } if !ignoreWrite { + if wr.isControl() { + sc.queuedControlFrames++ + // For extra safety, detect wraparounds, which should not happen, + // and pull the plug. + if sc.queuedControlFrames < 0 { + sc.conn.Close() + } + } sc.writeSched.Push(wr) } sc.scheduleFrameWrite() @@ -4774,10 +4801,8 @@ func (sc *http2serverConn) wroteFrame(res http2frameWriteResult) { // If a frame is already being written, nothing happens. This will be called again // when the frame is done being written. // -// If a frame isn't being written we need to send one, the best frame -// to send is selected, preferring first things that aren't -// stream-specific (e.g. ACKing settings), and then finding the -// highest priority stream. +// If a frame isn't being written and we need to send one, the best frame +// to send is selected by writeSched. // // If a frame isn't being written and there's nothing else to send, we // flush the write buffer. @@ -4805,6 +4830,9 @@ func (sc *http2serverConn) scheduleFrameWrite() { } if !sc.inGoAway || sc.goAwayCode == http2ErrCodeNo { if wr, ok := sc.writeSched.Pop(); ok { + if wr.isControl() { + sc.queuedControlFrames-- + } sc.startFrameWrite(wr) continue } @@ -5097,6 +5125,8 @@ func (sc *http2serverConn) processSettings(f *http2SettingsFrame) error { if err := f.ForeachSetting(sc.processSetting); err != nil { return err } + // TODO: judging by RFC 7540, Section 6.5.3 each SETTINGS frame should be + // acknowledged individually, even if multiple are received before the ACK. sc.needToSendSettingsAck = true sc.scheduleFrameWrite() return nil @@ -7451,7 +7481,7 @@ func (cc *http2ClientConn) roundTrip(req *Request) (res *Response, gotErrAfterRe req.Method != "HEAD" { // Request gzip only, not deflate. Deflate is ambiguous and // not as universally supported anyway. - // See: http://www.gzip.org/zlib/zlib_faq.html#faq38 + // See: https://zlib.net/zlib_faq.html#faq39 // // Note that we don't request this for HEAD requests, // due to a bug in nginx: @@ -9445,7 +9475,7 @@ type http2WriteScheduler interface { // Pop dequeues the next frame to write. Returns false if no frames can // be written. Frames with a given wr.StreamID() are Pop'd in the same - // order they are Push'd. + // order they are Push'd. No frames should be discarded except by CloseStream. Pop() (wr http2FrameWriteRequest, ok bool) } @@ -9489,6 +9519,12 @@ func (wr http2FrameWriteRequest) StreamID() uint32 { return wr.stream.id } +// isControl reports whether wr is a control frame for MaxQueuedControlFrames +// purposes. That includes non-stream frames and RST_STREAM frames. +func (wr http2FrameWriteRequest) isControl() bool { + return wr.stream == nil +} + // DataSize returns the number of flow control bytes that must be consumed // to write this entire frame. This is 0 for non-DATA frames. func (wr http2FrameWriteRequest) DataSize() int { diff --git a/src/vendor/golang.org/x/net/lif/zsys_solaris_amd64.go b/src/vendor/golang.org/x/net/lif/zsys_solaris_amd64.go index b5e999bec3..d7a70d4ed9 100644 --- a/src/vendor/golang.org/x/net/lif/zsys_solaris_amd64.go +++ b/src/vendor/golang.org/x/net/lif/zsys_solaris_amd64.go @@ -1,4 +1,4 @@ -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs defs_solaris.go package lif diff --git a/src/vendor/golang.org/x/net/route/zsys_darwin.go b/src/vendor/golang.org/x/net/route/zsys_darwin.go index 4e2e1ab090..19e4133f7d 100644 --- a/src/vendor/golang.org/x/net/route/zsys_darwin.go +++ b/src/vendor/golang.org/x/net/route/zsys_darwin.go @@ -1,4 +1,4 @@ -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs defs_darwin.go package route diff --git a/src/vendor/golang.org/x/net/route/zsys_dragonfly.go b/src/vendor/golang.org/x/net/route/zsys_dragonfly.go index 719c88d11f..8ed2d4d550 100644 --- a/src/vendor/golang.org/x/net/route/zsys_dragonfly.go +++ b/src/vendor/golang.org/x/net/route/zsys_dragonfly.go @@ -1,4 +1,4 @@ -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs defs_dragonfly.go package route diff --git a/src/vendor/golang.org/x/net/route/zsys_freebsd_386.go b/src/vendor/golang.org/x/net/route/zsys_freebsd_386.go index b03bc01f65..f36aaadb59 100644 --- a/src/vendor/golang.org/x/net/route/zsys_freebsd_386.go +++ b/src/vendor/golang.org/x/net/route/zsys_freebsd_386.go @@ -1,4 +1,4 @@ -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs defs_freebsd.go package route diff --git a/src/vendor/golang.org/x/net/route/zsys_freebsd_amd64.go b/src/vendor/golang.org/x/net/route/zsys_freebsd_amd64.go index 0b675b3d3f..4c639b82e4 100644 --- a/src/vendor/golang.org/x/net/route/zsys_freebsd_amd64.go +++ b/src/vendor/golang.org/x/net/route/zsys_freebsd_amd64.go @@ -1,4 +1,4 @@ -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs defs_freebsd.go package route diff --git a/src/vendor/golang.org/x/net/route/zsys_freebsd_arm.go b/src/vendor/golang.org/x/net/route/zsys_freebsd_arm.go index 58f8ea16f2..710c1472b6 100644 --- a/src/vendor/golang.org/x/net/route/zsys_freebsd_arm.go +++ b/src/vendor/golang.org/x/net/route/zsys_freebsd_arm.go @@ -1,4 +1,4 @@ -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs defs_freebsd.go package route diff --git a/src/vendor/golang.org/x/net/route/zsys_netbsd.go b/src/vendor/golang.org/x/net/route/zsys_netbsd.go index e0df45e8b5..b4f66ca6cb 100644 --- a/src/vendor/golang.org/x/net/route/zsys_netbsd.go +++ b/src/vendor/golang.org/x/net/route/zsys_netbsd.go @@ -1,4 +1,4 @@ -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs defs_netbsd.go package route diff --git a/src/vendor/golang.org/x/net/route/zsys_openbsd.go b/src/vendor/golang.org/x/net/route/zsys_openbsd.go index db8c8efb49..1021b4cea4 100644 --- a/src/vendor/golang.org/x/net/route/zsys_openbsd.go +++ b/src/vendor/golang.org/x/net/route/zsys_openbsd.go @@ -1,4 +1,4 @@ -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs defs_openbsd.go package route diff --git a/src/vendor/modules.txt b/src/vendor/modules.txt index 20f261bf83..453a312661 100644 --- a/src/vendor/modules.txt +++ b/src/vendor/modules.txt @@ -7,7 +7,7 @@ golang.org/x/crypto/hkdf golang.org/x/crypto/internal/chacha20 golang.org/x/crypto/internal/subtle golang.org/x/crypto/poly1305 -# golang.org/x/net v0.0.0-20190607181551-461777fb6f67 +# golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7 golang.org/x/net/dns/dnsmessage golang.org/x/net/http/httpguts golang.org/x/net/http/httpproxy From e68412984e644256ca3cdd6d6687ed0ce71ab2a6 Mon Sep 17 00:00:00 2001 From: Jay Conrod Date: Fri, 23 Aug 2019 15:24:26 -0400 Subject: [PATCH 212/255] all: update 'go get' command in standard library README.vendor The -m flag is removed in Go 1.13. -d should be used instead. Change-Id: Ia53764748309f16cb231e5ac6770400a73804484 Reviewed-on: https://go-review.googlesource.com/c/go/+/191621 Run-TryBot: Jay Conrod Reviewed-by: Dmitri Shuralyov TryBot-Result: Gobot Gobot --- src/README.vendor | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/README.vendor b/src/README.vendor index c80265344e..e74fc2f316 100644 --- a/src/README.vendor +++ b/src/README.vendor @@ -41,13 +41,13 @@ The vendor directory may be updated with 'go mod vendor'. A typical sequence might be: cd src - go get -m golang.org/x/net@latest + go get -d golang.org/x/net@latest go mod tidy go mod vendor Use caution when passing '-u' to 'go get'. The '-u' flag updates -modules providing all transitively imported packages, not just -the target module. +modules providing all transitively imported packages, not only +the module providing the target package. Note that 'go mod vendor' only copies packages that are transitively imported by packages in the current module. If a new package is needed, From 9e1c864afe00b3cfba3e09d7c67fc17526db464a Mon Sep 17 00:00:00 2001 From: Emmanuel T Odeke Date: Fri, 23 Aug 2019 10:05:56 -0600 Subject: [PATCH 213/255] doc/go1.13: document fmt's number syntax updates Fixes #32815 Change-Id: Ia8ac9943a920a056ba7dbc69c1c70fa188f7aca8 Reviewed-on: https://go-review.googlesource.com/c/go/+/191578 Reviewed-by: Robert Griesemer --- doc/go1.13.html | 18 ++++++++++++++++++ src/fmt/scan.go | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/doc/go1.13.html b/doc/go1.13.html index 5760669fe5..0dd2532965 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -667,6 +667,24 @@ godoc
    fmt
    + +

    + The printing verbs %x and %X now format floating-point and + complex numbers in hexadecimal notation, in lower-case and upper-case respectively. +

    + + +

    + The new printing verb %O formats integers in base 8, emitting the 0o prefix. +

    + + +

    + The scanner now accepts hexadecimal floating-point values, digit-separating underscores + and leading 0b and 0o prefixes. + See the Changes to the language for details. +

    +

    The Errorf function has a new verb, %w, whose operand must be an error. diff --git a/src/fmt/scan.go b/src/fmt/scan.go index 74ada20de7..0dab2c98f7 100644 --- a/src/fmt/scan.go +++ b/src/fmt/scan.go @@ -609,7 +609,7 @@ func (s *ss) scanRune(bitSize int) int64 { return r } -// scanBasePrefix reports whether the integer begins with a bas prefix +// scanBasePrefix reports whether the integer begins with a base prefix // and returns the base, digit string, and whether a zero was found. // It is called only if the verb is %v. func (s *ss) scanBasePrefix() (base int, digits string, zeroFound bool) { From 66ff373911a87140319a6550e4e1b2c6043b1329 Mon Sep 17 00:00:00 2001 From: Cherry Zhang Date: Fri, 23 Aug 2019 14:40:20 -0400 Subject: [PATCH 214/255] cmd/vendor: update vendored x/arch repo to 8a70ba74b3a1 Update vendored x/arch repo to pick up the fix of issue #33802. This is done with the following commands: $ cd $GOROOT/src/cmd $ go get -d golang.org/x/arch@latest go: finding golang.org/x/arch latest go: downloading golang.org/x/arch v0.0.0-20190815191158-8a70ba74b3a1 go: extracting golang.org/x/arch v0.0.0-20190815191158-8a70ba74b3a1 $ go mod tidy $ go mod vendor Fixes #33802. Change-Id: I0a44f1d83d6f573124cea1f099378b1c851f3feb Reviewed-on: https://go-review.googlesource.com/c/go/+/191619 Run-TryBot: Cherry Zhang TryBot-Result: Gobot Gobot Reviewed-by: Emmanuel Odeke Reviewed-by: Dmitri Shuralyov Reviewed-by: Jay Conrod --- src/cmd/go.mod | 2 +- src/cmd/go.sum | 5 +++-- .../golang.org/x/arch/x86/x86asm/decode.go | 16 ++++++++-------- src/cmd/vendor/modules.txt | 2 +- 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/cmd/go.mod b/src/cmd/go.mod index 3d9b4a8d24..19496a3c67 100644 --- a/src/cmd/go.mod +++ b/src/cmd/go.mod @@ -5,7 +5,7 @@ go 1.12 require ( github.com/google/pprof v0.0.0-20190515194954-54271f7e092f github.com/ianlancetaylor/demangle v0.0.0-20180524225900-fc6590592b44 // indirect - golang.org/x/arch v0.0.0-20181203225421-5a4828bb7045 + golang.org/x/arch v0.0.0-20190815191158-8a70ba74b3a1 golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82 // indirect golang.org/x/tools v0.0.0-20190611154301-25a4f137592f diff --git a/src/cmd/go.sum b/src/cmd/go.sum index da3123b9f0..9aa94eee7b 100644 --- a/src/cmd/go.sum +++ b/src/cmd/go.sum @@ -2,8 +2,8 @@ github.com/google/pprof v0.0.0-20190515194954-54271f7e092f h1:Jnx61latede7zDD3Di github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/ianlancetaylor/demangle v0.0.0-20180524225900-fc6590592b44 h1:pKqc8lAAA6rcwpvsephnRuZp4VHbfszZRClvqAE6Sq8= github.com/ianlancetaylor/demangle v0.0.0-20180524225900-fc6590592b44/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -golang.org/x/arch v0.0.0-20181203225421-5a4828bb7045 h1:Pn8fQdvx+z1avAi7fdM2kRYWQNxGlavNDSyzrQg2SsU= -golang.org/x/arch v0.0.0-20181203225421-5a4828bb7045/go.mod h1:cYlCBUl1MsqxdiKgmc4uh7TxZfWSFLOGSRR090WDxt8= +golang.org/x/arch v0.0.0-20190815191158-8a70ba74b3a1 h1:A71BZbKSu+DtCNry/x5JKn20C+64DirDHmePEA8k0FY= +golang.org/x/arch v0.0.0-20190815191158-8a70ba74b3a1/go.mod h1:flIaEI6LNU6xOCD5PaJvn9wGP0agmIOqjrtsKGRguv4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c h1:Vj5n4GlwjmQteupaxJ9+0FNOmBrHfq7vN4btdGoDZgI= golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -17,3 +17,4 @@ golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/tools v0.0.0-20190611154301-25a4f137592f h1:6awn5JC4pwVI5HiBqs7MDtRxnwV9PpO5iSA9v6P09pA= golang.org/x/tools v0.0.0-20190611154301-25a4f137592f/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= diff --git a/src/cmd/vendor/golang.org/x/arch/x86/x86asm/decode.go b/src/cmd/vendor/golang.org/x/arch/x86/x86asm/decode.go index 148870b73d..8c984970bd 100644 --- a/src/cmd/vendor/golang.org/x/arch/x86/x86asm/decode.go +++ b/src/cmd/vendor/golang.org/x/arch/x86/x86asm/decode.go @@ -203,7 +203,9 @@ func instPrefix(b byte, mode int) (Inst, error) { // For now we use instPrefix but perhaps later we will return // a specific error here. func truncated(src []byte, mode int) (Inst, error) { - // return Inst{}, len(src), ErrTruncated + if len(src) == 0 { + return Inst{}, ErrTruncated + } return instPrefix(src[0], mode) // too long } @@ -216,7 +218,6 @@ var ( // decoderCover records coverage information for which parts // of the byte code have been executed. -// TODO(rsc): This is for testing. Only use this if a flag is given. var decoderCover []bool // Decode decodes the leading bytes in src as a single instruction. @@ -406,7 +407,7 @@ ReadPrefixes: //Group 5 - Vex encoding case 0xC5: - if pos == 0 && (mode == 64 || (mode == 32 && pos+1 < len(src) && src[pos+1]&0xc0 == 0xc0)) { + if pos == 0 && pos+1 < len(src) && (mode == 64 || (mode == 32 && src[pos+1]&0xc0 == 0xc0)) { vex = p vexIndex = pos inst.Prefix[pos] = p @@ -418,7 +419,7 @@ ReadPrefixes: break ReadPrefixes } case 0xC4: - if pos == 0 && (mode == 64 || (mode == 32 && pos+2 < len(src) && src[pos+1]&0xc0 == 0xc0)) { + if pos == 0 && pos+2 < len(src) && (mode == 64 || (mode == 32 && src[pos+1]&0xc0 == 0xc0)) { vex = p vexIndex = pos inst.Prefix[pos] = p @@ -460,9 +461,6 @@ ReadPrefixes: // opshift gives the shift to use when saving the next // opcode byte into inst.Opcode. opshift = 24 - if decoderCover == nil { - decoderCover = make([]bool, len(decoder)) - } // Decode loop, executing decoder program. var oldPC, prevPC int @@ -474,7 +472,9 @@ Decode: println("run", pc) } x := decoder[pc] - decoderCover[pc] = true + if decoderCover != nil { + decoderCover[pc] = true + } pc++ // Read and decode ModR/M if needed by opcode. diff --git a/src/cmd/vendor/modules.txt b/src/cmd/vendor/modules.txt index caf340a752..e873ad4455 100644 --- a/src/cmd/vendor/modules.txt +++ b/src/cmd/vendor/modules.txt @@ -16,7 +16,7 @@ github.com/google/pprof/third_party/d3flamegraph github.com/google/pprof/third_party/svgpan # github.com/ianlancetaylor/demangle v0.0.0-20180524225900-fc6590592b44 github.com/ianlancetaylor/demangle -# golang.org/x/arch v0.0.0-20181203225421-5a4828bb7045 +# golang.org/x/arch v0.0.0-20190815191158-8a70ba74b3a1 golang.org/x/arch/arm/armasm golang.org/x/arch/arm64/arm64asm golang.org/x/arch/ppc64/ppc64asm From 739123c3a36f30af06c294741f74a26e54ee21ad Mon Sep 17 00:00:00 2001 From: Jonathan Amsterdam Date: Fri, 28 Jun 2019 19:20:04 -0400 Subject: [PATCH 215/255] errors: add example showing a custom error with Unwrap Change-Id: I2bddee9b460d3875911859b49528a00d318f37fc Reviewed-on: https://go-review.googlesource.com/c/go/+/184237 Reviewed-by: Russ Cox Reviewed-by: Emmanuel Odeke --- src/errors/example_unwrap_test.go | 56 +++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/errors/example_unwrap_test.go diff --git a/src/errors/example_unwrap_test.go b/src/errors/example_unwrap_test.go new file mode 100644 index 0000000000..05c9cd466f --- /dev/null +++ b/src/errors/example_unwrap_test.go @@ -0,0 +1,56 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package errors_test + +import ( + "errors" + "fmt" + "os" + "time" +) + +// MyError2 is an error implementation that includes a time, a message, and an +// underlying error. +type MyError2 struct { + When time.Time + What string + err error +} + +func (e MyError2) Error() string { + return fmt.Sprintf("%v at %v: %v", e.What, e.When, e.err) +} + +// Unwrap returns e's underlying error, or nil if there is none. +func (e MyError2) Unwrap() error { + return e.err +} + +func readConfig() error { + if _, err := os.Open("non-existing"); err != nil { + return MyError2{ + time.Date(1989, 3, 15, 22, 30, 0, 0, time.UTC), + "reading config file", + err, + } + } + return nil +} + +func Example_unwrap() { + if err := readConfig(); err != nil { + // Display the error. + fmt.Println(err) + // If we can retrieve the path, try to recover + // by taking another action. + var pe *os.PathError + if errors.As(err, &pe) { + restoreFile(pe.Path) + } + } + // Output: reading config file at 1989-03-15 22:30:00 +0000 UTC: open non-existing: no such file or directory +} + +func restoreFile(path string) {} From 1a7c15fa6d5ce2d78d0f9f5050ee9dd1e29485df Mon Sep 17 00:00:00 2001 From: Emmanuel T Odeke Date: Sat, 24 Aug 2019 22:08:51 -0600 Subject: [PATCH 216/255] doc/go1.13: fix bad URLs to strconv identifiers Change-Id: I7db3ad060773c9396fbe34e7bd52e7ccf6e5e52c Reviewed-on: https://go-review.googlesource.com/c/go/+/191797 Reviewed-by: Dmitri Shuralyov --- doc/go1.13.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/go1.13.html b/doc/go1.13.html index 0dd2532965..8f7a7ab7fe 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -918,19 +918,19 @@ godoc

    -
    strconv
    +
    strconv

    - For strconv.ParseFloat, - strconv.ParseInt - and strconv.ParseUint, + For strconv.ParseFloat, + strconv.ParseInt + and strconv.ParseUint, if base is 0, underscores may be used between digits for readability. See the Changes to the language for details.

    -
    strings
    +
    strings

    The new ToValidUTF8 function returns a From 89fb80f7fae1359a57968fbe600fc69b7296dd2d Mon Sep 17 00:00:00 2001 From: Toshihiro Shiino Date: Fri, 23 Aug 2019 11:56:32 +0000 Subject: [PATCH 217/255] doc/go1.13: add missing slashes This saves a redirect and makes the document more consistent. Change-Id: Ib7f68b1967275c0c676a044314919449680297f3 Reviewed-on: https://go-review.googlesource.com/c/go/+/191537 Reviewed-by: Dmitri Shuralyov --- doc/go1.13.html | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/doc/go1.13.html b/doc/go1.13.html index 8f7a7ab7fe..b195fcde48 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -315,7 +315,7 @@ go env -w GOSUMDB=off

    The go command now verifies the mapping - between pseudo-versions and + between pseudo-versions and version-control metadata. Specifically:

    • The version prefix must be of the form vX.0.0, or derived @@ -551,9 +551,9 @@ godoc To support wrapping, fmt.Errorf now has a %w verb for creating wrapped errors, and three new functions in the errors package ( - errors.Unwrap, - errors.Is and - errors.As) simplify unwrapping + errors.Unwrap, + errors.Is and + errors.As) simplify unwrapping and inspecting wrapped errors.

      @@ -790,7 +790,7 @@ godoc Timeout method that returns true if called. This can make a keep-alive error difficult to distinguish from an error returned due to a missed deadline as set by the - SetDeadline + SetDeadline method and similar methods. Code that uses deadlines and checks for them with the Timeout method or @@ -819,7 +819,7 @@ godoc

      - When reusing HTTP/2, the Transport no longer performs unnecessary TLS handshakes. + When reusing HTTP/2, the Transport no longer performs unnecessary TLS handshakes.

      @@ -843,14 +843,14 @@ godoc

      - The new Server fields + The new Server fields BaseContext and ConnContext - allow finer control over the Context values provided to requests and connections. + allow finer control over the Context values provided to requests and connections.

      - http.DetectContentType now correctly detects RAR signatures, and can now also detect RAR v5 signatures. + http.DetectContentType now correctly detects RAR signatures, and can now also detect RAR v5 signatures.

      @@ -888,9 +888,9 @@ godoc

      os/exec

      - On Windows, the environment for a Cmd always inherits the + On Windows, the environment for a Cmd always inherits the %SYSTEMROOT% value of the parent process unless the - Cmd.Env field includes an explicit value for it. + Cmd.Env field includes an explicit value for it.

      From 78f6856ddf855a457bd33af27089cb3f6e1b2a2d Mon Sep 17 00:00:00 2001 From: Andrew Bonventre Date: Mon, 26 Aug 2019 01:25:41 +0000 Subject: [PATCH 218/255] Revert "errors: add example showing a custom error with Unwrap" This reverts commit 739123c3a36f30af06c294741f74a26e54ee21ad. Reason for revert: broke Windows and Plan 9 builders Fixes #33828 Change-Id: I1d85c81549b1b34924fdd0ade8bf9406e5cf6555 Reviewed-on: https://go-review.googlesource.com/c/go/+/191742 Run-TryBot: Andrew Bonventre TryBot-Result: Gobot Gobot Reviewed-by: Jonathan Amsterdam --- src/errors/example_unwrap_test.go | 56 ------------------------------- 1 file changed, 56 deletions(-) delete mode 100644 src/errors/example_unwrap_test.go diff --git a/src/errors/example_unwrap_test.go b/src/errors/example_unwrap_test.go deleted file mode 100644 index 05c9cd466f..0000000000 --- a/src/errors/example_unwrap_test.go +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package errors_test - -import ( - "errors" - "fmt" - "os" - "time" -) - -// MyError2 is an error implementation that includes a time, a message, and an -// underlying error. -type MyError2 struct { - When time.Time - What string - err error -} - -func (e MyError2) Error() string { - return fmt.Sprintf("%v at %v: %v", e.What, e.When, e.err) -} - -// Unwrap returns e's underlying error, or nil if there is none. -func (e MyError2) Unwrap() error { - return e.err -} - -func readConfig() error { - if _, err := os.Open("non-existing"); err != nil { - return MyError2{ - time.Date(1989, 3, 15, 22, 30, 0, 0, time.UTC), - "reading config file", - err, - } - } - return nil -} - -func Example_unwrap() { - if err := readConfig(); err != nil { - // Display the error. - fmt.Println(err) - // If we can retrieve the path, try to recover - // by taking another action. - var pe *os.PathError - if errors.As(err, &pe) { - restoreFile(pe.Path) - } - } - // Output: reading config file at 1989-03-15 22:30:00 +0000 UTC: open non-existing: no such file or directory -} - -func restoreFile(path string) {} From 8b03a3992bc755eadbccc10d97adc21d0b229401 Mon Sep 17 00:00:00 2001 From: Kevin Gillette Date: Mon, 26 Aug 2019 03:30:21 +0000 Subject: [PATCH 219/255] net/http: make docs refer to Context.Value as a getter instead of context.WithValue The doc comments of both ServerContextKey and LocalAddrContextKey both suggest that context.WithValue can be used to access (get) properties of the server or connection. This PR fixes those comments to refer to Context.Value instead. Change-Id: I4ed383ef97ba1951f90c555243007469cfc18d4d GitHub-Last-Rev: 05bc3acf82322e3dc77abc7fa0412efe01a77eac GitHub-Pull-Request: golang/go#33833 Reviewed-on: https://go-review.googlesource.com/c/go/+/191838 Reviewed-by: Brad Fitzpatrick --- src/net/http/server.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/net/http/server.go b/src/net/http/server.go index 2eb16ff632..f554c81300 100644 --- a/src/net/http/server.go +++ b/src/net/http/server.go @@ -231,13 +231,13 @@ type CloseNotifier interface { var ( // ServerContextKey is a context key. It can be used in HTTP - // handlers with context.WithValue to access the server that + // handlers with Context.Value to access the server that // started the handler. The associated value will be of // type *Server. ServerContextKey = &contextKey{"http-server"} // LocalAddrContextKey is a context key. It can be used in - // HTTP handlers with context.WithValue to access the local + // HTTP handlers with Context.Value to access the local // address the connection arrived on. // The associated value will be of type net.Addr. LocalAddrContextKey = &contextKey{"local-addr"} From 89f02eb8370e31907d33e88f3e25de5176fe84f0 Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Tue, 13 Aug 2019 12:56:51 -0700 Subject: [PATCH 220/255] go/types: add -halt flag to ease debugging in test mode Specifying -halt in `go test -run Check$ -halt` causes a panic upon encountering the first error. The stack trace is useful to determine what code path issued the error. Change-Id: I2e17e0014ba87505b01786980b98565f468065bf Reviewed-on: https://go-review.googlesource.com/c/go/+/190257 Reviewed-by: Matthew Dempsky --- src/go/types/check_test.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/go/types/check_test.go b/src/go/types/check_test.go index 358e7c5cc8..61bcf13c1a 100644 --- a/src/go/types/check_test.go +++ b/src/go/types/check_test.go @@ -42,8 +42,9 @@ import ( ) var ( - listErrors = flag.Bool("errlist", false, "list errors") - testFiles = flag.String("files", "", "space-separated list of test files") + haltOnError = flag.Bool("halt", false, "halt on error") + listErrors = flag.Bool("errlist", false, "list errors") + testFiles = flag.String("files", "", "space-separated list of test files") ) // The test filenames do not end in .go so that they are invisible @@ -262,6 +263,9 @@ func checkFiles(t *testing.T, testfiles []string) { } conf.Importer = importer.Default() conf.Error = func(err error) { + if *haltOnError { + defer panic(err) + } if *listErrors { t.Error(err) return From a80c5f0588e3835ff37c45a15d179571d9e403e0 Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Wed, 21 Aug 2019 17:13:45 -0700 Subject: [PATCH 221/255] go/types: allow embedding overlapping interfaces Quietly drop duplicate methods from embedded interfaces if they have an identical signature to existing methods. Instead of adjusting the prior syntax-based only method set computation where methods don't have signature information (and thus where de-duplication according to the new rules would have been somewhat tricky to get right), this change completely rewrites interface method set computation, taking a page from the cmd/compiler's implementation. In a first pass, when type-checking interfaces, explicit methods and embedded interfaces are collected, but the interfaces are not "expanded", that is the final method set computation is done lazily, either when needed for method lookup, or at the end of type-checking. While this is a substantial rewrite, it allows us to get rid of the separate (duplicate and delicate) syntactical method set computation and generally simplifies checking of interface types significantly. A few (esoteric) test cases now have slightly different error messages but all tests that are accepted by cmd/compile are also accepted by go/types. (This is a replacement for golang.org/cl/190258.) Updates #6977. Change-Id: Ic8b9321374ab4f617498d97c12871b69d1119735 Reviewed-on: https://go-review.googlesource.com/c/go/+/191257 Reviewed-by: Matthew Dempsky --- src/go/types/builtins.go | 2 +- src/go/types/call.go | 6 +- src/go/types/check.go | 25 +- src/go/types/check_test.go | 1 + src/go/types/errors.go | 4 + src/go/types/interfaces.go | 451 ---------------------------- src/go/types/lookup.go | 31 +- src/go/types/methodset.go | 5 + src/go/types/testdata/cycles2.src | 16 +- src/go/types/testdata/decls0.src | 2 +- src/go/types/testdata/issue6977.src | 82 +++++ src/go/types/testdata/issues.src | 9 +- src/go/types/type.go | 75 +++-- src/go/types/typexpr.go | 260 +++++++--------- test/fixedbugs/bug211.go | 14 - 15 files changed, 294 insertions(+), 689 deletions(-) delete mode 100644 src/go/types/interfaces.go create mode 100644 src/go/types/testdata/issue6977.src delete mode 100644 test/fixedbugs/bug211.go diff --git a/src/go/types/builtins.go b/src/go/types/builtins.go index ece6d4f530..0a62f4beaf 100644 --- a/src/go/types/builtins.go +++ b/src/go/types/builtins.go @@ -559,7 +559,7 @@ func (check *Checker) builtin(x *operand, call *ast.CallExpr, id builtinId) (_ b base := derefStructPtr(x.typ) sel := selx.Sel.Name - obj, index, indirect := LookupFieldOrMethod(base, false, check.pkg, sel) + obj, index, indirect := check.LookupFieldOrMethod(base, false, check.pkg, sel) switch obj.(type) { case nil: check.invalidArg(x.pos(), "%s has no single field %s", base, sel) diff --git a/src/go/types/call.go b/src/go/types/call.go index 88e3336136..6220794718 100644 --- a/src/go/types/call.go +++ b/src/go/types/call.go @@ -370,7 +370,7 @@ func (check *Checker) selector(x *operand, e *ast.SelectorExpr) { goto Error } - obj, index, indirect = LookupFieldOrMethod(x.typ, x.mode == variable, check.pkg, sel) + obj, index, indirect = check.LookupFieldOrMethod(x.typ, x.mode == variable, check.pkg, sel) if obj == nil { switch { case index != nil: @@ -437,6 +437,10 @@ func (check *Checker) selector(x *operand, e *ast.SelectorExpr) { if debug { // Verify that LookupFieldOrMethod and MethodSet.Lookup agree. + // TODO(gri) This only works because we call LookupFieldOrMethod + // _before_ calling NewMethodSet: LookupFieldOrMethod completes + // any incomplete interfaces so they are avaible to NewMethodSet + // (which assumes that interfaces have been completed already). typ := x.typ if x.mode == variable { // If typ is not an (unnamed) pointer or an interface, diff --git a/src/go/types/check.go b/src/go/types/check.go index b48d09de22..fbf0f4a911 100644 --- a/src/go/types/check.go +++ b/src/go/types/check.go @@ -76,8 +76,9 @@ type Checker struct { fset *token.FileSet pkg *Package *Info - objMap map[Object]*declInfo // maps package-level objects and (non-interface) methods to declaration info - impMap map[importKey]*Package // maps (import path, source directory) to (complete or fake) package + objMap map[Object]*declInfo // maps package-level objects and (non-interface) methods to declaration info + impMap map[importKey]*Package // maps (import path, source directory) to (complete or fake) package + posMap map[*Interface][]token.Pos // maps interface types to lists of embedded interface positions // information collected during type-checking of a set of package files // (initialized by Files, valid only for the duration of check.Files; @@ -86,12 +87,10 @@ type Checker struct { unusedDotImports map[*Scope]map[*Package]token.Pos // positions of unused dot-imported packages for each file scope firstErr error // first error encountered - methods map[*TypeName][]*Func // maps package scope type names to associated non-blank, non-interface methods - // TODO(gri) move interfaces up to the group of fields persistent across check.Files invocations (see also comment in Checker.initFiles) - interfaces map[*TypeName]*ifaceInfo // maps interface type names to corresponding interface infos - untyped map[ast.Expr]exprInfo // map of expressions without final type - delayed []func() // stack of delayed actions - objPath []Object // path of object dependencies during type inference (for cycle reporting) + methods map[*TypeName][]*Func // maps package scope type names to associated non-blank (non-interface) methods + untyped map[ast.Expr]exprInfo // map of expressions without final type + delayed []func() // stack of delayed actions + objPath []Object // path of object dependencies during type inference (for cycle reporting) // context within which the current object is type-checked // (valid only for the duration of type-checking a specific object) @@ -181,6 +180,7 @@ func NewChecker(conf *Config, fset *token.FileSet, pkg *Package, info *Info) *Ch Info: info, objMap: make(map[Object]*declInfo), impMap: make(map[importKey]*Package), + posMap: make(map[*Interface][]token.Pos), } } @@ -193,15 +193,6 @@ func (check *Checker) initFiles(files []*ast.File) { check.firstErr = nil check.methods = nil - // Don't clear the interfaces cache! It's important that we don't recompute - // ifaceInfos repeatedly (due to multiple check.Files calls) because when - // they are recomputed, they are not used in the context of their original - // declaration (because those types are already type-checked, typically) and - // then they will get the wrong receiver types, which matters for go/types - // clients. It is also safe to not reset the interfaces cache because files - // added to a package cannot change (add methods to) existing interface types; - // they can only add new interfaces. See also the respective comment in - // checker.infoFromTypeName (interfaces.go). Was bug - see issue #29029. check.untyped = nil check.delayed = nil diff --git a/src/go/types/check_test.go b/src/go/types/check_test.go index 61bcf13c1a..89122d75ff 100644 --- a/src/go/types/check_test.go +++ b/src/go/types/check_test.go @@ -97,6 +97,7 @@ var tests = [][]string{ {"testdata/issue23203a.src"}, {"testdata/issue23203b.src"}, {"testdata/issue28251.src"}, + {"testdata/issue6977.src"}, } var fset = token.NewFileSet() diff --git a/src/go/types/errors.go b/src/go/types/errors.go index 68c96c037e..23f2611b48 100644 --- a/src/go/types/errors.go +++ b/src/go/types/errors.go @@ -82,6 +82,10 @@ func (check *Checker) err(pos token.Pos, msg string, soft bool) { check.firstErr = err } + if trace { + check.trace(pos, "ERROR: %s", msg) + } + f := check.conf.Error if f == nil { panic(bailout{}) // report only first error diff --git a/src/go/types/interfaces.go b/src/go/types/interfaces.go deleted file mode 100644 index e0ef83adcc..0000000000 --- a/src/go/types/interfaces.go +++ /dev/null @@ -1,451 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this src code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package types - -import ( - "bytes" - "fmt" - "go/ast" - "go/token" -) - -// This file implements the collection of an interface's methods -// without relying on partially computed types of methods or interfaces -// for interface types declared at the package level. -// -// Because interfaces must not embed themselves, directly or indirectly, -// the method set of a valid interface can always be computed independent -// of any cycles that might exist via method signatures (see also issue #18395). -// -// Except for blank method name and interface cycle errors, no errors -// are reported. Affected methods or embedded interfaces are silently -// dropped. Subsequent type-checking of the interface will check -// signatures and embedded interfaces and report errors at that time. -// -// Only infoFromTypeLit should be called directly from code outside this file -// to compute an ifaceInfo. - -// ifaceInfo describes the method set for an interface. -// The zero value for an ifaceInfo is a ready-to-use ifaceInfo representing -// the empty interface. -type ifaceInfo struct { - explicits int // number of explicitly declared methods - methods []*methodInfo // all methods, starting with explicitly declared ones in source order -} - -// emptyIfaceInfo represents the ifaceInfo for the empty interface. -var emptyIfaceInfo ifaceInfo - -func (info *ifaceInfo) String() string { - var buf bytes.Buffer - fmt.Fprintf(&buf, "interface{") - for i, m := range info.methods { - if i > 0 { - fmt.Fprint(&buf, " ") - } - fmt.Fprint(&buf, m) - } - fmt.Fprintf(&buf, "}") - return buf.String() -} - -// methodInfo represents an interface method. -// At least one of src or fun must be non-nil. -// (Methods declared in the current package have a non-nil scope -// and src, and eventually a non-nil fun field; imported and pre- -// declared methods have a nil scope and src, and only a non-nil -// fun field.) -type methodInfo struct { - scope *Scope // scope of interface method; or nil - src *ast.Field // syntax tree representation of interface method; or nil - fun *Func // corresponding fully type-checked method type; or nil -} - -func (info *methodInfo) String() string { - if info.fun != nil { - return info.fun.name - } - return info.src.Names[0].Name -} - -func (info *methodInfo) Pos() token.Pos { - if info.fun != nil { - return info.fun.Pos() - } - return info.src.Pos() -} - -func (info *methodInfo) id(pkg *Package) string { - if info.fun != nil { - return info.fun.Id() - } - return Id(pkg, info.src.Names[0].Name) -} - -// A methodInfoSet maps method ids to methodInfos. -// It is used to determine duplicate declarations. -// (A methodInfo set is the equivalent of an objset -// but for methodInfos rather than Objects.) -type methodInfoSet map[string]*methodInfo - -// insert attempts to insert an method m into the method set s. -// If s already contains an alternative method alt with -// the same name, insert leaves s unchanged and returns alt. -// Otherwise it inserts m and returns nil. -func (s *methodInfoSet) insert(pkg *Package, m *methodInfo) *methodInfo { - id := m.id(pkg) - if alt := (*s)[id]; alt != nil { - return alt - } - if *s == nil { - *s = make(methodInfoSet) - } - (*s)[id] = m - return nil -} - -// like Checker.declareInSet but for method infos. -func (check *Checker) declareInMethodSet(mset *methodInfoSet, pos token.Pos, m *methodInfo) bool { - if alt := mset.insert(check.pkg, m); alt != nil { - check.errorf(pos, "%s redeclared", m) - check.reportAltMethod(alt) - return false - } - return true -} - -// like Checker.reportAltDecl but for method infos. -func (check *Checker) reportAltMethod(m *methodInfo) { - if pos := m.Pos(); pos.IsValid() { - // We use "other" rather than "previous" here because - // the first declaration seen may not be textually - // earlier in the source. - check.errorf(pos, "\tother declaration of %s", m) // secondary error, \t indented - } -} - -// infoFromTypeLit computes the method set for the given interface iface -// declared in scope. -// If a corresponding type name exists (tname != nil), it is used for -// cycle detection and to cache the method set. -// The result is the method set, or nil if there is a cycle via embedded -// interfaces. A non-nil result doesn't mean that there were no errors, -// but they were either reported (e.g., blank methods), or will be found -// (again) when computing the interface's type. -// If tname is not nil it must be the last element in path. -func (check *Checker) infoFromTypeLit(scope *Scope, iface *ast.InterfaceType, tname *TypeName, path []*TypeName) (info *ifaceInfo) { - assert(iface != nil) - - // lazy-allocate interfaces map - if check.interfaces == nil { - check.interfaces = make(map[*TypeName]*ifaceInfo) - } - - if trace { - check.trace(iface.Pos(), "-- collect methods for %v (path = %s, objPath = %s)", iface, pathString(path), objPathString(check.objPath)) - check.indent++ - defer func() { - check.indent-- - check.trace(iface.Pos(), "=> %s", info) - }() - } - - // If the interface is named, check if we computed info already. - // - // This is not simply an optimization; we may run into stack - // overflow with recursive interface declarations. Example: - // - // type T interface { - // m() interface { T } - // } - // - // (Since recursive definitions can only be expressed via names, - // it is sufficient to track named interfaces here.) - // - // While at it, use the same mechanism to detect cycles. (We still - // have the path-based cycle check because we want to report the - // entire cycle if present.) - if tname != nil { - assert(path[len(path)-1] == tname) // tname must be last path element - var found bool - if info, found = check.interfaces[tname]; found { - if info == nil { - // We have a cycle and use check.cycle to report it. - // We are guaranteed that check.cycle also finds the - // cycle because when infoFromTypeLit is called, any - // tname that's already in check.interfaces was also - // added to the path. (But the converse is not true: - // A non-nil tname is always the last element in path.) - ok := check.cycle(tname, path, true) - assert(ok) - } - return - } - check.interfaces[tname] = nil // computation started but not complete - } - - if iface.Methods.List == nil { - // fast track for empty interface - info = &emptyIfaceInfo - } else { - // (syntactically) non-empty interface - info = new(ifaceInfo) - - // collect explicitly declared methods and embedded interfaces - var mset methodInfoSet - var embeddeds []*ifaceInfo - var positions []token.Pos // entries correspond to positions of embeddeds; used for error reporting - for _, f := range iface.Methods.List { - if len(f.Names) > 0 { - // We have a method with name f.Names[0]. - // (The parser ensures that there's only one method - // and we don't care if a constructed AST has more.) - - // spec: "As with all method sets, in an interface type, - // each method must have a unique non-blank name." - if name := f.Names[0]; name.Name == "_" { - check.errorf(name.Pos(), "invalid method name _") - continue // ignore - } - - m := &methodInfo{scope: scope, src: f} - if check.declareInMethodSet(&mset, f.Pos(), m) { - info.methods = append(info.methods, m) - } - } else { - // We have an embedded interface and f.Type is its - // (possibly qualified) embedded type name. Collect - // it if it's a valid interface. - var e *ifaceInfo - switch ename := f.Type.(type) { - case *ast.Ident: - e = check.infoFromTypeName(scope, ename, path) - case *ast.SelectorExpr: - e = check.infoFromQualifiedTypeName(scope, ename) - default: - // The parser makes sure we only see one of the above. - // Constructed ASTs may contain other (invalid) nodes; - // we simply ignore them. The full type-checking pass - // will report those as errors later. - } - if e != nil { - embeddeds = append(embeddeds, e) - positions = append(positions, f.Type.Pos()) - } - } - } - info.explicits = len(info.methods) - - // collect methods of embedded interfaces - for i, e := range embeddeds { - pos := positions[i] // position of type name of embedded interface - for _, m := range e.methods { - if check.declareInMethodSet(&mset, pos, m) { - info.methods = append(info.methods, m) - } - } - } - } - - // mark check.interfaces as complete - assert(info != nil) - if tname != nil { - check.interfaces[tname] = info - } - - return -} - -// infoFromTypeName computes the method set for the given type name -// which must denote a type whose underlying type is an interface. -// The same result qualifications apply as for infoFromTypeLit. -// infoFromTypeName should only be called from infoFromTypeLit. -func (check *Checker) infoFromTypeName(scope *Scope, name *ast.Ident, path []*TypeName) *ifaceInfo { - // A single call of infoFromTypeName handles a sequence of (possibly - // recursive) type declarations connected via unqualified type names. - // Each type declaration leading to another typename causes a "tail call" - // (goto) of this function. The general scenario looks like this: - // - // ... - // type Pn T // previous declarations leading to T, path = [..., Pn] - // type T interface { T0; ... } // T0 leads to call of infoFromTypeName - // - // // infoFromTypeName(name = T0, path = [..., Pn, T]) - // type T0 T1 // path = [..., Pn, T, T0] - // type T1 T2 <-+ // path = [..., Pn, T, T0, T1] - // type T2 ... | // path = [..., Pn, T, T0, T1, T2] - // type Tn T1 --+ // path = [..., Pn, T, T0, T1, T2, Tn] and T1 is in path => cycle - // - // infoFromTypeName returns nil when such a cycle is detected. But in - // contrast to cycles involving interfaces, we must not report the - // error for "type name only" cycles because they will be found again - // during type-checking of embedded interfaces. Reporting those cycles - // here would lead to double reporting. Cycles involving embedding are - // not reported again later because type-checking of interfaces relies - // on the ifaceInfos computed here which are cycle-free by design. - // - // Remember the path length to detect "type name only" cycles. - start := len(path) - -typenameLoop: - // name must be a type name denoting a type whose underlying type is an interface - _, obj := scope.LookupParent(name.Name, check.pos) - if obj == nil { - return nil - } - tname, _ := obj.(*TypeName) - if tname == nil { - return nil - } - - // We have a type name. It may be predeclared (error type), - // imported (dot import), or declared by a type declaration. - // It may not be an interface (e.g., predeclared type int). - // Resolve it by analyzing each possible case. - - // Abort but don't report an error if we have a "type name only" - // cycle (see big function comment). - if check.cycle(tname, path[start:], false) { - return nil - } - - // Abort and report an error if we have a general cycle. - if check.cycle(tname, path, true) { - return nil - } - - path = append(path, tname) - - // If tname is a package-level type declaration, it must be - // in the objMap. Follow the RHS of that declaration if so. - // The RHS may be a literal type (likely case), or another - // (possibly parenthesized and/or qualified) type name. - // (The declaration may be an alias declaration, but it - // doesn't matter for the purpose of determining the under- - // lying interface.) - if decl := check.objMap[tname]; decl != nil { - switch typ := unparen(decl.typ).(type) { - case *ast.Ident: - // type tname T - name = typ - goto typenameLoop - case *ast.SelectorExpr: - // type tname p.T - return check.infoFromQualifiedTypeName(decl.file, typ) - case *ast.InterfaceType: - // type tname interface{...} - // If tname is fully type-checked at this point (tname.color() == black) - // we could use infoFromType here. But in this case, the interface must - // be in the check.interfaces cache as well, which will be hit when we - // call infoFromTypeLit below, and which will be faster. It is important - // that we use that previously computed interface because its methods - // have the correct receiver type (for go/types clients). Thus, the - // check.interfaces cache must be up-to-date across even across multiple - // check.Files calls (was bug - see issue #29029). - return check.infoFromTypeLit(decl.file, typ, tname, path) - } - // type tname X // and X is not an interface type - return nil - } - - // If tname is not a package-level declaration, in a well-typed - // program it should be a predeclared (error type), imported (dot - // import), or function local declaration. Either way, it should - // have been fully declared before use, except if there is a direct - // cycle, and direct cycles will be caught above. Also, the denoted - // type should be an interface (e.g., int is not an interface). - if typ := tname.typ; typ != nil { - // typ should be an interface - if ityp, _ := typ.Underlying().(*Interface); ityp != nil { - return infoFromType(ityp) - } - } - - // In all other cases we have some error. - return nil -} - -// infoFromQualifiedTypeName computes the method set for the given qualified type name, or nil. -func (check *Checker) infoFromQualifiedTypeName(scope *Scope, qname *ast.SelectorExpr) *ifaceInfo { - // see also Checker.selector - name, _ := qname.X.(*ast.Ident) - if name == nil { - return nil - } - _, obj1 := scope.LookupParent(name.Name, check.pos) - if obj1 == nil { - return nil - } - pname, _ := obj1.(*PkgName) - if pname == nil { - return nil - } - assert(pname.pkg == check.pkg) - obj2 := pname.imported.scope.Lookup(qname.Sel.Name) - if obj2 == nil || !obj2.Exported() { - return nil - } - tname, _ := obj2.(*TypeName) - if tname == nil { - return nil - } - ityp, _ := tname.typ.Underlying().(*Interface) - if ityp == nil { - return nil - } - return infoFromType(ityp) -} - -// infoFromType computes the method set for the given interface type. -// The result is never nil. -func infoFromType(typ *Interface) *ifaceInfo { - assert(typ.allMethods != nil) // typ must be completely set up - - // fast track for empty interface - n := len(typ.allMethods) - if n == 0 { - return &emptyIfaceInfo - } - - info := new(ifaceInfo) - info.explicits = len(typ.methods) - info.methods = make([]*methodInfo, n) - - // If there are no embedded interfaces, simply collect the - // explicitly declared methods (optimization of common case). - if len(typ.methods) == n { - for i, m := range typ.methods { - info.methods[i] = &methodInfo{fun: m} - } - return info - } - - // Interface types have a separate list for explicitly declared methods - // which shares its methods with the list of all (explicitly declared or - // embedded) methods. Collect all methods in a set so we can separate - // the embedded methods from the explicitly declared ones. - all := make(map[*Func]bool, n) - for _, m := range typ.allMethods { - all[m] = true - } - assert(len(all) == n) // methods must be unique - - // collect explicitly declared methods - info.methods = make([]*methodInfo, n) - for i, m := range typ.methods { - info.methods[i] = &methodInfo{fun: m} - delete(all, m) - } - - // collect remaining (embedded) methods - i := len(typ.methods) - for m := range all { - info.methods[i] = &methodInfo{fun: m} - i++ - } - assert(i == n) - - return info -} diff --git a/src/go/types/lookup.go b/src/go/types/lookup.go index e6764f45a0..265e30971d 100644 --- a/src/go/types/lookup.go +++ b/src/go/types/lookup.go @@ -6,11 +6,6 @@ package types -// Internal use of LookupFieldOrMethod: If the obj result is a method -// associated with a concrete (non-interface) type, the method's signature -// may not be fully set up. Call Checker.objDecl(obj, nil) before accessing -// the method's type. - // LookupFieldOrMethod looks up a field or method with given package and name // in T and returns the corresponding *Var or *Func, an index sequence, and a // bool indicating if there were any pointer indirections on the path to the @@ -38,6 +33,19 @@ package types // the method's formal receiver base type, nor was the receiver addressable. // func LookupFieldOrMethod(T Type, addressable bool, pkg *Package, name string) (obj Object, index []int, indirect bool) { + return (*Checker)(nil).LookupFieldOrMethod(T, addressable, pkg, name) +} + +// Internal use of Checker.LookupFieldOrMethod: If the obj result is a method +// associated with a concrete (non-interface) type, the method's signature +// may not be fully set up. Call Checker.objDecl(obj, nil) before accessing +// the method's type. +// TODO(gri) Now that we provide the *Checker, we can probably remove this +// caveat by calling Checker.objDecl from LookupFieldOrMethod. Investigate. + +// LookupFieldOrMethod is like the external version but completes interfaces +// as necessary. +func (check *Checker) LookupFieldOrMethod(T Type, addressable bool, pkg *Package, name string) (obj Object, index []int, indirect bool) { // Methods cannot be associated to a named pointer type // (spec: "The type denoted by T is called the receiver base type; // it must not be a pointer or interface type and it must be declared @@ -47,7 +55,7 @@ func LookupFieldOrMethod(T Type, addressable bool, pkg *Package, name string) (o // not have found it for T (see also issue 8590). if t, _ := T.(*Named); t != nil { if p, _ := t.underlying.(*Pointer); p != nil { - obj, index, indirect = lookupFieldOrMethod(p, false, pkg, name) + obj, index, indirect = check.lookupFieldOrMethod(p, false, pkg, name) if _, ok := obj.(*Func); ok { return nil, nil, false } @@ -55,7 +63,7 @@ func LookupFieldOrMethod(T Type, addressable bool, pkg *Package, name string) (o } } - return lookupFieldOrMethod(T, addressable, pkg, name) + return check.lookupFieldOrMethod(T, addressable, pkg, name) } // TODO(gri) The named type consolidation and seen maps below must be @@ -63,7 +71,8 @@ func LookupFieldOrMethod(T Type, addressable bool, pkg *Package, name string) (o // types always have only one representation (even when imported // indirectly via different packages.) -func lookupFieldOrMethod(T Type, addressable bool, pkg *Package, name string) (obj Object, index []int, indirect bool) { +// lookupFieldOrMethod should only be called by LookupFieldOrMethod and missingMethod. +func (check *Checker) lookupFieldOrMethod(T Type, addressable bool, pkg *Package, name string) (obj Object, index []int, indirect bool) { // WARNING: The code in this function is extremely subtle - do not modify casually! // This function and NewMethodSet should be kept in sync. @@ -166,6 +175,7 @@ func lookupFieldOrMethod(T Type, addressable bool, pkg *Package, name string) (o case *Interface: // look for a matching method // TODO(gri) t.allMethods is sorted - use binary search + check.completeInterface(t) if i, m := lookupMethod(t.allMethods, pkg, name); m != nil { assert(m.typ != nil) index = concat(e.index, i) @@ -261,6 +271,8 @@ func MissingMethod(V Type, T *Interface, static bool) (method *Func, wrongType b // an exported API call (such as MissingMethod), i.e., when all // methods have been type-checked. func (check *Checker) missingMethod(V Type, T *Interface, static bool) (method *Func, wrongType bool) { + check.completeInterface(T) + // fast path for common case if T.Empty() { return @@ -269,6 +281,7 @@ func (check *Checker) missingMethod(V Type, T *Interface, static bool) (method * // TODO(gri) Consider using method sets here. Might be more efficient. if ityp, _ := V.Underlying().(*Interface); ityp != nil { + check.completeInterface(ityp) // TODO(gri) allMethods is sorted - can do this more efficiently for _, m := range T.allMethods { _, obj := lookupMethod(ityp.allMethods, m.pkg, m.name) @@ -286,7 +299,7 @@ func (check *Checker) missingMethod(V Type, T *Interface, static bool) (method * // A concrete type implements T if it implements all methods of T. for _, m := range T.allMethods { - obj, _, _ := lookupFieldOrMethod(V, false, m.pkg, m.name) + obj, _, _ := check.lookupFieldOrMethod(V, false, m.pkg, m.name) // we must have a method (not a field of matching function type) f, _ := obj.(*Func) diff --git a/src/go/types/methodset.go b/src/go/types/methodset.go index 619c448492..1c2208002e 100644 --- a/src/go/types/methodset.go +++ b/src/go/types/methodset.go @@ -62,6 +62,11 @@ func (s *MethodSet) Lookup(pkg *Package, name string) *Selection { // Shared empty method set. var emptyMethodSet MethodSet +// Note: NewMethodSet is intended for external use only as it +// requires interfaces to be complete. If may be used +// internally if LookupFieldOrMethod completed the same +// interfaces beforehand. + // NewMethodSet returns the method set for the given type T. // It always returns a non-nil method set, even if it is empty. func NewMethodSet(T Type) *MethodSet { diff --git a/src/go/types/testdata/cycles2.src b/src/go/types/testdata/cycles2.src index fd0df4bf27..e95506a108 100644 --- a/src/go/types/testdata/cycles2.src +++ b/src/go/types/testdata/cycles2.src @@ -22,13 +22,13 @@ func _() { t.f(t) t.f(u) - + u.f(t) u.f(u) } -// Test case for issue 6589. +// Test case for issues #6589, #33656. type A interface { a() interface { @@ -45,26 +45,28 @@ type B interface { type AB interface { a() interface { A - B /* ERROR a redeclared */ + // TODO(gri) there shouldn't be an error here. See issue #33656. + B // ERROR duplicate method a } b() interface { A - B /* ERROR a redeclared */ + // TODO(gri) there shouldn't be an error here. See issue #33656. + B // ERROR duplicate method a } } var x AB var y interface { A - B /* ERROR a redeclared */ + B } -var _ = x /* ERROR cannot compare */ == y +var _ = x == y // Test case for issue 6638. type T interface { - m() [T /* ERROR no value */ (nil).m()[0]]int + m() [T(nil).m /* ERROR undefined */ ()[0]]int } // Variations of this test case. diff --git a/src/go/types/testdata/decls0.src b/src/go/types/testdata/decls0.src index 56adbbfaae..5b84722cc9 100644 --- a/src/go/types/testdata/decls0.src +++ b/src/go/types/testdata/decls0.src @@ -139,7 +139,7 @@ type ( } I3 interface { m1() - m1 /* ERROR "redeclared" */ () + m1 /* ERROR "duplicate method" */ () } I4 interface { m1(x, y, x /* ERROR "redeclared" */ float32) diff --git a/src/go/types/testdata/issue6977.src b/src/go/types/testdata/issue6977.src new file mode 100644 index 0000000000..8f4e9ba2b2 --- /dev/null +++ b/src/go/types/testdata/issue6977.src @@ -0,0 +1,82 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package p + +import "io" + +// Alan's initial report. + +type I interface { f(); String() string } +type J interface { g(); String() string } + +type IJ1 = interface { I; J } +type IJ2 = interface { f(); g(); String() string } + +var _ = (*IJ1)(nil) == (*IJ2)(nil) // static assert that IJ1 and IJ2 are identical types + +// The canonical example. + +type ReadWriteCloser interface { io.ReadCloser; io.WriteCloser } + +// Some more cases. + +type M interface { m() } +type M32 interface { m() int32 } +type M64 interface { m() int64 } + +type U1 interface { m() } +type U2 interface { m(); M } +type U3 interface { M; m() } +type U4 interface { M; M; M } +type U5 interface { U1; U2; U3; U4 } + +type U6 interface { m(); m /* ERROR duplicate method */ () } +type U7 interface { M32 /* ERROR duplicate method */ ; m() } +type U8 interface { m(); M32 /* ERROR duplicate method */ } +type U9 interface { M32; M64 /* ERROR duplicate method */ } + +// Verify that repeated embedding of the same interface(s) +// eliminates duplicate methods early (rather than at the +// end) to prevent exponential memory and time use. +// Without early elimination, computing T29 may take dozens +// of minutes. +type ( + T0 interface { m() } + T1 interface { T0; T0 } + T2 interface { T1; T1 } + T3 interface { T2; T2 } + T4 interface { T3; T3 } + T5 interface { T4; T4 } + T6 interface { T5; T5 } + T7 interface { T6; T6 } + T8 interface { T7; T7 } + T9 interface { T8; T8 } + + T10 interface { T9; T9 } + T11 interface { T10; T10 } + T12 interface { T11; T11 } + T13 interface { T12; T12 } + T14 interface { T13; T13 } + T15 interface { T14; T14 } + T16 interface { T15; T15 } + T17 interface { T16; T16 } + T18 interface { T17; T17 } + T19 interface { T18; T18 } + + T20 interface { T19; T19 } + T21 interface { T20; T20 } + T22 interface { T21; T21 } + T23 interface { T22; T22 } + T24 interface { T23; T23 } + T25 interface { T24; T24 } + T26 interface { T25; T25 } + T27 interface { T26; T26 } + T28 interface { T27; T27 } + T29 interface { T28; T28 } +) + +// Verify that m is present. +var x T29 +var _ = x.m diff --git a/src/go/types/testdata/issues.src b/src/go/types/testdata/issues.src index d020301109..5ddf6e0e71 100644 --- a/src/go/types/testdata/issues.src +++ b/src/go/types/testdata/issues.src @@ -91,7 +91,7 @@ func issue10979() { nosuchpkg /* ERROR undeclared name: nosuchpkg */ .Nosuchtype } type I interface { - I /* ERROR I\.m \(value of type func\(I\)\) is not a type */ .m + I.m /* ERROR no field or method m */ m() } } @@ -259,10 +259,9 @@ type E = interface { m() } -// Test case from issue. Eventually we may disallow this due -// to the cycle via the alias type name. But for now we make -// sure this is accepted. -type issue25301b = interface { +// Test case from issue. +// cmd/compile reports a cycle as well. +type issue25301b /* ERROR cycle */ = interface { m() interface{ issue25301b } } diff --git a/src/go/types/type.go b/src/go/types/type.go index 3dd9eb97f5..4807911e35 100644 --- a/src/go/types/type.go +++ b/src/go/types/type.go @@ -284,31 +284,27 @@ func NewInterfaceType(methods []*Func, embeddeds []Type) *Interface { return typ } - var mset objset + // set method receivers if necessary for _, m := range methods { - if mset.insert(m) != nil { - panic("multiple methods with the same name") - } - // set receiver if we don't have one if sig := m.typ.(*Signature); sig.recv == nil { sig.recv = NewVar(m.pos, m.pkg, "", typ) } } - sort.Sort(byUniqueMethodName(methods)) - if len(embeddeds) > 0 { - // All embedded types should be interfaces; however, defined types - // may not yet be fully resolved. Only verify that non-defined types - // are interfaces. This matches the behavior of the code before the - // fix for #25301 (issue #25596). - for _, t := range embeddeds { - if _, ok := t.(*Named); !ok && !IsInterface(t) { - panic("embedded type is not an interface") - } + // All embedded types should be interfaces; however, defined types + // may not yet be fully resolved. Only verify that non-defined types + // are interfaces. This matches the behavior of the code before the + // fix for #25301 (issue #25596). + for _, t := range embeddeds { + if _, ok := t.(*Named); !ok && !IsInterface(t) { + panic("embedded type is not an interface") } - sort.Stable(byUniqueTypeName(embeddeds)) } + // sort for API stability + sort.Sort(byUniqueMethodName(methods)) + sort.Stable(byUniqueTypeName(embeddeds)) + typ.methods = methods typ.embeddeds = embeddeds return typ @@ -346,28 +342,45 @@ func (t *Interface) Empty() bool { return len(t.allMethods) == 0 } // Complete computes the interface's method set. It must be called by users of // NewInterfaceType and NewInterface after the interface's embedded types are // fully defined and before using the interface type in any way other than to -// form other types. Complete returns the receiver. +// form other types. The interface must not contain duplicate methods or a +// panic occurs. Complete returns the receiver. func (t *Interface) Complete() *Interface { + // TODO(gri) consolidate this method with Checker.completeInterface if t.allMethods != nil { return t } - // collect all methods - var allMethods []*Func - allMethods = append(allMethods, t.methods...) - for _, et := range t.embeddeds { - it := et.Underlying().(*Interface) - it.Complete() - // copy embedded methods unchanged (see issue #28282) - allMethods = append(allMethods, it.allMethods...) - } - sort.Sort(byUniqueMethodName(allMethods)) + t.allMethods = markComplete // avoid infinite recursion - // t.methods and/or t.embeddeds may have been empty - if allMethods == nil { - allMethods = markComplete + var methods []*Func + var seen objset + addMethod := func(m *Func, explicit bool) { + switch alt := seen.insert(m); { + case alt == nil: + methods = append(methods, m) + case explicit || !Identical(m.Type(), alt.Type()): + panic("duplicate method " + m.name) + default: + // silently drop method m + } + } + + for _, m := range t.methods { + addMethod(m, true) + } + + for _, typ := range t.embeddeds { + typ := typ.Underlying().(*Interface) + typ.Complete() + for _, m := range typ.allMethods { + addMethod(m, false) + } + } + + if methods != nil { + sort.Sort(byUniqueMethodName(methods)) + t.allMethods = methods } - t.allMethods = allMethods return t } diff --git a/src/go/types/typexpr.go b/src/go/types/typexpr.go index b16bf962cd..c2d218f5c3 100644 --- a/src/go/types/typexpr.go +++ b/src/go/types/typexpr.go @@ -472,171 +472,127 @@ func (check *Checker) declareInSet(oset *objset, pos token.Pos, obj Object) bool } func (check *Checker) interfaceType(ityp *Interface, iface *ast.InterfaceType, def *Named) { - // fast-track empty interface - if iface.Methods.List == nil { - ityp.allMethods = markComplete - return - } + for _, f := range iface.Methods.List { + if len(f.Names) > 0 { + // We have a method with name f.Names[0]. + // (The parser ensures that there's only one method + // and we don't care if a constructed AST has more.) + name := f.Names[0] + if name.Name == "_" { + check.errorf(name.Pos(), "invalid method name _") + continue // ignore + } - // collect embedded interfaces - // Only needed for printing and API. Delay collection - // to end of type-checking (for package-global interfaces) - // when all types are complete. Local interfaces are handled - // after each statement (as each statement processes delayed - // functions). - interfaceContext := check.context // capture for use in closure below - check.later(func() { - if trace { - check.trace(iface.Pos(), "-- delayed checking embedded interfaces of %v", iface) - check.indent++ - defer func() { - check.indent-- - }() - } - - // The context must be restored since for local interfaces - // delayed functions are processed after each statement - // (was issue #24140). - defer func(ctxt context) { - check.context = ctxt - }(check.context) - check.context = interfaceContext - - for _, f := range iface.Methods.List { - if len(f.Names) == 0 { - typ := check.indirectType(f.Type) - // typ should be a named type denoting an interface - // (the parser will make sure it's a named type but - // constructed ASTs may be wrong). - if typ == Typ[Invalid] { - continue // error reported before + typ := check.indirectType(f.Type) + sig, _ := typ.(*Signature) + if sig == nil { + if typ != Typ[Invalid] { + check.invalidAST(f.Type.Pos(), "%s is not a method signature", typ) } - embed, _ := typ.Underlying().(*Interface) - if embed == nil { + continue // ignore + } + + // use named receiver type if available (for better error messages) + var recvTyp Type = ityp + if def != nil { + recvTyp = def + } + sig.recv = NewVar(name.Pos(), check.pkg, "", recvTyp) + + m := NewFunc(name.Pos(), check.pkg, name.Name, sig) + check.recordDef(name, m) + ityp.methods = append(ityp.methods, m) + } else { + // We have an embedded interface and f.Type is its + // (possibly qualified) embedded type name. Collect + // it if it's a valid interface. + typ := check.typ(f.Type) + + if _, ok := underlying(typ).(*Interface); !ok { + if typ != Typ[Invalid] { check.errorf(f.Type.Pos(), "%s is not an interface", typ) - continue } - // Correct embedded interfaces must be complete - - // don't just assert, but report error since this - // used to be the underlying cause for issue #18395. - if embed.allMethods == nil { - check.dump("%v: incomplete embedded interface %s", f.Type.Pos(), typ) - unreachable() - } - // collect interface - ityp.embeddeds = append(ityp.embeddeds, typ) + continue } - } - // sort to match NewInterface/NewInterface2 - // TODO(gri) we may be able to switch to source order - sort.Stable(byUniqueTypeName(ityp.embeddeds)) - }) - // compute method set - var tname *TypeName - var path []*TypeName - if def != nil { - tname = def.obj - path = []*TypeName{tname} + ityp.embeddeds = append(ityp.embeddeds, typ) + check.posMap[ityp] = append(check.posMap[ityp], f.Type.Pos()) + } } - info := check.infoFromTypeLit(check.scope, iface, tname, path) - if info == nil || info == &emptyIfaceInfo { - // we got an error or the empty interface - exit early + + if len(ityp.methods) == 0 && len(ityp.embeddeds) == 0 { + // empty interface ityp.allMethods = markComplete return } - // use named receiver type if available (for better error messages) - var recvTyp Type = ityp - if def != nil { - recvTyp = def - } - - // Correct receiver type for all methods explicitly declared - // by this interface after we're done with type-checking at - // this level. See comment below for details. - check.later(func() { - for _, m := range ityp.methods { - m.typ.(*Signature).recv.typ = recvTyp - } - }) - - // collect methods - var sigfix []*methodInfo - for i, minfo := range info.methods { - fun := minfo.fun - if fun == nil { - name := minfo.src.Names[0] - pos := name.Pos() - // Don't type-check signature yet - use an - // empty signature now and update it later. - // But set up receiver since we know it and - // its position, and because interface method - // signatures don't get a receiver via regular - // type-checking (there isn't a receiver in the - // method's AST). Setting the receiver type is - // also important for ptrRecv() (see methodset.go). - // - // Note: For embedded methods, the receiver type - // should be the type of the interface that declared - // the methods in the first place. Since we get the - // methods here via methodInfo, which may be computed - // before we have all relevant interface types, we use - // the current interface's type (recvType). This may be - // the type of the interface embedding the interface that - // declared the methods. This doesn't matter for type- - // checking (we only care about the receiver type for - // the ptrRecv predicate, and it's never a pointer recv - // for interfaces), but it matters for go/types clients - // and for printing. We correct the receiver after type- - // checking. - // - // TODO(gri) Consider marking methods signatures - // as incomplete, for better error messages. See - // also the T4 and T5 tests in testdata/cycles2.src. - sig := new(Signature) - sig.recv = NewVar(pos, check.pkg, "", recvTyp) - fun = NewFunc(pos, check.pkg, name.Name, sig) - minfo.fun = fun - check.recordDef(name, fun) - sigfix = append(sigfix, minfo) - } - // fun != nil - if i < info.explicits { - ityp.methods = append(ityp.methods, fun) - } - ityp.allMethods = append(ityp.allMethods, fun) - } - - // fix signatures now that we have collected all methods - savedContext := check.context - for _, minfo := range sigfix { - // (possibly embedded) methods must be type-checked within their scope and - // type-checking them must not affect the current context (was issue #23914) - check.context = context{scope: minfo.scope} - typ := check.indirectType(minfo.src.Type) - sig, _ := typ.(*Signature) - if sig == nil { - if typ != Typ[Invalid] { - check.invalidAST(minfo.src.Type.Pos(), "%s is not a method signature", typ) - } - continue // keep method with empty method signature - } - // update signature, but keep recv that was set up before - old := minfo.fun.typ.(*Signature) - sig.recv = old.recv - *old = *sig // update signature (don't replace pointer!) - } - check.context = savedContext - - // sort to match NewInterface/NewInterface2 - // TODO(gri) we may be able to switch to source order + // sort for API stability sort.Sort(byUniqueMethodName(ityp.methods)) + sort.Stable(byUniqueTypeName(ityp.embeddeds)) - if ityp.allMethods == nil { - ityp.allMethods = markComplete - } else { - sort.Sort(byUniqueMethodName(ityp.allMethods)) + check.later(func() { check.completeInterface(ityp) }) +} + +func (check *Checker) completeInterface(ityp *Interface) { + if ityp.allMethods != nil { + return + } + + // completeInterface may be called via the LookupFieldOrMethod or + // MissingMethod external API in which case check will be nil. In + // this case, type-checking must be finished and all interfaces + // should have been completed. + if check == nil { + panic("internal error: incomplete interface") + } + + if trace { + check.trace(token.NoPos, "complete %s", ityp) + check.indent++ + defer func() { + check.indent-- + check.trace(token.NoPos, "=> %s", ityp) + }() + } + + ityp.allMethods = markComplete // avoid infinite recursion + + var methods []*Func + var seen objset + addMethod := func(m *Func, explicit bool) { + switch alt := seen.insert(m); { + case alt == nil: + methods = append(methods, m) + case explicit || !Identical(m.Type(), alt.Type()): + check.errorf(m.pos, "duplicate method %s", m.name) + // We use "other" rather than "previous" here because + // the first declaration seen may not be textually + // earlier in the source. + check.errorf(alt.Pos(), "\tother declaration of %s", m) // secondary error, \t indented + default: + // silently drop method m + } + } + + for _, m := range ityp.methods { + addMethod(m, true) + } + + posList := check.posMap[ityp] + for i, typ := range ityp.embeddeds { + pos := posList[i] // embedding position + typ := typ.Underlying().(*Interface) + check.completeInterface(typ) + for _, m := range typ.allMethods { + copy := *m + copy.pos = pos // preserve embedding position + addMethod(©, false) + } + } + + if methods != nil { + sort.Sort(byUniqueMethodName(methods)) + ityp.allMethods = methods } } diff --git a/test/fixedbugs/bug211.go b/test/fixedbugs/bug211.go deleted file mode 100644 index b150479276..0000000000 --- a/test/fixedbugs/bug211.go +++ /dev/null @@ -1,14 +0,0 @@ -// errorcheck - -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package main - -type R interface { duplicate() } -type S interface { duplicate() } -type T interface { R; S } // ERROR "duplicate" - -func main() { -} From 82d6e2eab8ea12962f2ad5f1d446350a7572d57c Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Thu, 22 Aug 2019 14:47:01 -0700 Subject: [PATCH 222/255] go/types: NewInterface/NewInterfaceType complete empty interfaces When creating a new interface via the exported API calls, a shared empty and completed Interface value is returned if there are no methods or embedded interfaces. This is a minor optimization and matches the internal behavior when creating empty interfaces. Since calling Interface.Complete is idempotent, and since there are no other legitimate ways to create Interface values externally but via NewInterface/NewInterfaceType calls, and completed Interfaces are considered "immutable", this change is not expected to affect clients. The only observable behavior that changed is the string value for empty interfaces created via the above API calls; those empty interfaces now don't show "incomplete" anymore even before Interface.Complete is called. Except in special test cases, this behavior is unlikely to affect clients. Change-Id: Idf7f2cd112241c5b81a43b4544bbe3f2e003d8d8 Reviewed-on: https://go-review.googlesource.com/c/go/+/191417 Reviewed-by: Matthew Dempsky --- src/go/types/type.go | 5 ++--- src/go/types/typestring_test.go | 12 ++++++------ 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/go/types/type.go b/src/go/types/type.go index 4807911e35..23ae6e33b7 100644 --- a/src/go/types/type.go +++ b/src/go/types/type.go @@ -278,13 +278,12 @@ func NewInterface(methods []*Func, embeddeds []*Named) *Interface { // NewInterfaceType takes ownership of the provided methods and may modify their types by setting // missing receivers. To compute the method set of the interface, Complete must be called. func NewInterfaceType(methods []*Func, embeddeds []Type) *Interface { - typ := new(Interface) - if len(methods) == 0 && len(embeddeds) == 0 { - return typ + return &emptyInterface } // set method receivers if necessary + typ := new(Interface) for _, m := range methods { if sig := m.typ.(*Signature); sig.recv == nil { sig.recv = NewVar(m.pos, m.pkg, "", typ) diff --git a/src/go/types/typestring_test.go b/src/go/types/typestring_test.go index 3cae4f134a..5d9db39bfc 100644 --- a/src/go/types/typestring_test.go +++ b/src/go/types/typestring_test.go @@ -148,11 +148,11 @@ func TestIncompleteInterfaces(t *testing.T) { {new(Interface), "interface{/* incomplete */}"}, {new(Interface).Complete(), "interface{}"}, - {NewInterface(nil, nil), "interface{/* incomplete */}"}, + {NewInterface(nil, nil), "interface{}"}, {NewInterface(nil, nil).Complete(), "interface{}"}, - {NewInterface([]*Func{}, nil), "interface{/* incomplete */}"}, + {NewInterface([]*Func{}, nil), "interface{}"}, {NewInterface([]*Func{}, nil).Complete(), "interface{}"}, - {NewInterface(nil, []*Named{}), "interface{/* incomplete */}"}, + {NewInterface(nil, []*Named{}), "interface{}"}, {NewInterface(nil, []*Named{}).Complete(), "interface{}"}, {NewInterface([]*Func{m}, nil), "interface{m() /* incomplete */}"}, {NewInterface([]*Func{m}, nil).Complete(), "interface{m()}"}, @@ -162,11 +162,11 @@ func TestIncompleteInterfaces(t *testing.T) { {NewInterface(nil, []*Named{newDefined(NewInterface([]*Func{m}, nil).Complete())}), "interface{T /* incomplete */}"}, {NewInterface(nil, []*Named{newDefined(NewInterface([]*Func{m}, nil).Complete())}).Complete(), "interface{T}"}, - {NewInterfaceType(nil, nil), "interface{/* incomplete */}"}, + {NewInterfaceType(nil, nil), "interface{}"}, {NewInterfaceType(nil, nil).Complete(), "interface{}"}, - {NewInterfaceType([]*Func{}, nil), "interface{/* incomplete */}"}, + {NewInterfaceType([]*Func{}, nil), "interface{}"}, {NewInterfaceType([]*Func{}, nil).Complete(), "interface{}"}, - {NewInterfaceType(nil, []Type{}), "interface{/* incomplete */}"}, + {NewInterfaceType(nil, []Type{}), "interface{}"}, {NewInterfaceType(nil, []Type{}).Complete(), "interface{}"}, {NewInterfaceType([]*Func{m}, nil), "interface{m() /* incomplete */}"}, {NewInterfaceType([]*Func{m}, nil).Complete(), "interface{m()}"}, From 29d3c569e00ab46075dc9ab0520ef7a1a0fc91b3 Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Thu, 22 Aug 2019 17:03:30 -0700 Subject: [PATCH 223/255] go/types: postpone interface method type comparison to the end Introduce a new list of final actions that is executed at the end of type checking and use it to collect method type comparisons and also map key checks. Fixes #33656. Change-Id: Ia77a35a45a9d7eaa7fc3e9e19f41f32dcd6ef9d9 Reviewed-on: https://go-review.googlesource.com/c/go/+/191418 Reviewed-by: Alan Donovan --- src/go/types/check.go | 23 ++++++++++++++++++++++- src/go/types/testdata/cycles2.src | 6 ++---- src/go/types/type.go | 18 ++++++++++++++---- src/go/types/typexpr.go | 23 +++++++++++++---------- 4 files changed, 51 insertions(+), 19 deletions(-) diff --git a/src/go/types/check.go b/src/go/types/check.go index fbf0f4a911..7d58183911 100644 --- a/src/go/types/check.go +++ b/src/go/types/check.go @@ -89,7 +89,8 @@ type Checker struct { firstErr error // first error encountered methods map[*TypeName][]*Func // maps package scope type names to associated non-blank (non-interface) methods untyped map[ast.Expr]exprInfo // map of expressions without final type - delayed []func() // stack of delayed actions + delayed []func() // stack of delayed action segments; segments are processed in FIFO order + finals []func() // list of final actions; processed at the end of type-checking the current set of files objPath []Object // path of object dependencies during type inference (for cycle reporting) // context within which the current object is type-checked @@ -145,6 +146,14 @@ func (check *Checker) later(f func()) { check.delayed = append(check.delayed, f) } +// atEnd adds f to the list of actions processed at the end +// of type-checking, before initialization order computation. +// Actions added by atEnd are processed after any actions +// added by later. +func (check *Checker) atEnd(f func()) { + check.finals = append(check.finals, f) +} + // push pushes obj onto the object path and returns its index in the path. func (check *Checker) push(obj Object) int { check.objPath = append(check.objPath, obj) @@ -195,6 +204,7 @@ func (check *Checker) initFiles(files []*ast.File) { check.methods = nil check.untyped = nil check.delayed = nil + check.finals = nil // determine package name and collect valid files pkg := check.pkg @@ -245,6 +255,7 @@ func (check *Checker) checkFiles(files []*ast.File) (err error) { check.packageObjects() check.processDelayed(0) // incl. all functions + check.processFinals() check.initOrder() @@ -258,6 +269,16 @@ func (check *Checker) checkFiles(files []*ast.File) (err error) { return } +func (check *Checker) processFinals() { + n := len(check.finals) + for _, f := range check.finals { + f() // must not append to check.finals + } + if len(check.finals) != n { + panic("internal error: final action list grew") + } +} + func (check *Checker) recordUntyped() { if !debug && check.Types == nil { return // nothing to do diff --git a/src/go/types/testdata/cycles2.src b/src/go/types/testdata/cycles2.src index e95506a108..98ca6f4e44 100644 --- a/src/go/types/testdata/cycles2.src +++ b/src/go/types/testdata/cycles2.src @@ -45,13 +45,11 @@ type B interface { type AB interface { a() interface { A - // TODO(gri) there shouldn't be an error here. See issue #33656. - B // ERROR duplicate method a + B } b() interface { A - // TODO(gri) there shouldn't be an error here. See issue #33656. - B // ERROR duplicate method a + B } } diff --git a/src/go/types/type.go b/src/go/types/type.go index 23ae6e33b7..5c28a2e7ba 100644 --- a/src/go/types/type.go +++ b/src/go/types/type.go @@ -351,16 +351,18 @@ func (t *Interface) Complete() *Interface { t.allMethods = markComplete // avoid infinite recursion + var todo []*Func var methods []*Func var seen objset addMethod := func(m *Func, explicit bool) { - switch alt := seen.insert(m); { - case alt == nil: + switch other := seen.insert(m); { + case other == nil: methods = append(methods, m) - case explicit || !Identical(m.Type(), alt.Type()): + case explicit: panic("duplicate method " + m.name) default: - // silently drop method m + // check method signatures after all locally embedded interfaces are computed + todo = append(todo, m, other.(*Func)) } } @@ -376,6 +378,14 @@ func (t *Interface) Complete() *Interface { } } + for i := 0; i < len(todo); i += 2 { + m := todo[i] + other := todo[i+1] + if !Identical(m.typ, other.typ) { + panic("duplicate method " + m.name) + } + } + if methods != nil { sort.Sort(byUniqueMethodName(methods)) t.allMethods = methods diff --git a/src/go/types/typexpr.go b/src/go/types/typexpr.go index c2d218f5c3..19bedae590 100644 --- a/src/go/types/typexpr.go +++ b/src/go/types/typexpr.go @@ -314,7 +314,7 @@ func (check *Checker) typInternal(e ast.Expr, def *Named) Type { // // Delay this check because it requires fully setup types; // it is safe to continue in any case (was issue 6667). - check.later(func() { + check.atEnd(func() { if !Comparable(typ.key) { check.errorf(e.Key.Pos(), "invalid map key type %s", typ.key) } @@ -560,17 +560,20 @@ func (check *Checker) completeInterface(ityp *Interface) { var methods []*Func var seen objset addMethod := func(m *Func, explicit bool) { - switch alt := seen.insert(m); { - case alt == nil: + switch other := seen.insert(m); { + case other == nil: methods = append(methods, m) - case explicit || !Identical(m.Type(), alt.Type()): + case explicit: check.errorf(m.pos, "duplicate method %s", m.name) - // We use "other" rather than "previous" here because - // the first declaration seen may not be textually - // earlier in the source. - check.errorf(alt.Pos(), "\tother declaration of %s", m) // secondary error, \t indented + check.reportAltDecl(other) default: - // silently drop method m + // check method signatures after all types are computed (issue #33656) + check.atEnd(func() { + if !Identical(m.typ, other.Type()) { + check.errorf(m.pos, "duplicate method %s", m.name) + check.reportAltDecl(other) + } + }) } } @@ -581,7 +584,7 @@ func (check *Checker) completeInterface(ityp *Interface) { posList := check.posMap[ityp] for i, typ := range ityp.embeddeds { pos := posList[i] // embedding position - typ := typ.Underlying().(*Interface) + typ := underlying(typ).(*Interface) check.completeInterface(typ) for _, m := range typ.allMethods { copy := *m From bc405df3914e82c9967e029a0235e19ba4461072 Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Wed, 14 Aug 2019 17:37:20 -0700 Subject: [PATCH 224/255] spec: allow embedding overlapping interfaces Updates #6977. Change-Id: I6eda4be550e7c7ea1e1bac3222850002d90a81a8 Reviewed-on: https://go-review.googlesource.com/c/go/+/190378 Reviewed-by: Rob Pike Reviewed-by: Matthew Dempsky --- doc/go_spec.html | 64 +++++++++++++++++++++++++++++++----------------- 1 file changed, 41 insertions(+), 23 deletions(-) diff --git a/doc/go_spec.html b/doc/go_spec.html index 89732fb8f2..4f94b14fa5 100644 --- a/doc/go_spec.html +++ b/doc/go_spec.html @@ -1,6 +1,6 @@ @@ -1244,16 +1244,15 @@ The value of an uninitialized variable of interface type is nil.

      -InterfaceType      = "interface" "{" { MethodSpec ";" } "}" .
      -MethodSpec         = MethodName Signature | InterfaceTypeName .
      +InterfaceType      = "interface" "{" { ( MethodSpec | InterfaceTypeName ) ";" } "}" .
      +MethodSpec         = MethodName Signature .
       MethodName         = identifier .
       InterfaceTypeName  = TypeName .
       

      -As with all method sets, in an interface type, each method must have a -unique -non-blank name. +An interface type may specify methods explicitly through method specifications, +or it may embed methods of other interfaces through interface type names.

      @@ -1265,6 +1264,11 @@ interface {
       }
       
      +

      +The name of each explicitly specified method must be unique +and not blank. +

      +
       interface {
       	String() string
      @@ -1280,9 +1284,9 @@ have the method set
       

      -func (p T) Read(p []byte) (n int, err error)   { return … }
      -func (p T) Write(p []byte) (n int, err error)  { return … }
      -func (p T) Close() error                       { return … }
      +func (p T) Read(p []byte) (n int, err error)
      +func (p T) Write(p []byte) (n int, err error)
      +func (p T) Close() error
       

      @@ -1332,27 +1336,41 @@ as the File interface.

      An interface T may use a (possibly qualified) interface type name E in place of a method specification. This is called -embedding interface E in T; it adds -all (exported and non-exported) methods of E to the interface -T. +embedding interface E in T. +The method set of T is the union +of the method sets of T’s explicitly declared methods and of +T’s embedded interfaces.

      +type Reader interface {
      +	Read(p []byte) (n int, err error)
      +	Close() error
      +}
      +
      +type Writer interface {
      +	Write(p []byte) (n int, err error)
      +	Close() error
      +}
      +
      +// ReadWriter's methods are Read, Write, and Close.
       type ReadWriter interface {
      -	Read(b Buffer) bool
      -	Write(b Buffer) bool
      +	Reader  // includes methods of Reader in ReadWriter's method set
      +	Writer  // includes methods of Writer in ReadWriter's method set
       }
      +
      -type File interface { - ReadWriter // same as adding the methods of ReadWriter - Locker // same as adding the methods of Locker - Close() -} +

      +A union of method sets contains the (exported and non-exported) +methods of each method set exactly once, and methods with the +same names must +have identical signatures. +

      -type LockedFile interface { - Locker - File // illegal: Lock, Unlock not unique - Lock() // illegal: Lock not unique +
      +type ReadCloser interface {
      +	Reader   // includes methods of Reader in ReadCloser's method set
      +	Close()  // illegal: signatures of Reader.Close and Close are different
       }
       
      From bdd0ff08db7abf07db29cd6dca98b5c1bc26ef26 Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Thu, 22 Aug 2019 21:27:33 -0700 Subject: [PATCH 225/255] go/types: process each segment of delayed actions in FIFO order The stack of delayed actions is grown by pushing a new action on top with Checker.later. Checker.processDelayed processes all actions above a top watermark and then resets the stack to top. Until now, pushed actions above the watermark were processed in LIFO order. This change processes them in FIFO order, which seems more natural (if an action A was delayed before an action B, A should be processed before B for that stack segment). (With this change, Checker.later could be used instead of Checker.atEnd to postpone interface method type comparison and then the specific example in issue #33656 does type-check. However, in general we want interface method type comparisons to run after all interfaces are completed. With Checker.later we may still end up mixing interface completions and interface method type comparisons in ways leading to other errors for sufficiently convoluted code.) Also, move Checker.processDelayed from resolver.go to check.go. Change-Id: Id31254605e6944c490eab410553fff907630cc64 Reviewed-on: https://go-review.googlesource.com/c/go/+/191458 Reviewed-by: Matthew Dempsky --- src/go/types/check.go | 15 +++++++++++++++ src/go/types/resolver.go | 10 ---------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/go/types/check.go b/src/go/types/check.go index 7d58183911..eec33057de 100644 --- a/src/go/types/check.go +++ b/src/go/types/check.go @@ -269,6 +269,21 @@ func (check *Checker) checkFiles(files []*ast.File) (err error) { return } +// processDelayed processes all delayed actions pushed after top. +func (check *Checker) processDelayed(top int) { + // If each delayed action pushes a new action, the + // stack will continue to grow during this loop. + // However, it is only processing functions (which + // are processed in a delayed fashion) that may + // add more actions (such as nested functions), so + // this is a sufficiently bounded process. + for i := top; i < len(check.delayed); i++ { + check.delayed[i]() // may append to check.delayed + } + assert(top <= len(check.delayed)) // stack must not have shrunk + check.delayed = check.delayed[:top] +} + func (check *Checker) processFinals() { n := len(check.finals) for _, f := range check.finals { diff --git a/src/go/types/resolver.go b/src/go/types/resolver.go index 417e4e79aa..93de63b059 100644 --- a/src/go/types/resolver.go +++ b/src/go/types/resolver.go @@ -607,16 +607,6 @@ func (a inSourceOrder) Len() int { return len(a) } func (a inSourceOrder) Less(i, j int) bool { return a[i].order() < a[j].order() } func (a inSourceOrder) Swap(i, j int) { a[i], a[j] = a[j], a[i] } -// processDelayed processes all delayed actions pushed after top. -func (check *Checker) processDelayed(top int) { - for len(check.delayed) > top { - i := len(check.delayed) - 1 - f := check.delayed[i] - check.delayed = check.delayed[:i] - f() // may append to check.delayed - } -} - // unusedImports checks for unused imports. func (check *Checker) unusedImports() { // if function bodies are not checked, packages' uses are likely missing - don't check From 989409f5279df7394faa1c3f66ef00a418f6c888 Mon Sep 17 00:00:00 2001 From: Katie Hockman Date: Mon, 26 Aug 2019 12:57:09 -0400 Subject: [PATCH 226/255] doc/go1.13: add information about using private modules to the introduction Fixes #33796 Change-Id: I9f6837be96410e96d004523c48bef95ee1427484 Reviewed-on: https://go-review.googlesource.com/c/go/+/191746 Reviewed-by: Bryan C. Mills --- doc/go1.13.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/go1.13.html b/doc/go1.13.html index b195fcde48..bd926542c3 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -31,7 +31,8 @@ Do not send CLs removing the interior tags from such phrases. for privacy information about these services and the go command documentation for configuration details including how to disable the use of these servers or use - different ones. + different ones. If you depend on non-public modules, see the + documentation for configuring your environment.

      Changes to the language

      From cded9f43f8d504159d9b71ddca7fe8abd8ba78b0 Mon Sep 17 00:00:00 2001 From: obei Date: Wed, 21 Aug 2019 23:25:20 +0530 Subject: [PATCH 227/255] doc: align documents link Updates #33738 Change-Id: If0856d7c57ecfde08341c1aecb5e92361fd64f2b Reviewed-on: https://go-review.googlesource.com/c/go/+/191217 Reviewed-by: Andrew Bonventre Run-TryBot: Andrew Bonventre TryBot-Result: Gobot Gobot --- doc/go1.10.html | 2 +- doc/go1.11.html | 2 +- doc/go1.12.html | 2 +- doc/go1.13.html | 2 +- doc/go1.6.html | 2 +- doc/go1.7.html | 2 +- doc/go1.8.html | 2 +- doc/go1.9.html | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/doc/go1.10.html b/doc/go1.10.html index 2974fef9a3..41db36ab1e 100644 --- a/doc/go1.10.html +++ b/doc/go1.10.html @@ -12,7 +12,7 @@ Do not send CLs removing the interior tags from such phrases. -->

      Introduction to Go 1.10

      diff --git a/doc/go1.11.html b/doc/go1.11.html index 1d85be9fe4..841ead225f 100644 --- a/doc/go1.11.html +++ b/doc/go1.11.html @@ -12,7 +12,7 @@ Do not send CLs removing the interior tags from such phrases. -->

      Introduction to Go 1.11

      diff --git a/doc/go1.12.html b/doc/go1.12.html index 7f0b221cc3..a8b0c87fe5 100644 --- a/doc/go1.12.html +++ b/doc/go1.12.html @@ -12,7 +12,7 @@ Do not send CLs removing the interior tags from such phrases. -->

      Introduction to Go 1.12

      diff --git a/doc/go1.13.html b/doc/go1.13.html index bd926542c3..df8733ec72 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -12,7 +12,7 @@ Do not send CLs removing the interior tags from such phrases. -->

      DRAFT RELEASE NOTES - Introduction to Go 1.13

      diff --git a/doc/go1.6.html b/doc/go1.6.html index 902a82d517..c8ec7e7991 100644 --- a/doc/go1.6.html +++ b/doc/go1.6.html @@ -10,7 +10,7 @@ Edit .,s;^([a-z][A-Za-z0-9_/]+)\.([A-Z][A-Za-z0-9_]+\.)?([A-Z][A-Za-z0-9_]+)([ . -->

      Introduction to Go 1.6

      diff --git a/doc/go1.7.html b/doc/go1.7.html index db60702776..61076fd091 100644 --- a/doc/go1.7.html +++ b/doc/go1.7.html @@ -22,7 +22,7 @@ Do not send CLs removing the interior tags from such phrases. -->

      Introduction to Go 1.7

      diff --git a/doc/go1.8.html b/doc/go1.8.html index 611f5ee25e..2a47fac420 100644 --- a/doc/go1.8.html +++ b/doc/go1.8.html @@ -12,7 +12,7 @@ Do not send CLs removing the interior tags from such phrases. -->

      Introduction to Go 1.8

      diff --git a/doc/go1.9.html b/doc/go1.9.html index fa50ae7805..3dfdf53a81 100644 --- a/doc/go1.9.html +++ b/doc/go1.9.html @@ -12,7 +12,7 @@ Do not send CLs removing the interior tags from such phrases. -->

      Introduction to Go 1.9

      From 63661b7251f1e42c6ccc673fa6530c62e2fbd7ac Mon Sep 17 00:00:00 2001 From: Matthew Dempsky Date: Wed, 24 Jul 2019 17:02:05 -0700 Subject: [PATCH 228/255] cmd/compile: refactor checkdupfields API Allows avoiding the Type.Fields call, which affects prevents checkdupfields from being called at the more natural point during dowidth. Change-Id: I724789c860e7fffba1e8e876e2d74dcfba85d75c Reviewed-on: https://go-review.googlesource.com/c/go/+/187517 Reviewed-by: Robert Griesemer Run-TryBot: Robert Griesemer TryBot-Result: Gobot Gobot --- src/cmd/compile/internal/gc/align.go | 2 +- src/cmd/compile/internal/gc/dcl.go | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/cmd/compile/internal/gc/align.go b/src/cmd/compile/internal/gc/align.go index 17c549d252..b45fd47253 100644 --- a/src/cmd/compile/internal/gc/align.go +++ b/src/cmd/compile/internal/gc/align.go @@ -385,7 +385,7 @@ func dowidth(t *types.Type) { // We defer calling these functions until after // setting t.Width and t.Align so the recursive calls // to dowidth within t.Fields() will succeed. - checkdupfields("method", t) + checkdupfields("method", t.FieldSlice()) offmod(t) } diff --git a/src/cmd/compile/internal/gc/dcl.go b/src/cmd/compile/internal/gc/dcl.go index 12875e798e..012f993d69 100644 --- a/src/cmd/compile/internal/gc/dcl.go +++ b/src/cmd/compile/internal/gc/dcl.go @@ -576,10 +576,10 @@ func structfield(n *Node) *types.Field { // checkdupfields emits errors for duplicately named fields or methods in // a list of struct or interface types. -func checkdupfields(what string, ts ...*types.Type) { +func checkdupfields(what string, fss ...[]*types.Field) { seen := make(map[*types.Sym]bool) - for _, t := range ts { - for _, f := range t.Fields().Slice() { + for _, fs := range fss { + for _, f := range fs { if f.Sym == nil || f.Sym.IsBlank() { continue } @@ -615,7 +615,7 @@ func tostruct0(t *types.Type, l []*Node) { } t.SetFields(fields) - checkdupfields("field", t) + checkdupfields("field", t.FieldSlice()) if !t.Broke() { checkwidth(t) @@ -747,7 +747,7 @@ func functype0(t *types.Type, this *Node, in, out []*Node) { t.FuncType().Params = tofunargs(in, types.FunargParams) t.FuncType().Results = tofunargs(out, types.FunargResults) - checkdupfields("argument", t.Recvs(), t.Params(), t.Results()) + checkdupfields("argument", t.Recvs().FieldSlice(), t.Params().FieldSlice(), t.Results().FieldSlice()) if t.Recvs().Broke() || t.Results().Broke() || t.Params().Broke() { t.SetBroke(true) From 97edf7790375604f4b22d30b22b88968ff199ce9 Mon Sep 17 00:00:00 2001 From: Matthew Dempsky Date: Wed, 24 Jul 2019 17:09:15 -0700 Subject: [PATCH 229/255] cmd/compile: refactor expandiface Move checkdupfields call into expandiface, and inline/simplify offmod. More prep work for implementing #6977. Change-Id: I958ae87f761ec25a8fa7298a2a3019eeca5b25ba Reviewed-on: https://go-review.googlesource.com/c/go/+/187518 Reviewed-by: Robert Griesemer --- src/cmd/compile/internal/gc/align.go | 29 +++++++++------------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/src/cmd/compile/internal/gc/align.go b/src/cmd/compile/internal/gc/align.go index b45fd47253..073d9f2a12 100644 --- a/src/cmd/compile/internal/gc/align.go +++ b/src/cmd/compile/internal/gc/align.go @@ -59,25 +59,22 @@ func expandiface(t *types.Type) { fields = append(fields, f) } } + sort.Sort(methcmp(fields)) + checkdupfields("method", fields) + + if int64(len(fields)) >= thearch.MAXWIDTH/int64(Widthptr) { + yyerror("interface too large") + } + for i, f := range fields { + f.Offset = int64(i) * int64(Widthptr) + } // Access fields directly to avoid recursively calling dowidth // within Type.Fields(). t.Extra.(*types.Interface).Fields.Set(fields) } -func offmod(t *types.Type) { - o := int32(0) - for _, f := range t.Fields().Slice() { - f.Offset = int64(o) - o += int32(Widthptr) - if int64(o) >= thearch.MAXWIDTH { - yyerror("interface too large") - o = int32(Widthptr) - } - } -} - func widstruct(errtype *types.Type, t *types.Type, o int64, flag int) int64 { starto := o maxalign := int32(flag) @@ -381,14 +378,6 @@ func dowidth(t *types.Type) { t.Align = uint8(w) } - if t.Etype == TINTER { - // We defer calling these functions until after - // setting t.Width and t.Align so the recursive calls - // to dowidth within t.Fields() will succeed. - checkdupfields("method", t.FieldSlice()) - offmod(t) - } - lineno = lno if defercalc == 1 { From 8d4b685ab5794f0ee8f95a3a75c566653ba4eb5a Mon Sep 17 00:00:00 2001 From: Matthew Dempsky Date: Wed, 24 Jul 2019 17:43:31 -0700 Subject: [PATCH 230/255] cmd/compile: allow embedding overlapping interfaces Quietly drop duplicate methods inherited from embedded interfaces if they have an identical signature to existing methods. Updates #6977. Change-Id: I144151cb7d99695f12b555c0db56207993c56284 Reviewed-on: https://go-review.googlesource.com/c/go/+/187519 Run-TryBot: Matthew Dempsky TryBot-Result: Gobot Gobot Reviewed-by: Robert Griesemer --- src/cmd/compile/internal/gc/align.go | 42 ++++++++++++++++++++-------- test/fixedbugs/bug251.go | 6 +--- test/fixedbugs/issue6977.go | 40 ++++++++++++++++++++++++++ 3 files changed, 72 insertions(+), 16 deletions(-) create mode 100644 test/fixedbugs/issue6977.go diff --git a/src/cmd/compile/internal/gc/align.go b/src/cmd/compile/internal/gc/align.go index 073d9f2a12..9ef31ed92c 100644 --- a/src/cmd/compile/internal/gc/align.go +++ b/src/cmd/compile/internal/gc/align.go @@ -27,11 +27,32 @@ func Rnd(o int64, r int64) int64 { // expandiface computes the method set for interface type t by // expanding embedded interfaces. func expandiface(t *types.Type) { - var fields []*types.Field + seen := make(map[*types.Sym]*types.Field) + var methods []*types.Field + + addMethod := func(m *types.Field, explicit bool) { + switch prev := seen[m.Sym]; { + case prev == nil: + seen[m.Sym] = m + case !explicit && types.Identical(m.Type, prev.Type): + return + default: + yyerrorl(m.Pos, "duplicate method %s", m.Sym.Name) + } + methods = append(methods, m) + } + + for _, m := range t.Methods().Slice() { + if m.Sym == nil { + continue + } + + checkwidth(m.Type) + addMethod(m, true) + } + for _, m := range t.Methods().Slice() { if m.Sym != nil { - fields = append(fields, m) - checkwidth(m.Type) continue } @@ -43,7 +64,7 @@ func expandiface(t *types.Type) { // include the broken embedded type when // printing t. // TODO(mdempsky): Revisit this. - fields = append(fields, m) + methods = append(methods, m) continue } @@ -56,23 +77,22 @@ func expandiface(t *types.Type) { f.Sym = t1.Sym f.Type = t1.Type f.SetBroke(t1.Broke()) - fields = append(fields, f) + addMethod(f, false) } } - sort.Sort(methcmp(fields)) - checkdupfields("method", fields) + sort.Sort(methcmp(methods)) - if int64(len(fields)) >= thearch.MAXWIDTH/int64(Widthptr) { + if int64(len(methods)) >= thearch.MAXWIDTH/int64(Widthptr) { yyerror("interface too large") } - for i, f := range fields { - f.Offset = int64(i) * int64(Widthptr) + for i, m := range methods { + m.Offset = int64(i) * int64(Widthptr) } // Access fields directly to avoid recursively calling dowidth // within Type.Fields(). - t.Extra.(*types.Interface).Fields.Set(fields) + t.Extra.(*types.Interface).Fields.Set(methods) } func widstruct(errtype *types.Type, t *types.Type, o int64, flag int) int64 { diff --git a/test/fixedbugs/bug251.go b/test/fixedbugs/bug251.go index 05e111a61f..706bb8d690 100644 --- a/test/fixedbugs/bug251.go +++ b/test/fixedbugs/bug251.go @@ -8,11 +8,7 @@ package main type I1 interface { // GC_ERROR "invalid recursive type" m() I2 - // TODO(mdempsky): The duplicate method error is silly - // and redundant, but tricky to prevent as it's actually - // being emitted against the underlying interface type - // literal, not I1 itself. - I2 // ERROR "loop|interface|duplicate method m" + I2 // GCCGO_ERROR "loop|interface" } type I2 interface { diff --git a/test/fixedbugs/issue6977.go b/test/fixedbugs/issue6977.go new file mode 100644 index 0000000000..0f657eec41 --- /dev/null +++ b/test/fixedbugs/issue6977.go @@ -0,0 +1,40 @@ +// errorcheck + +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package p + +import "io" + +// Alan's initial report. + +type I interface { f(); String() string } +type J interface { g(); String() string } + +type IJ1 = interface { I; J } +type IJ2 = interface { f(); g(); String() string } + +var _ = (*IJ1)(nil) == (*IJ2)(nil) // static assert that IJ1 and IJ2 are identical types + +// The canonical example. + +type ReadWriteCloser interface { io.ReadCloser; io.WriteCloser } + +// Some more cases. + +type M interface { m() } +type M32 interface { m() int32 } +type M64 interface { m() int64 } + +type U1 interface { m() } +type U2 interface { m(); M } +type U3 interface { M; m() } +type U4 interface { M; M; M } +type U5 interface { U1; U2; U3; U4 } + +type U6 interface { m(); m() } // ERROR "duplicate method m" +type U7 interface { M32; m() } // ERROR "duplicate method m" +type U8 interface { m(); M32 } // ERROR "duplicate method m" +type U9 interface { M32; M64 } // ERROR "duplicate method m" From 1a423bec00915fd45dc6f7ee67860abbfc2bbdb2 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Mon, 26 Aug 2019 07:15:34 -0600 Subject: [PATCH 231/255] ld: fix up header copy and paste error Some constants were added above the initial copyright blurb, and then later a new copyright blurb was added on top of that. So we wound up with two header sections, one of which contained a useful comment that became obscured. This commit fixes up that mistake. Change-Id: I8b9b8c34495cdceae959e151e8ccdee3137f6ca4 Reviewed-on: https://go-review.googlesource.com/c/go/+/191841 Run-TryBot: Jason A. Donenfeld TryBot-Result: Gobot Gobot Reviewed-by: Ian Lance Taylor --- src/cmd/link/internal/ld/pe.go | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/cmd/link/internal/ld/pe.go b/src/cmd/link/internal/ld/pe.go index 032968f983..497a20b548 100644 --- a/src/cmd/link/internal/ld/pe.go +++ b/src/cmd/link/internal/ld/pe.go @@ -2,6 +2,9 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +// PE (Portable Executable) file writing +// https://www.microsoft.com/whdc/system/platform/firmware/PECOFF.mspx + package ld import ( @@ -124,13 +127,6 @@ const ( IMAGE_REL_BASED_HIGHLOW = 3 ) -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// PE (Portable Executable) file writing -// https://www.microsoft.com/whdc/system/platform/firmware/PECOFF.mspx - // DOS stub that prints out // "This program cannot be run in DOS mode." var dosstub = []uint8{ From dca0d03b9c9ad20de743bd8ac4cd4b2b466713a3 Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Thu, 1 Aug 2019 11:45:21 -0700 Subject: [PATCH 232/255] cmd/compile/internal/syntax: better error recovery after missing expression Don't skip closing parentheses of any kind after a missing expression. They are likely part of the lexical construct enclosing the expression. Fixes #33386. Change-Id: Ic0abc2037ec339a345ec357ccc724b7ad2a64c00 Reviewed-on: https://go-review.googlesource.com/c/go/+/188502 Reviewed-by: Matthew Dempsky --- src/cmd/compile/internal/syntax/parser.go | 5 +++- test/fixedbugs/issue33386.go | 29 +++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 test/fixedbugs/issue33386.go diff --git a/src/cmd/compile/internal/syntax/parser.go b/src/cmd/compile/internal/syntax/parser.go index d4e9bf2f96..6ad1e5b9a5 100644 --- a/src/cmd/compile/internal/syntax/parser.go +++ b/src/cmd/compile/internal/syntax/parser.go @@ -869,7 +869,7 @@ func (p *parser) operand(keep_parens bool) Expr { default: x := p.bad() p.syntaxError("expecting expression") - p.advance() + p.advance(_Rparen, _Rbrack, _Rbrace) return x } @@ -1840,6 +1840,9 @@ func (p *parser) header(keyword token) (init SimpleStmt, cond Expr, post SimpleS } else { // asking for a '{' rather than a ';' here leads to a better error message p.want(_Lbrace) + if p.tok != _Lbrace { + p.advance(_Lbrace, _Rbrace) // for better synchronization (e.g., issue #22581) + } } if keyword == _For { if p.tok != _Semi { diff --git a/test/fixedbugs/issue33386.go b/test/fixedbugs/issue33386.go new file mode 100644 index 0000000000..afc27e62f3 --- /dev/null +++ b/test/fixedbugs/issue33386.go @@ -0,0 +1,29 @@ +// errorcheck + +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Verify that we don't get spurious follow-on errors +// after a missing expression. Specifically, the parser +// shouldn't skip over closing parentheses of any kind. + +package p + +func _() { + go func() { // no error here about goroutine + send <- + }() // ERROR "expecting expression" +} + +func _() { + defer func() { // no error here about deferred function + 1 + + }() // ERROR "expecting expression" +} + +func _() { + _ = (1 +) // ERROR "expecting expression" + _ = a[2 +] // ERROR "expecting expression" + _ = []int{1, 2, 3 + } // ERROR "expecting expression" +} From 8057c0887f89701b3091755d986b534fd8a50fc7 Mon Sep 17 00:00:00 2001 From: Sergei Zagurskii Date: Wed, 22 May 2019 17:00:34 +0300 Subject: [PATCH 233/255] reflect: optimize directlyAssignable to avoid rtype.Name call MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit directlyAssignable invoked rtype.Name() just to compare its result to empty string. We really only need to check whether rtype has name. It can be done much cheaper, by checking tflagNamed. Benchmark: https://play.golang.org/p/V2BzESPuf2w name old time/op new time/op delta DirectlyAssignable-12 32.7ns ± 6% 6.6ns ± 6% -79.80% (p=0.008 n=5+5) Fixes #32186 Change-Id: I1a2a167dbfddf319fba3015cb6a011bf010f99a8 Reviewed-on: https://go-review.googlesource.com/c/go/+/178518 Run-TryBot: Brad Fitzpatrick TryBot-Result: Gobot Gobot Reviewed-by: Brad Fitzpatrick --- src/internal/reflectlite/type.go | 8 ++++++-- src/reflect/type.go | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/internal/reflectlite/type.go b/src/internal/reflectlite/type.go index 03274bcd4c..c706319a8e 100644 --- a/src/internal/reflectlite/type.go +++ b/src/internal/reflectlite/type.go @@ -521,8 +521,12 @@ func (t *rtype) PkgPath() string { return t.nameOff(ut.pkgPath).name() } +func (t *rtype) hasName() bool { + return t.tflag&tflagNamed != 0 +} + func (t *rtype) Name() string { - if t.tflag&tflagNamed == 0 { + if !t.hasName() { return "" } s := t.String() @@ -782,7 +786,7 @@ func directlyAssignable(T, V *rtype) bool { // Otherwise at least one of T and V must not be defined // and they must have the same kind. - if T.Name() != "" && V.Name() != "" || T.Kind() != V.Kind() { + if T.hasName() && V.hasName() || T.Kind() != V.Kind() { return false } diff --git a/src/reflect/type.go b/src/reflect/type.go index 7aafc505bd..4afe634bbf 100644 --- a/src/reflect/type.go +++ b/src/reflect/type.go @@ -871,8 +871,12 @@ func hasPrefix(s, prefix string) bool { return len(s) >= len(prefix) && s[:len(prefix)] == prefix } +func (t *rtype) hasName() bool { + return t.tflag&tflagNamed != 0 +} + func (t *rtype) Name() string { - if t.tflag&tflagNamed == 0 { + if !t.hasName() { return "" } s := t.String() @@ -1563,7 +1567,7 @@ func directlyAssignable(T, V *rtype) bool { // Otherwise at least one of T and V must not be defined // and they must have the same kind. - if T.Name() != "" && V.Name() != "" || T.Kind() != V.Kind() { + if T.hasName() && V.hasName() || T.Kind() != V.Kind() { return false } From 69ff0ba7984e01f13dd91b8dd89f134c4127d75a Mon Sep 17 00:00:00 2001 From: zdjones Date: Tue, 9 Apr 2019 23:19:43 +0100 Subject: [PATCH 234/255] cmd/compile: handle sign/zero extensions in prove, via update method Array accesses with index types smaller than the machine word size may involve a sign or zero extension of the index value before bounds checking. Currently, this defeats prove because the facts about the original index value don't flow through the sign/zero extension. This CL fixes this by looking back through value-preserving sign/zero extensions when adding facts via Update and, where appropriate, applying the same facts using the pre-extension value. This fix is enhanced by also looking back through value-preserving extensions within ft.isNonNegative to infer whether the extended value is known to be non-negative. Without this additional isNonNegative enhancement, this logic is rendered significantly less effective by the limitation discussed in the next paragraph. In Update, the application of facts to pre-extension values is limited to cases where the domain of the new fact is consistent with the type of the pre-extension value. There may be cases where this cross-domain passing of facts is valid, but distinguishing them from the invalid cases is difficult for me to reason about and to implement. Assessing which cases to allow requires details about the context and inferences behind the fact being applied which are not available within Update. Additional difficulty arises from the fact that the SSA does not curently differentiate extensions added by the compiler for indexing operations, extensions added by the compiler for implicit conversions, or explicit extensions from the source. Examples of some cases that would need to be filtered correctly for cross-domain facts: (1) A uint8 is zero-extended to int for indexing (a value-preserving zeroExt). When, if ever, can signed domain facts learned about the int be applied to the uint8? (2) An int8 is sign-extended to int16 (value-preserving) for an equality comparison. Equality comparison facts are currently always learned in both the signed and unsigned domains. When, if ever, can the unsigned facts learned about the int16, from the int16 != int16 comparison, be applied to the original int8? This is an alternative to CL 122695 and CL 174309. Compared to CL 122695, this CL differs in that the facts added about the pre-extension value will pass through the Update method, where additional inferences are processed (e.g. fence-post implications, see #29964). CL 174309 is limited to bounds checks, so is narrower in application, and makes the code harder to read. Fixes #26292. Fixes #29964. Fixes #15074 Removes 238 bounds checks from std/cmd. Change-Id: I1f87c32ee672bfb8be397b27eab7a4c2f304893f Reviewed-on: https://go-review.googlesource.com/c/go/+/174704 Run-TryBot: Zach Jones TryBot-Result: Gobot Gobot Reviewed-by: Giovanni Bajo --- src/cmd/compile/internal/ssa/prove.go | 41 +++++++++++++++++++ test/prove.go | 57 +++++++++++++++++++++++++++ 2 files changed, 98 insertions(+) diff --git a/src/cmd/compile/internal/ssa/prove.go b/src/cmd/compile/internal/ssa/prove.go index 7c69327990..697862f986 100644 --- a/src/cmd/compile/internal/ssa/prove.go +++ b/src/cmd/compile/internal/ssa/prove.go @@ -530,6 +530,25 @@ func (ft *factsTable) update(parent *Block, v, w *Value, d domain, r relation) { } } + // Look through value-preserving extensions. + // If the domain is appropriate for the pre-extension Type, + // repeat the update with the pre-extension Value. + if isCleanExt(v) { + switch { + case d == signed && v.Args[0].Type.IsSigned(): + fallthrough + case d == unsigned && !v.Args[0].Type.IsSigned(): + ft.update(parent, v.Args[0], w, d, r) + } + } + if isCleanExt(w) { + switch { + case d == signed && w.Args[0].Type.IsSigned(): + fallthrough + case d == unsigned && !w.Args[0].Type.IsSigned(): + ft.update(parent, v, w.Args[0], d, r) + } + } } var opMin = map[Op]int64{ @@ -584,6 +603,11 @@ func (ft *factsTable) isNonNegative(v *Value) bool { } } + // Check if v is a value-preserving extension of a non-negative value. + if isCleanExt(v) && ft.isNonNegative(v.Args[0]) { + return true + } + // Check if the signed poset can prove that the value is >= 0 return ft.order[0].OrderedOrEqual(ft.zero, v) } @@ -1299,3 +1323,20 @@ func isConstDelta(v *Value) (w *Value, delta int64) { } return nil, 0 } + +// isCleanExt reports whether v is the result of a value-preserving +// sign or zero extension +func isCleanExt(v *Value) bool { + switch v.Op { + case OpSignExt8to16, OpSignExt8to32, OpSignExt8to64, + OpSignExt16to32, OpSignExt16to64, OpSignExt32to64: + // signed -> signed is the only value-preserving sign extension + return v.Args[0].Type.IsSigned() && v.Type.IsSigned() + + case OpZeroExt8to16, OpZeroExt8to32, OpZeroExt8to64, + OpZeroExt16to32, OpZeroExt16to64, OpZeroExt32to64: + // unsigned -> signed/unsigned are value-preserving zero extensions + return !v.Args[0].Type.IsSigned() + } + return false +} diff --git a/test/prove.go b/test/prove.go index 6e92b9eec2..7643031c62 100644 --- a/test/prove.go +++ b/test/prove.go @@ -853,6 +853,63 @@ func unrollIncMin(a []int) int { return x } +// The 4 xxxxExtNto64 functions below test whether prove is looking +// through value-preserving sign/zero extensions of index values (issue #26292). + +// Look through all extensions +func signExtNto64(x []int, j8 int8, j16 int16, j32 int32) int { + if len(x) < 22 { + return 0 + } + if j8 >= 0 && j8 < 22 { + return x[j8] // ERROR "Proved IsInBounds$" + } + if j16 >= 0 && j16 < 22 { + return x[j16] // ERROR "Proved IsInBounds$" + } + if j32 >= 0 && j32 < 22 { + return x[j32] // ERROR "Proved IsInBounds$" + } + return 0 +} + +func zeroExtNto64(x []int, j8 uint8, j16 uint16, j32 uint32) int { + if len(x) < 22 { + return 0 + } + if j8 >= 0 && j8 < 22 { + return x[j8] // ERROR "Proved IsInBounds$" + } + if j16 >= 0 && j16 < 22 { + return x[j16] // ERROR "Proved IsInBounds$" + } + if j32 >= 0 && j32 < 22 { + return x[j32] // ERROR "Proved IsInBounds$" + } + return 0 +} + +// Process fence-post implications through 32to64 extensions (issue #29964) +func signExt32to64Fence(x []int, j int32) int { + if x[j] != 0 { + return 1 + } + if j > 0 && x[j-1] != 0 { // ERROR "Proved IsInBounds$" + return 1 + } + return 0 +} + +func zeroExt32to64Fence(x []int, j uint32) int { + if x[j] != 0 { + return 1 + } + if j > 0 && x[j-1] != 0 { // ERROR "Proved IsInBounds$" + return 1 + } + return 0 +} + //go:noinline func useInt(a int) { } From 324cf21f781c651ad4e7a0ba9480b6ab85b7c0d1 Mon Sep 17 00:00:00 2001 From: LE Manh Cuong Date: Mon, 29 Jul 2019 20:24:22 +0700 Subject: [PATCH 235/255] cmd/compile: remove adjustctx from inline test After golang.org/cl/33895, function adjustctx can not be inlined, cost 82 exceeds budget 80 Change-Id: Ie559ed80ea2c251add940a99f11b2983f6cbddbc Reviewed-on: https://go-review.googlesource.com/c/go/+/187977 Run-TryBot: Cuong Manh Le TryBot-Result: Gobot Gobot Reviewed-by: Keith Randall --- src/cmd/compile/internal/gc/inl_test.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/cmd/compile/internal/gc/inl_test.go b/src/cmd/compile/internal/gc/inl_test.go index a04869c5a3..a0f56e776b 100644 --- a/src/cmd/compile/internal/gc/inl_test.go +++ b/src/cmd/compile/internal/gc/inl_test.go @@ -31,10 +31,6 @@ func TestIntendedInlining(t *testing.T) { // might not actually be inlined anywhere. want := map[string][]string{ "runtime": { - // TODO(mvdan): enable these once mid-stack - // inlining is available - // "adjustctxt", - "add", "acquirem", "add1", From cd33d271b47bf3b56c67bf9ab73176ed4504efe9 Mon Sep 17 00:00:00 2001 From: Javier Revillas Date: Sun, 25 Aug 2019 16:05:41 +0000 Subject: [PATCH 236/255] net/http: fix a typo in comments HTTP is an initialism, not an acronym, where you pronounce each letter as a word. It's "an H", not "a H". Running `find src/net/http -type f | xargs grep -n 'an HTTP' | wc -l` shows that the "an HTTP" form is used 67 times across the `net/http` package. Furthermore, `find src/net/http -type f | xargs grep -n 'a HTTP' | wc -l` yields only 4 results. Change-Id: I219c292a9e2c9bf7a009dbfe82ea8b15874685e9 GitHub-Last-Rev: 6ebd095023af47444b6b0fc5b6d7b26d85f4c7b7 GitHub-Pull-Request: golang/go#33810 Reviewed-on: https://go-review.googlesource.com/c/go/+/191700 Reviewed-by: Toshihiro Shiino Reviewed-by: Ian Lance Taylor --- src/net/http/httptrace/trace.go | 4 ++-- src/net/http/request.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/net/http/httptrace/trace.go b/src/net/http/httptrace/trace.go index 8b377edee5..6a5cbac9d8 100644 --- a/src/net/http/httptrace/trace.go +++ b/src/net/http/httptrace/trace.go @@ -133,8 +133,8 @@ type ClientTrace struct { ConnectDone func(network, addr string, err error) // TLSHandshakeStart is called when the TLS handshake is started. When - // connecting to a HTTPS site via a HTTP proxy, the handshake happens after - // the CONNECT request is processed by the proxy. + // connecting to an HTTPS site via an HTTP proxy, the handshake happens + // after the CONNECT request is processed by the proxy. TLSHandshakeStart func() // TLSHandshakeDone is called after the TLS handshake with either the diff --git a/src/net/http/request.go b/src/net/http/request.go index 31d62083cb..6e113f1607 100644 --- a/src/net/http/request.go +++ b/src/net/http/request.go @@ -763,7 +763,7 @@ func removeZone(host string) string { return host[:j] + host[i:] } -// ParseHTTPVersion parses a HTTP version string. +// ParseHTTPVersion parses an HTTP version string. // "HTTP/1.0" returns (1, 0, true). func ParseHTTPVersion(vers string) (major, minor int, ok bool) { const Big = 1000000 // arbitrary upper bound From 1a53915c6b905ae5d0a4398362cc655a1406cf06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Thu, 16 May 2019 11:26:40 +0100 Subject: [PATCH 237/255] cmd/compile: initial rulegen rewrite MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit rulegen.go produces plaintext Go code directly, which was fine for a while. However, that's started being a bottleneck for making code generation more complex, as we can only generate code directly one line at a time. Some workarounds were used, like multiple layers of buffers to generate chunks of code, to then use strings.Contains to see whether variables need to be defined or not. However, that's error-prone, verbose, and difficult to work with. A better approach is to generate an intermediate syntax tree in memory, which we can inspect and modify easily. For example, we could run a number of "passes" on the syntax tree before writing to disk, such as removing unused variables, simplifying logic, or moving declarations closer to their uses. This is the first step in that direction, without changing any of the generated code. We didn't use go/ast directly, as it's too complex for our needs. In particular, we only need a few kinds of simple statements, but we do want to support arbitrary expressions. As such, define a simple set of statement structs, and add thin layers for printer.Fprint and ast.Inspect. A nice side effect of this change, besides removing some buffers and string handling, is that we can now avoid passing so many parameters around. And, while we add over a hundred lines of code, the tricky pieces of code are now a bit simpler to follow. While at it, apply some cleanups, such as replacing isVariable with token.IsIdentifier, and consistently using log.Fatalf. Follow-up CLs will start improving the generated code, also simplifying the rulegen code itself. I've added some TODOs for the low-hanging fruit that I intend to work on right after. Updates #30810. Change-Id: Ic371c192b29c85dfc4a001be7fbcbeec85facc9d Reviewed-on: https://go-review.googlesource.com/c/go/+/177539 Run-TryBot: Daniel Martí TryBot-Result: Gobot Gobot Reviewed-by: Keith Randall --- src/cmd/compile/internal/ssa/gen/rulegen.go | 830 ++++++++++++-------- 1 file changed, 487 insertions(+), 343 deletions(-) diff --git a/src/cmd/compile/internal/ssa/gen/rulegen.go b/src/cmd/compile/internal/ssa/gen/rulegen.go index 4ca6796f7c..0e89af73e9 100644 --- a/src/cmd/compile/internal/ssa/gen/rulegen.go +++ b/src/cmd/compile/internal/ssa/gen/rulegen.go @@ -16,10 +16,15 @@ import ( "bytes" "flag" "fmt" + "go/ast" "go/format" + "go/parser" + "go/printer" + "go/token" "io" "io/ioutil" "log" + "math" "os" "regexp" "sort" @@ -47,9 +52,7 @@ import ( // If multiple rules match, the first one in file order is selected. -var ( - genLog = flag.Bool("log", false, "generate code that logs; for debugging only") -) +var genLog = flag.Bool("log", false, "generate code that logs; for debugging only") type Rule struct { rule string @@ -136,13 +139,13 @@ func genRulesSuffix(arch arch, suff string) { r := Rule{rule: rule3, loc: loc} if rawop := strings.Split(rule3, " ")[0][1:]; isBlock(rawop, arch) { blockrules[rawop] = append(blockrules[rawop], r) - } else { - // Do fancier value op matching. - match, _, _ := r.parse() - op, oparch, _, _, _, _ := parseValue(match, arch, loc) - opname := fmt.Sprintf("Op%s%s", oparch, op.name) - oprules[opname] = append(oprules[opname], r) + continue } + // Do fancier value op matching. + match, _, _ := r.parse() + op, oparch, _, _, _, _ := parseValue(match, arch, loc) + opname := fmt.Sprintf("Op%s%s", oparch, op.name) + oprules[opname] = append(oprules[opname], r) } } rule = "" @@ -162,256 +165,448 @@ func genRulesSuffix(arch arch, suff string) { } sort.Strings(ops) - // Start output buffer, write header. - w := new(bytes.Buffer) - fmt.Fprintf(w, "// Code generated from gen/%s%s.rules; DO NOT EDIT.\n", arch.name, suff) - fmt.Fprintln(w, "// generated with: cd gen; go run *.go") - fmt.Fprintln(w) - fmt.Fprintln(w, "package ssa") - fmt.Fprintln(w, "import \"fmt\"") - fmt.Fprintln(w, "import \"math\"") - fmt.Fprintln(w, "import \"cmd/internal/obj\"") - fmt.Fprintln(w, "import \"cmd/internal/objabi\"") - fmt.Fprintln(w, "import \"cmd/compile/internal/types\"") - fmt.Fprintln(w, "var _ = fmt.Println // in case not otherwise used") - fmt.Fprintln(w, "var _ = math.MinInt8 // in case not otherwise used") - fmt.Fprintln(w, "var _ = obj.ANOP // in case not otherwise used") - fmt.Fprintln(w, "var _ = objabi.GOROOT // in case not otherwise used") - fmt.Fprintln(w, "var _ = types.TypeMem // in case not otherwise used") - fmt.Fprintln(w) - + file := &File{arch: arch, suffix: suff} const chunkSize = 10 // Main rewrite routine is a switch on v.Op. - fmt.Fprintf(w, "func rewriteValue%s%s(v *Value) bool {\n", arch.name, suff) - fmt.Fprintf(w, "switch v.Op {\n") + fn := &Func{kind: "Value"} + + sw := &Switch{expr: exprf("v.Op")} for _, op := range ops { - fmt.Fprintf(w, "case %s:\n", op) - fmt.Fprint(w, "return ") + var ors []string for chunk := 0; chunk < len(oprules[op]); chunk += chunkSize { - if chunk > 0 { - fmt.Fprint(w, " || ") - } - fmt.Fprintf(w, "rewriteValue%s%s_%s_%d(v)", arch.name, suff, op, chunk) + ors = append(ors, fmt.Sprintf("rewriteValue%s%s_%s_%d(v)", arch.name, suff, op, chunk)) } - fmt.Fprintln(w) + swc := &Case{expr: exprf(op)} + swc.add(stmtf("return %s", strings.Join(ors, " || "))) + sw.add(swc) } - fmt.Fprintf(w, "}\n") - fmt.Fprintf(w, "return false\n") - fmt.Fprintf(w, "}\n") + fn.add(sw) + fn.add(stmtf("return false")) + file.add(fn) // Generate a routine per op. Note that we don't make one giant routine // because it is too big for some compilers. for _, op := range ops { - for chunk := 0; chunk < len(oprules[op]); chunk += chunkSize { - buf := new(bytes.Buffer) - var canFail bool + rules := oprules[op] + // rr is kept between chunks, so that a following chunk checks + // that the previous one ended with a rule that wasn't + // unconditional. + var rr *RuleRewrite + for chunk := 0; chunk < len(rules); chunk += chunkSize { endchunk := chunk + chunkSize - if endchunk > len(oprules[op]) { - endchunk = len(oprules[op]) + if endchunk > len(rules) { + endchunk = len(rules) } - for i, rule := range oprules[op][chunk:endchunk] { - match, cond, result := rule.parse() - fmt.Fprintf(buf, "// match: %s\n", match) - fmt.Fprintf(buf, "// cond: %s\n", cond) - fmt.Fprintf(buf, "// result: %s\n", result) - - canFail = false - fmt.Fprintf(buf, "for {\n") - pos, _, matchCanFail := genMatch(buf, arch, match, rule.loc) + fn := &Func{ + kind: "Value", + suffix: fmt.Sprintf("_%s_%d", op, chunk), + } + var rewrites bodyBase + for _, rule := range rules[chunk:endchunk] { + if rr != nil && !rr.canFail { + log.Fatalf("unconditional rule %s is followed by other rules", rr.match) + } + rr = &RuleRewrite{loc: rule.loc} + rr.match, rr.cond, rr.result = rule.parse() + pos, _ := genMatch(rr, arch, rr.match) if pos == "" { pos = "v.Pos" } - if matchCanFail { - canFail = true + if rr.cond != "" { + rr.add(breakf("!(%s)", rr.cond)) } - - if cond != "" { - fmt.Fprintf(buf, "if !(%s) {\nbreak\n}\n", cond) - canFail = true - } - if !canFail && i+chunk != len(oprules[op])-1 { - log.Fatalf("unconditional rule %s is followed by other rules", match) - } - - genResult(buf, arch, result, rule.loc, pos) + genResult(rr, arch, rr.result, pos) if *genLog { - fmt.Fprintf(buf, "logRule(\"%s\")\n", rule.loc) + rr.add(stmtf("logRule(%q)", rule.loc)) } - fmt.Fprintf(buf, "return true\n") - - fmt.Fprintf(buf, "}\n") - } - if canFail { - fmt.Fprintf(buf, "return false\n") + rewrites.add(rr) } - body := buf.String() - // Figure out whether we need b, config, fe, and/or types; provide them if so. - hasb := strings.Contains(body, " b.") - hasconfig := strings.Contains(body, "config.") || strings.Contains(body, "config)") - hasfe := strings.Contains(body, "fe.") - hastyps := strings.Contains(body, "typ.") - fmt.Fprintf(w, "func rewriteValue%s%s_%s_%d(v *Value) bool {\n", arch.name, suff, op, chunk) - if hasb || hasconfig || hasfe || hastyps { - fmt.Fprintln(w, "b := v.Block") + // TODO(mvdan): remove unused vars later instead + uses := make(map[string]int) + walk(&rewrites, func(node Node) { + switch node := node.(type) { + case *Declare: + // work around var shadowing + // TODO(mvdan): forbid it instead. + uses[node.name] = math.MinInt32 + case *ast.Ident: + uses[node.Name]++ + } + }) + if uses["b"]+uses["config"]+uses["fe"]+uses["typ"] > 0 { + fn.add(declf("b", "v.Block")) } - if hasconfig { - fmt.Fprintln(w, "config := b.Func.Config") + if uses["config"] > 0 { + fn.add(declf("config", "b.Func.Config")) } - if hasfe { - fmt.Fprintln(w, "fe := b.Func.fe") + if uses["fe"] > 0 { + fn.add(declf("fe", "b.Func.fe")) } - if hastyps { - fmt.Fprintln(w, "typ := &b.Func.Config.Types") + if uses["typ"] > 0 { + fn.add(declf("typ", "&b.Func.Config.Types")) } - fmt.Fprint(w, body) - fmt.Fprintf(w, "}\n") + fn.add(rewrites.list...) + if rr.canFail { + fn.add(stmtf("return false")) + } + file.add(fn) } } // Generate block rewrite function. There are only a few block types // so we can make this one function with a switch. - fmt.Fprintf(w, "func rewriteBlock%s%s(b *Block) bool {\n", arch.name, suff) - fmt.Fprintln(w, "config := b.Func.Config") - fmt.Fprintln(w, "typ := &config.Types") - fmt.Fprintln(w, "_ = typ") - fmt.Fprintln(w, "v := b.Control") - fmt.Fprintln(w, "_ = v") - fmt.Fprintf(w, "switch b.Kind {\n") - ops = nil + fn = &Func{kind: "Block"} + fn.add(declf("config", "b.Func.Config")) + // TODO(mvdan): declare these only if needed + fn.add(declf("typ", "&config.Types")) + fn.add(stmtf("_ = typ")) + fn.add(declf("v", "b.Control")) + fn.add(stmtf("_ = v")) + + sw = &Switch{expr: exprf("b.Kind")} + ops = ops[:0] for op := range blockrules { ops = append(ops, op) } sort.Strings(ops) for _, op := range ops { - fmt.Fprintf(w, "case %s:\n", blockName(op, arch)) + swc := &Case{expr: exprf("%s", blockName(op, arch))} for _, rule := range blockrules[op] { - match, cond, result := rule.parse() - fmt.Fprintf(w, "// match: %s\n", match) - fmt.Fprintf(w, "// cond: %s\n", cond) - fmt.Fprintf(w, "// result: %s\n", result) - - _, _, _, aux, s := extract(match) // remove parens, then split - - loopw := new(bytes.Buffer) - - // check match of control value - pos := "" - checkOp := "" - if s[0] != "nil" { - if strings.Contains(s[0], "(") { - pos, checkOp, _ = genMatch0(loopw, arch, s[0], "v", map[string]struct{}{}, rule.loc) - } else { - fmt.Fprintf(loopw, "%s := b.Control\n", s[0]) - } - } - if aux != "" { - fmt.Fprintf(loopw, "%s := b.Aux\n", aux) - } - - if cond != "" { - fmt.Fprintf(loopw, "if !(%s) {\nbreak\n}\n", cond) - } - - // Rule matches. Generate result. - outop, _, _, aux, t := extract(result) // remove parens, then split - newsuccs := t[1:] - - // Check if newsuccs is the same set as succs. - succs := s[1:] - m := map[string]bool{} - for _, succ := range succs { - if m[succ] { - log.Fatalf("can't have a repeat successor name %s in %s", succ, rule) - } - m[succ] = true - } - for _, succ := range newsuccs { - if !m[succ] { - log.Fatalf("unknown successor %s in %s", succ, rule) - } - delete(m, succ) - } - if len(m) != 0 { - log.Fatalf("unmatched successors %v in %s", m, rule) - } - - fmt.Fprintf(loopw, "b.Kind = %s\n", blockName(outop, arch)) - if t[0] == "nil" { - fmt.Fprintf(loopw, "b.SetControl(nil)\n") - } else { - if pos == "" { - pos = "v.Pos" - } - fmt.Fprintf(loopw, "b.SetControl(%s)\n", genResult0(loopw, arch, t[0], new(int), false, false, rule.loc, pos)) - } - if aux != "" { - fmt.Fprintf(loopw, "b.Aux = %s\n", aux) - } else { - fmt.Fprintln(loopw, "b.Aux = nil") - } - - succChanged := false - for i := 0; i < len(succs); i++ { - if succs[i] != newsuccs[i] { - succChanged = true - } - } - if succChanged { - if len(succs) != 2 { - log.Fatalf("changed successors, len!=2 in %s", rule) - } - if succs[0] != newsuccs[1] || succs[1] != newsuccs[0] { - log.Fatalf("can only handle swapped successors in %s", rule) - } - fmt.Fprintln(loopw, "b.swapSuccessors()") - } - - if *genLog { - fmt.Fprintf(loopw, "logRule(\"%s\")\n", rule.loc) - } - fmt.Fprintf(loopw, "return true\n") - - if checkOp != "" { - fmt.Fprintf(w, "for v.Op == %s {\n", checkOp) - } else { - fmt.Fprintf(w, "for {\n") - } - io.Copy(w, loopw) - - fmt.Fprintf(w, "}\n") + swc.add(genBlockRewrite(rule, arch)) } + sw.add(swc) } - fmt.Fprintf(w, "}\n") - fmt.Fprintf(w, "return false\n") - fmt.Fprintf(w, "}\n") + fn.add(sw) + fn.add(stmtf("return false")) + file.add(fn) // gofmt result - b := w.Bytes() + buf := new(bytes.Buffer) + fprint(buf, file) + b := buf.Bytes() src, err := format.Source(b) if err != nil { fmt.Printf("%s\n", b) panic(err) } - // Write to file - err = ioutil.WriteFile("../rewrite"+arch.name+suff+".go", src, 0666) - if err != nil { + if err := ioutil.WriteFile("../rewrite"+arch.name+suff+".go", src, 0666); err != nil { log.Fatalf("can't write output: %v\n", err) } } -// genMatch returns the variable whose source position should be used for the -// result (or "" if no opinion), and a boolean that reports whether the match can fail. -func genMatch(w io.Writer, arch arch, match string, loc string) (pos, checkOp string, canFail bool) { - return genMatch0(w, arch, match, "v", map[string]struct{}{}, loc) +func walk(node Node, fn func(Node)) { + fn(node) + switch node := node.(type) { + case *bodyBase: + case *File: + case *Func: + case *Switch: + walk(node.expr, fn) + case *Case: + walk(node.expr, fn) + case *RuleRewrite: + case *Declare: + walk(node.value, fn) + case *CondBreak: + walk(node.expr, fn) + case ast.Node: + ast.Inspect(node, func(node ast.Node) bool { + fn(node) + return true + }) + default: + log.Fatalf("cannot walk %T", node) + } + if wb, ok := node.(interface{ body() []Statement }); ok { + for _, node := range wb.body() { + walk(node, fn) + } + } + fn(nil) } -func genMatch0(w io.Writer, arch arch, match, v string, m map[string]struct{}, loc string) (pos, checkOp string, canFail bool) { - if match[0] != '(' || match[len(match)-1] != ')' { - panic("non-compound expr in genMatch0: " + match) +func fprint(w io.Writer, n Node) { + switch n := n.(type) { + case *File: + fmt.Fprintf(w, "// Code generated from gen/%s%s.rules; DO NOT EDIT.\n", n.arch.name, n.suffix) + fmt.Fprintf(w, "// generated with: cd gen; go run *.go\n") + fmt.Fprintf(w, "\npackage ssa\n") + // TODO(mvdan): keep the needed imports only + fmt.Fprintln(w, "import \"fmt\"") + fmt.Fprintln(w, "import \"math\"") + fmt.Fprintln(w, "import \"cmd/internal/obj\"") + fmt.Fprintln(w, "import \"cmd/internal/objabi\"") + fmt.Fprintln(w, "import \"cmd/compile/internal/types\"") + fmt.Fprintln(w, "var _ = fmt.Println // in case not otherwise used") + fmt.Fprintln(w, "var _ = math.MinInt8 // in case not otherwise used") + fmt.Fprintln(w, "var _ = obj.ANOP // in case not otherwise used") + fmt.Fprintln(w, "var _ = objabi.GOROOT // in case not otherwise used") + fmt.Fprintln(w, "var _ = types.TypeMem // in case not otherwise used") + fmt.Fprintln(w) + for _, f := range n.list { + f := f.(*Func) + fmt.Fprintf(w, "func rewrite%s%s%s%s(", f.kind, n.arch.name, n.suffix, f.suffix) + fmt.Fprintf(w, "%c *%s) bool {\n", strings.ToLower(f.kind)[0], f.kind) + for _, n := range f.list { + fprint(w, n) + } + fmt.Fprintf(w, "}\n") + } + case *Switch: + fmt.Fprintf(w, "switch ") + fprint(w, n.expr) + fmt.Fprintf(w, " {\n") + for _, n := range n.list { + fprint(w, n) + } + fmt.Fprintf(w, "}\n") + case *Case: + fmt.Fprintf(w, "case ") + fprint(w, n.expr) + fmt.Fprintf(w, ":\n") + for _, n := range n.list { + fprint(w, n) + } + case *RuleRewrite: + fmt.Fprintf(w, "// match: %s\n", n.match) + fmt.Fprintf(w, "// cond: %s\n", n.cond) + fmt.Fprintf(w, "// result: %s\n", n.result) + if n.checkOp != "" { + fmt.Fprintf(w, "for v.Op == %s {\n", n.checkOp) + } else { + fmt.Fprintf(w, "for {\n") + } + for _, n := range n.list { + fprint(w, n) + } + fmt.Fprintf(w, "return true\n}\n") + case *Declare: + fmt.Fprintf(w, "%s := ", n.name) + fprint(w, n.value) + fmt.Fprintln(w) + case *CondBreak: + fmt.Fprintf(w, "if ") + fprint(w, n.expr) + fmt.Fprintf(w, " {\nbreak\n}\n") + case ast.Node: + printer.Fprint(w, emptyFset, n) + if _, ok := n.(ast.Stmt); ok { + fmt.Fprintln(w) + } + default: + log.Fatalf("cannot print %T", n) } - op, oparch, typ, auxint, aux, args := parseValue(match, arch, loc) +} + +var emptyFset = token.NewFileSet() + +// Node can be a Statement or an ast.Expr. +type Node interface{} + +// Statement can be one of our high-level statement struct types, or an +// ast.Stmt under some limited circumstances. +type Statement interface{} + +// bodyBase is shared by all of our statement psuedo-node types which can +// contain other statements. +type bodyBase struct { + list []Statement + canFail bool +} + +func (w *bodyBase) body() []Statement { return w.list } +func (w *bodyBase) add(nodes ...Statement) { + w.list = append(w.list, nodes...) + for _, node := range nodes { + if _, ok := node.(*CondBreak); ok { + w.canFail = true + } + } +} + +// declared reports if the body contains a Declare with the given name. +func (w *bodyBase) declared(name string) bool { + for _, s := range w.list { + if decl, ok := s.(*Declare); ok && decl.name == name { + return true + } + } + return false +} + +// These types define some high-level statement struct types, which can be used +// as a Statement. This allows us to keep some node structs simpler, and have +// higher-level nodes such as an entire rule rewrite. +// +// Note that ast.Expr is always used as-is; we don't declare our own expression +// nodes. +type ( + File struct { + bodyBase // []*Func + arch arch + suffix string + } + Func struct { + bodyBase + kind string // "Value" or "Block" + suffix string + } + Switch struct { + bodyBase // []*Case + expr ast.Expr + } + Case struct { + bodyBase + expr ast.Expr + } + RuleRewrite struct { + bodyBase + match, cond, result string // top comments + checkOp string + + alloc int // for unique var names + loc string // file name & line number of the original rule + } + Declare struct { + name string + value ast.Expr + } + CondBreak struct { + expr ast.Expr + } +) + +// exprf parses a Go expression generated from fmt.Sprintf, panicking if an +// error occurs. +func exprf(format string, a ...interface{}) ast.Expr { + src := fmt.Sprintf(format, a...) + expr, err := parser.ParseExpr(src) + if err != nil { + log.Fatalf("expr parse error on %q: %v", src, err) + } + return expr +} + +// stmtf parses a Go statement generated from fmt.Sprintf. This function is only +// meant for simple statements that don't have a custom Statement node declared +// in this package, such as ast.ReturnStmt or ast.ExprStmt. +func stmtf(format string, a ...interface{}) Statement { + src := fmt.Sprintf(format, a...) + fsrc := "package p\nfunc _() {\n" + src + "\n}\n" + file, err := parser.ParseFile(token.NewFileSet(), "", fsrc, 0) + if err != nil { + log.Fatalf("stmt parse error on %q: %v", src, err) + } + return file.Decls[0].(*ast.FuncDecl).Body.List[0] +} + +// declf constructs a simple "name := value" declaration, using exprf for its +// value. +func declf(name, format string, a ...interface{}) *Declare { + return &Declare{name, exprf(format, a...)} +} + +// breakf constructs a simple "if cond { break }" statement, using exprf for its +// condition. +func breakf(format string, a ...interface{}) *CondBreak { + return &CondBreak{exprf(format, a...)} +} + +func genBlockRewrite(rule Rule, arch arch) *RuleRewrite { + rr := &RuleRewrite{loc: rule.loc} + rr.match, rr.cond, rr.result = rule.parse() + _, _, _, aux, s := extract(rr.match) // remove parens, then split + + // check match of control value + pos := "" + if s[0] != "nil" { + if strings.Contains(s[0], "(") { + pos, rr.checkOp = genMatch0(rr, arch, s[0], "v") + } else { + rr.add(declf(s[0], "b.Control")) + } + } + if aux != "" { + rr.add(declf(aux, "b.Aux")) + } + if rr.cond != "" { + rr.add(breakf("!(%s)", rr.cond)) + } + + // Rule matches. Generate result. + outop, _, _, aux, t := extract(rr.result) // remove parens, then split + newsuccs := t[1:] + + // Check if newsuccs is the same set as succs. + succs := s[1:] + m := map[string]bool{} + for _, succ := range succs { + if m[succ] { + log.Fatalf("can't have a repeat successor name %s in %s", succ, rule) + } + m[succ] = true + } + for _, succ := range newsuccs { + if !m[succ] { + log.Fatalf("unknown successor %s in %s", succ, rule) + } + delete(m, succ) + } + if len(m) != 0 { + log.Fatalf("unmatched successors %v in %s", m, rule) + } + + rr.add(stmtf("b.Kind = %s", blockName(outop, arch))) + if t[0] == "nil" { + rr.add(stmtf("b.SetControl(nil)")) + } else { + if pos == "" { + pos = "v.Pos" + } + v := genResult0(rr, arch, t[0], false, false, pos) + rr.add(stmtf("b.SetControl(%s)", v)) + } + if aux != "" { + rr.add(stmtf("b.Aux = %s", aux)) + } else { + rr.add(stmtf("b.Aux = nil")) + } + + succChanged := false + for i := 0; i < len(succs); i++ { + if succs[i] != newsuccs[i] { + succChanged = true + } + } + if succChanged { + if len(succs) != 2 { + log.Fatalf("changed successors, len!=2 in %s", rule) + } + if succs[0] != newsuccs[1] || succs[1] != newsuccs[0] { + log.Fatalf("can only handle swapped successors in %s", rule) + } + rr.add(stmtf("b.swapSuccessors()")) + } + + if *genLog { + rr.add(stmtf("logRule(%q)", rule.loc)) + } + return rr +} + +// genMatch returns the variable whose source position should be used for the +// result (or "" if no opinion), and a boolean that reports whether the match can fail. +func genMatch(rr *RuleRewrite, arch arch, match string) (pos, checkOp string) { + return genMatch0(rr, arch, match, "v") +} + +func genMatch0(rr *RuleRewrite, arch arch, match, v string) (pos, checkOp string) { + if match[0] != '(' || match[len(match)-1] != ')' { + log.Fatalf("non-compound expr in genMatch0: %q", match) + } + op, oparch, typ, auxint, aux, args := parseValue(match, arch, rr.loc) checkOp = fmt.Sprintf("Op%s%s", oparch, op.name) @@ -421,68 +616,40 @@ func genMatch0(w io.Writer, arch arch, match, v string, m map[string]struct{}, l } if typ != "" { - if !isVariable(typ) { - // code. We must match the results of this code. - fmt.Fprintf(w, "if %s.Type != %s {\nbreak\n}\n", v, typ) - canFail = true + if !token.IsIdentifier(typ) || rr.declared(typ) { + // code or variable + rr.add(breakf("%s.Type != %s", v, typ)) } else { - // variable - if _, ok := m[typ]; ok { - // must match previous variable - fmt.Fprintf(w, "if %s.Type != %s {\nbreak\n}\n", v, typ) - canFail = true - } else { - m[typ] = struct{}{} - fmt.Fprintf(w, "%s := %s.Type\n", typ, v) - } + rr.add(declf(typ, "%s.Type", v)) } } - if auxint != "" { - if !isVariable(auxint) { - // code - fmt.Fprintf(w, "if %s.AuxInt != %s {\nbreak\n}\n", v, auxint) - canFail = true + if !token.IsIdentifier(auxint) || rr.declared(auxint) { + // code or variable + rr.add(breakf("%s.AuxInt != %s", v, auxint)) } else { - // variable - if _, ok := m[auxint]; ok { - fmt.Fprintf(w, "if %s.AuxInt != %s {\nbreak\n}\n", v, auxint) - canFail = true - } else { - m[auxint] = struct{}{} - fmt.Fprintf(w, "%s := %s.AuxInt\n", auxint, v) - } + rr.add(declf(auxint, "%s.AuxInt", v)) } } - if aux != "" { - if !isVariable(aux) { - // code - fmt.Fprintf(w, "if %s.Aux != %s {\nbreak\n}\n", v, aux) - canFail = true + if !token.IsIdentifier(aux) || rr.declared(aux) { + // code or variable + rr.add(breakf("%s.Aux != %s", v, aux)) } else { - // variable - if _, ok := m[aux]; ok { - fmt.Fprintf(w, "if %s.Aux != %s {\nbreak\n}\n", v, aux) - canFail = true - } else { - m[aux] = struct{}{} - fmt.Fprintf(w, "%s := %s.Aux\n", aux, v) - } + rr.add(declf(aux, "%s.Aux", v)) } } // Access last argument first to minimize bounds checks. if n := len(args); n > 1 { a := args[n-1] - if _, set := m[a]; !set && a != "_" && isVariable(a) { - m[a] = struct{}{} - fmt.Fprintf(w, "%s := %s.Args[%d]\n", a, v, n-1) + if a != "_" && !rr.declared(a) && token.IsIdentifier(a) { + rr.add(declf(a, "%s.Args[%d]", v, n-1)) // delete the last argument so it is not reprocessed args = args[:n-1] } else { - fmt.Fprintf(w, "_ = %s.Args[%d]\n", v, n-1) + rr.add(stmtf("_ = %s.Args[%d]", v, n-1)) } } for i, arg := range args { @@ -491,41 +658,36 @@ func genMatch0(w io.Writer, arch arch, match, v string, m map[string]struct{}, l } if !strings.Contains(arg, "(") { // leaf variable - if _, ok := m[arg]; ok { + if rr.declared(arg) { // variable already has a definition. Check whether // the old definition and the new definition match. // For example, (add x x). Equality is just pointer equality // on Values (so cse is important to do before lowering). - fmt.Fprintf(w, "if %s != %s.Args[%d] {\nbreak\n}\n", arg, v, i) - canFail = true + rr.add(breakf("%s != %s.Args[%d]", arg, v, i)) } else { - // remember that this variable references the given value - m[arg] = struct{}{} - fmt.Fprintf(w, "%s := %s.Args[%d]\n", arg, v, i) + rr.add(declf(arg, "%s.Args[%d]", v, i)) } continue } // compound sexpr - var argname string + argname := fmt.Sprintf("%s_%d", v, i) colon := strings.Index(arg, ":") openparen := strings.Index(arg, "(") if colon >= 0 && openparen >= 0 && colon < openparen { // rule-specified name argname = arg[:colon] arg = arg[colon+1:] - } else { - // autogenerated name - argname = fmt.Sprintf("%s_%d", v, i) } if argname == "b" { log.Fatalf("don't name args 'b', it is ambiguous with blocks") } - fmt.Fprintf(w, "%s := %s.Args[%d]\n", argname, v, i) - w2 := new(bytes.Buffer) - argPos, argCheckOp, _ := genMatch0(w2, arch, arg, argname, m, loc) - fmt.Fprintf(w, "if %s.Op != %s {\nbreak\n}\n", argname, argCheckOp) - io.Copy(w, w2) + rr.add(declf(argname, "%s.Args[%d]", v, i)) + bexpr := exprf("%s.Op != addLater", argname) + rr.add(&CondBreak{expr: bexpr}) + rr.canFail = true // since we're not using breakf + argPos, argCheckOp := genMatch0(rr, arch, arg, argname) + bexpr.(*ast.BinaryExpr).Y.(*ast.Ident).Name = argCheckOp if argPos != "" { // Keep the argument in preference to the parent, as the @@ -535,28 +697,26 @@ func genMatch0(w io.Writer, arch arch, match, v string, m map[string]struct{}, l // in the program flow. pos = argPos } - canFail = true } if op.argLength == -1 { - fmt.Fprintf(w, "if len(%s.Args) != %d {\nbreak\n}\n", v, len(args)) - canFail = true + rr.add(breakf("len(%s.Args) != %d", v, len(args))) } - return pos, checkOp, canFail + return pos, checkOp } -func genResult(w io.Writer, arch arch, result string, loc string, pos string) { - move := false - if result[0] == '@' { +func genResult(rr *RuleRewrite, arch arch, result, pos string) { + move := result[0] == '@' + if move { // parse @block directive s := strings.SplitN(result[1:], " ", 2) - fmt.Fprintf(w, "b = %s\n", s[0]) + rr.add(stmtf("b = %s", s[0])) result = s[1] - move = true } - genResult0(w, arch, result, new(int), true, move, loc, pos) + genResult0(rr, arch, result, true, move, pos) } -func genResult0(w io.Writer, arch arch, result string, alloc *int, top, move bool, loc string, pos string) string { + +func genResult0(rr *RuleRewrite, arch arch, result string, top, move bool, pos string) string { // TODO: when generating a constant result, use f.constVal to avoid // introducing copies just to clean them up again. if result[0] != '(' { @@ -565,14 +725,14 @@ func genResult0(w io.Writer, arch arch, result string, alloc *int, top, move boo // It in not safe in general to move a variable between blocks // (and particularly not a phi node). // Introduce a copy. - fmt.Fprintf(w, "v.reset(OpCopy)\n") - fmt.Fprintf(w, "v.Type = %s.Type\n", result) - fmt.Fprintf(w, "v.AddArg(%s)\n", result) + rr.add(stmtf("v.reset(OpCopy)")) + rr.add(stmtf("v.Type = %s.Type", result)) + rr.add(stmtf("v.AddArg(%s)", result)) } return result } - op, oparch, typ, auxint, aux, args := parseValue(result, arch, loc) + op, oparch, typ, auxint, aux, args := parseValue(result, arch, rr.loc) // Find the type of the variable. typeOverride := typ != "" @@ -580,36 +740,35 @@ func genResult0(w io.Writer, arch arch, result string, alloc *int, top, move boo typ = typeName(op.typ) } - var v string + v := "v" if top && !move { - v = "v" - fmt.Fprintf(w, "v.reset(Op%s%s)\n", oparch, op.name) + rr.add(stmtf("v.reset(Op%s%s)", oparch, op.name)) if typeOverride { - fmt.Fprintf(w, "v.Type = %s\n", typ) + rr.add(stmtf("v.Type = %s", typ)) } } else { if typ == "" { - log.Fatalf("sub-expression %s (op=Op%s%s) at %s must have a type", result, oparch, op.name, loc) + log.Fatalf("sub-expression %s (op=Op%s%s) at %s must have a type", result, oparch, op.name, rr.loc) } - v = fmt.Sprintf("v%d", *alloc) - *alloc++ - fmt.Fprintf(w, "%s := b.NewValue0(%s, Op%s%s, %s)\n", v, pos, oparch, op.name, typ) + v = fmt.Sprintf("v%d", rr.alloc) + rr.alloc++ + rr.add(declf(v, "b.NewValue0(%s, Op%s%s, %s)", pos, oparch, op.name, typ)) if move && top { // Rewrite original into a copy - fmt.Fprintf(w, "v.reset(OpCopy)\n") - fmt.Fprintf(w, "v.AddArg(%s)\n", v) + rr.add(stmtf("v.reset(OpCopy)")) + rr.add(stmtf("v.AddArg(%s)", v)) } } if auxint != "" { - fmt.Fprintf(w, "%s.AuxInt = %s\n", v, auxint) + rr.add(stmtf("%s.AuxInt = %s", v, auxint)) } if aux != "" { - fmt.Fprintf(w, "%s.Aux = %s\n", v, aux) + rr.add(stmtf("%s.Aux = %s", v, aux)) } for _, arg := range args { - x := genResult0(w, arch, arg, alloc, false, move, loc, pos) - fmt.Fprintf(w, "%s.AddArg(%s)\n", v, x) + x := genResult0(rr, arch, arg, false, move, pos) + rr.add(stmtf("%s.AddArg(%s)", v, x)) } return v @@ -652,7 +811,7 @@ outer: } } if d != 0 { - panic("imbalanced expression: " + s) + log.Fatalf("imbalanced expression: %q", s) } if nonsp { r = append(r, strings.TrimSpace(s)) @@ -677,7 +836,7 @@ func isBlock(name string, arch arch) bool { return false } -func extract(val string) (op string, typ string, auxint string, aux string, args []string) { +func extract(val string) (op, typ, auxint, aux string, args []string) { val = val[1 : len(val)-1] // remove () // Split val up into regions. @@ -705,7 +864,7 @@ func extract(val string) (op string, typ string, auxint string, aux string, args // The value can be from the match or the result side. // It returns the op and unparsed strings for typ, auxint, and aux restrictions and for all args. // oparch is the architecture that op is located in, or "" for generic. -func parseValue(val string, arch arch, loc string) (op opData, oparch string, typ string, auxint string, aux string, args []string) { +func parseValue(val string, arch arch, loc string) (op opData, oparch, typ, auxint, aux string, args []string) { // Resolve the op. var s string s, typ, auxint, aux, args = extract(val) @@ -723,9 +882,8 @@ func parseValue(val string, arch arch, loc string) (op opData, oparch string, ty if x.argLength != -1 && int(x.argLength) != len(args) { if strict { return false - } else { - log.Printf("%s: op %s (%s) should have %d args, has %d", loc, s, archname, x.argLength, len(args)) } + log.Printf("%s: op %s (%s) should have %d args, has %d", loc, s, archname, x.argLength, len(args)) } return true } @@ -736,16 +894,14 @@ func parseValue(val string, arch arch, loc string) (op opData, oparch string, ty break } } - if arch.name != "generic" { - for _, x := range arch.ops { - if match(x, true, arch.name) { - if op.name != "" { - log.Fatalf("%s: matches for op %s found in both generic and %s", loc, op.name, arch.name) - } - op = x - oparch = arch.name - break + for _, x := range arch.ops { + if arch.name != "generic" && match(x, true, arch.name) { + if op.name != "" { + log.Fatalf("%s: matches for op %s found in both generic and %s", loc, op.name, arch.name) } + op = x + oparch = arch.name + break } } @@ -777,7 +933,6 @@ func parseValue(val string, arch arch, loc string) (op opData, oparch string, ty log.Fatalf("%s: op %s %s can't have aux", loc, op.name, op.aux) } } - return } @@ -795,7 +950,7 @@ func typeName(typ string) string { if typ[0] == '(' { ts := strings.Split(typ[1:len(typ)-1], ",") if len(ts) != 2 { - panic("Tuple expect 2 arguments") + log.Fatalf("Tuple expect 2 arguments") } return "types.NewTuple(" + typeName(ts[0]) + ", " + typeName(ts[1]) + ")" } @@ -809,29 +964,19 @@ func typeName(typ string) string { // unbalanced reports whether there aren't the same number of ( and ) in the string. func unbalanced(s string) bool { - var left, right int + balance := 0 for _, c := range s { if c == '(' { - left++ - } - if c == ')' { - right++ + balance++ + } else if c == ')' { + balance-- } } - return left != right + return balance != 0 } -// isVariable reports whether s is a single Go alphanumeric identifier. -func isVariable(s string) bool { - b, err := regexp.MatchString("^[A-Za-z_][A-Za-z_0-9]*$", s) - if err != nil { - panic("bad variable regexp") - } - return b -} - -// opRegexp is a regular expression to find the opcode portion of s-expressions. -var opRegexp = regexp.MustCompile(`[(](\w+[|])+\w+[)]`) +// findAllOpcode is a function to find the opcode portion of s-expressions. +var findAllOpcode = regexp.MustCompile(`[(](\w+[|])+\w+[)]`).FindAllStringIndex // excludeFromExpansion reports whether the substring s[idx[0]:idx[1]] in a rule // should be disregarded as a candidate for | expansion. @@ -859,7 +1004,7 @@ func expandOr(r string) []string { // Count width of |-forms. They must match. n := 1 - for _, idx := range opRegexp.FindAllStringIndex(r, -1) { + for _, idx := range findAllOpcode(r, -1) { if excludeFromExpansion(r, idx) { continue } @@ -882,7 +1027,7 @@ func expandOr(r string) []string { for i := 0; i < n; i++ { buf := new(strings.Builder) x := 0 - for _, idx := range opRegexp.FindAllStringIndex(r, -1) { + for _, idx := range findAllOpcode(r, -1) { if excludeFromExpansion(r, idx) { continue } @@ -913,7 +1058,7 @@ func commute(r string, arch arch) []string { if len(a) == 1 && normalizeWhitespace(r) != normalizeWhitespace(a[0]) { fmt.Println(normalizeWhitespace(r)) fmt.Println(normalizeWhitespace(a[0])) - panic("commute() is not the identity for noncommuting rule") + log.Fatalf("commute() is not the identity for noncommuting rule") } if false && len(a) > 1 { fmt.Println(r) @@ -925,18 +1070,17 @@ func commute(r string, arch arch) []string { } func commute1(m string, cnt map[string]int, arch arch) []string { - if m[0] == '<' || m[0] == '[' || m[0] == '{' || isVariable(m) { + if m[0] == '<' || m[0] == '[' || m[0] == '{' || token.IsIdentifier(m) { return []string{m} } // Split up input. var prefix string - colon := strings.Index(m, ":") - if colon >= 0 && isVariable(m[:colon]) { - prefix = m[:colon+1] - m = m[colon+1:] + if i := strings.Index(m, ":"); i >= 0 && token.IsIdentifier(m[:i]) { + prefix = m[:i+1] + m = m[i+1:] } if m[0] != '(' || m[len(m)-1] != ')' { - panic("non-compound expr in commute1: " + m) + log.Fatalf("non-compound expr in commute1: %q", m) } s := split(m[1 : len(m)-1]) op := s[0] @@ -978,7 +1122,7 @@ func commute1(m string, cnt map[string]int, arch arch) []string { } } if idx1 == 0 { - panic("couldn't find first two args of commutative op " + s[0]) + log.Fatalf("couldn't find first two args of commutative op %q", s[0]) } if cnt[s[idx0]] == 1 && cnt[s[idx1]] == 1 || s[idx0] == s[idx1] && cnt[s[idx0]] == 2 { // When we have (Add x y) with no other uses of x and y in the matching rule, @@ -1016,22 +1160,22 @@ func varCount(m string) map[string]int { varCount1(m, cnt) return cnt } + func varCount1(m string, cnt map[string]int) { if m[0] == '<' || m[0] == '[' || m[0] == '{' { return } - if isVariable(m) { + if token.IsIdentifier(m) { cnt[m]++ return } // Split up input. - colon := strings.Index(m, ":") - if colon >= 0 && isVariable(m[:colon]) { - cnt[m[:colon]]++ - m = m[colon+1:] + if i := strings.Index(m, ":"); i >= 0 && token.IsIdentifier(m[:i]) { + cnt[m[:i]]++ + m = m[i+1:] } if m[0] != '(' || m[len(m)-1] != ')' { - panic("non-compound expr in commute1: " + m) + log.Fatalf("non-compound expr in commute1: %q", m) } s := split(m[1 : len(m)-1]) for _, arg := range s[1:] { From 95c3c43072a3d613429ff5eb80b5fcf212dd9998 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Thu, 11 Jul 2019 21:27:19 +0900 Subject: [PATCH 238/255] encoding/json: fix the broken "overwriting of data" tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Because TestUnmarshal actually allocates a new value to decode into using ptr's pointer type, any existing data is thrown away. This was harmless in alomst all of the test cases, minus the "overwriting of data" ones added in 2015 in CL 12209. I spotted that nothing covered decoding a JSON array with few elements into a slice which already had many elements. I initially assumed that the code was buggy or that some code could be removed, when in fact there simply wasn't any code covering the edge case. Move those two tests to TestPrefilled, which already served a very similar purpose. Remove the map case, as TestPrefilled already has plenty of prefilled map cases. Moreover, we no longer reset an entire map when decoding, as per the godoc: To unmarshal a JSON object into a map, Unmarshal first establishes a map to use. If the map is nil, Unmarshal allocates a new map. Otherwise Unmarshal reuses the existing map, keeping existing entries. Finally, to ensure that ptr is used correctly in the future, make TestUnmarshal error if it's anything other than a pointer to a zero value. That is, the only correct use should be new(type). Don't rename the ptr field, as that would be extremely noisy and cause unwanted merge conflicts. Change-Id: I41e3ecfeae42d877ac5443a6bd622ac3d6c8120c Reviewed-on: https://go-review.googlesource.com/c/go/+/185738 Run-TryBot: Daniel Martí TryBot-Result: Gobot Gobot Reviewed-by: Emmanuel Odeke --- src/encoding/json/decode_test.go | 109 ++++++++++++++++++------------- 1 file changed, 65 insertions(+), 44 deletions(-) diff --git a/src/encoding/json/decode_test.go b/src/encoding/json/decode_test.go index 3f25893b41..d66be44d4e 100644 --- a/src/encoding/json/decode_test.go +++ b/src/encoding/json/decode_test.go @@ -145,23 +145,15 @@ func (u8 *u8marshal) UnmarshalText(b []byte) error { var _ encoding.TextUnmarshaler = (*u8marshal)(nil) var ( - um0, um1 unmarshaler // target2 of unmarshaling - ump = &um1 umtrue = unmarshaler{true} umslice = []unmarshaler{{true}} - umslicep = new([]unmarshaler) umstruct = ustruct{unmarshaler{true}} - um0T, um1T unmarshalerText // target2 of unmarshaling - umpType = &um1T - umtrueXY = unmarshalerText{"x", "y"} - umsliceXY = []unmarshalerText{{"x", "y"}} - umslicepType = new([]unmarshalerText) - umstructType = new(ustructText) - umstructXY = ustructText{unmarshalerText{"x", "y"}} + umtrueXY = unmarshalerText{"x", "y"} + umsliceXY = []unmarshalerText{{"x", "y"}} + umstructXY = ustructText{unmarshalerText{"x", "y"}} - ummapType = map[unmarshalerText]bool{} - ummapXY = map[unmarshalerText]bool{{"x", "y"}: true} + ummapXY = map[unmarshalerText]bool{{"x", "y"}: true} ) // Test data structures for anonymous fields. @@ -279,9 +271,6 @@ type unexportedWithMethods struct{} func (unexportedWithMethods) F() {} -func sliceAddr(x []int) *[]int { return &x } -func mapAddr(x map[string]int) *map[string]int { return &x } - type byteWithMarshalJSON byte func (b byteWithMarshalJSON) MarshalJSON() ([]byte, error) { @@ -400,7 +389,7 @@ type mapStringToStringData struct { type unmarshalTest struct { in string - ptr interface{} + ptr interface{} // new(type) out interface{} err error useNumber bool @@ -493,18 +482,18 @@ var unmarshalTests = []unmarshalTest{ {in: pallValueCompact, ptr: new(*All), out: &pallValue}, // unmarshal interface test - {in: `{"T":false}`, ptr: &um0, out: umtrue}, // use "false" so test will fail if custom unmarshaler is not called - {in: `{"T":false}`, ptr: &ump, out: &umtrue}, - {in: `[{"T":false}]`, ptr: &umslice, out: umslice}, - {in: `[{"T":false}]`, ptr: &umslicep, out: &umslice}, - {in: `{"M":{"T":"x:y"}}`, ptr: &umstruct, out: umstruct}, + {in: `{"T":false}`, ptr: new(unmarshaler), out: umtrue}, // use "false" so test will fail if custom unmarshaler is not called + {in: `{"T":false}`, ptr: new(*unmarshaler), out: &umtrue}, + {in: `[{"T":false}]`, ptr: new([]unmarshaler), out: umslice}, + {in: `[{"T":false}]`, ptr: new(*[]unmarshaler), out: &umslice}, + {in: `{"M":{"T":"x:y"}}`, ptr: new(ustruct), out: umstruct}, // UnmarshalText interface test - {in: `"x:y"`, ptr: &um0T, out: umtrueXY}, - {in: `"x:y"`, ptr: &umpType, out: &umtrueXY}, - {in: `["x:y"]`, ptr: &umsliceXY, out: umsliceXY}, - {in: `["x:y"]`, ptr: &umslicepType, out: &umsliceXY}, - {in: `{"M":"x:y"}`, ptr: umstructType, out: umstructXY}, + {in: `"x:y"`, ptr: new(unmarshalerText), out: umtrueXY}, + {in: `"x:y"`, ptr: new(*unmarshalerText), out: &umtrueXY}, + {in: `["x:y"]`, ptr: new([]unmarshalerText), out: umsliceXY}, + {in: `["x:y"]`, ptr: new(*[]unmarshalerText), out: &umsliceXY}, + {in: `{"M":"x:y"}`, ptr: new(ustructText), out: umstructXY}, // integer-keyed map test { @@ -579,15 +568,9 @@ var unmarshalTests = []unmarshalTest{ }, // Map keys can be encoding.TextUnmarshalers. - {in: `{"x:y":true}`, ptr: &ummapType, out: ummapXY}, + {in: `{"x:y":true}`, ptr: new(map[unmarshalerText]bool), out: ummapXY}, // If multiple values for the same key exists, only the most recent value is used. - {in: `{"x:y":false,"x:y":true}`, ptr: &ummapType, out: ummapXY}, - - // Overwriting of data. - // This is different from package xml, but it's what we've always done. - // Now documented and tested. - {in: `[2]`, ptr: sliceAddr([]int{1}), out: []int{2}}, - {in: `{"key": 2}`, ptr: mapAddr(map[string]int{"old": 0, "key": 1}), out: map[string]int{"key": 2}}, + {in: `{"x:y":false,"x:y":true}`, ptr: new(map[unmarshalerText]bool), out: ummapXY}, { in: `{ @@ -713,19 +696,19 @@ var unmarshalTests = []unmarshalTest{ // Used to be issue 8305, but time.Time implements encoding.TextUnmarshaler so this works now. { in: `{"2009-11-10T23:00:00Z": "hello world"}`, - ptr: &map[time.Time]string{}, + ptr: new(map[time.Time]string), out: map[time.Time]string{time.Date(2009, 11, 10, 23, 0, 0, 0, time.UTC): "hello world"}, }, // issue 8305 { in: `{"2009-11-10T23:00:00Z": "hello world"}`, - ptr: &map[Point]string{}, + ptr: new(map[Point]string), err: &UnmarshalTypeError{Value: "object", Type: reflect.TypeOf(map[Point]string{}), Offset: 1}, }, { in: `{"asdf": "hello world"}`, - ptr: &map[unmarshaler]string{}, + ptr: new(map[unmarshaler]string), err: &UnmarshalTypeError{Value: "object", Type: reflect.TypeOf(map[unmarshaler]string{}), Offset: 1}, }, @@ -1077,8 +1060,27 @@ func TestUnmarshal(t *testing.T) { continue } + typ := reflect.TypeOf(tt.ptr) + if typ.Kind() != reflect.Ptr { + t.Errorf("#%d: unmarshalTest.ptr %T is not a pointer type", i, tt.ptr) + continue + } + typ = typ.Elem() + // v = new(right-type) - v := reflect.New(reflect.TypeOf(tt.ptr).Elem()) + v := reflect.New(typ) + + if !reflect.DeepEqual(tt.ptr, v.Interface()) { + // There's no reason for ptr to point to non-zero data, + // as we decode into new(right-type), so the data is + // discarded. + // This can easily mean tests that silently don't test + // what they should. To test decoding into existing + // data, see TestPrefilled. + t.Errorf("#%d: unmarshalTest.ptr %#v is not a pointer to a zero value", i, tt.ptr) + continue + } + dec := NewDecoder(bytes.NewReader(in)) if tt.useNumber { dec.UseNumber() @@ -2086,11 +2088,10 @@ func TestSkipArrayObjects(t *testing.T) { } } -// Test semantics of pre-filled struct fields and pre-filled map fields. -// Issue 4900. +// Test semantics of pre-filled data, such as struct fields, map elements, +// slices, and arrays. +// Issues 4900 and 8837, among others. func TestPrefilled(t *testing.T) { - ptrToMap := func(m map[string]interface{}) *map[string]interface{} { return &m } - // Values here change, cannot reuse table across runs. var prefillTests = []struct { in string @@ -2104,8 +2105,28 @@ func TestPrefilled(t *testing.T) { }, { in: `{"X": 1, "Y": 2}`, - ptr: ptrToMap(map[string]interface{}{"X": float32(3), "Y": int16(4), "Z": 1.5}), - out: ptrToMap(map[string]interface{}{"X": float64(1), "Y": float64(2), "Z": 1.5}), + ptr: &map[string]interface{}{"X": float32(3), "Y": int16(4), "Z": 1.5}, + out: &map[string]interface{}{"X": float64(1), "Y": float64(2), "Z": 1.5}, + }, + { + in: `[2]`, + ptr: &[]int{1}, + out: &[]int{2}, + }, + { + in: `[2, 3]`, + ptr: &[]int{1}, + out: &[]int{2, 3}, + }, + { + in: `[2, 3]`, + ptr: &[...]int{1}, + out: &[...]int{2}, + }, + { + in: `[3]`, + ptr: &[...]int{1, 2}, + out: &[...]int{3, 0}, }, } From fc4663d56f2ac550c0deca6ed0261d894be49465 Mon Sep 17 00:00:00 2001 From: Jonathan Amsterdam Date: Thu, 22 Aug 2019 12:29:29 -0400 Subject: [PATCH 239/255] errors: document Is and As methods Add brief descriptions of why one might implement an Is or As method. Fixes #33364. Change-Id: I81a091bf564c654ddb9ef3997e780451a01efb7a Reviewed-on: https://go-review.googlesource.com/c/go/+/191338 Reviewed-by: Emmanuel Odeke Reviewed-by: Andrew Bonventre Run-TryBot: Jonathan Amsterdam TryBot-Result: Gobot Gobot --- src/errors/wrap.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/errors/wrap.go b/src/errors/wrap.go index 240da37c29..65e6c44853 100644 --- a/src/errors/wrap.go +++ b/src/errors/wrap.go @@ -28,6 +28,14 @@ func Unwrap(err error) error { // // An error is considered to match a target if it is equal to that target or if // it implements a method Is(error) bool such that Is(target) returns true. +// +// An error type might provide an Is method so it can be treated as equivalent +// to an existing error. For example, if MyError defines +// +// func (m MyError) Is(target error) bool { return target == os.ErrExist } +// +// then Is(MyError{}, os.ErrExist) returns true. See syscall.Errno.Is for +// an example in the standard library. func Is(err, target error) bool { if target == nil { return err == target @@ -61,7 +69,10 @@ func Is(err, target error) bool { // As(target) returns true. In the latter case, the As method is responsible for // setting target. // -// As will panic if target is not a non-nil pointer to either a type that implements +// An error type might provide an As method so it can be treated as if it were a +// a different error type. +// +// As panics if target is not a non-nil pointer to either a type that implements // error, or to any interface type. As returns false if err is nil. func As(err error, target interface{}) bool { if target == nil { From 997086b7e6db6c74926500aa15fd3c02bc4939b8 Mon Sep 17 00:00:00 2001 From: Dong-hee Na Date: Mon, 6 May 2019 18:53:46 +0900 Subject: [PATCH 240/255] text/template: replace bytes.Buffer with strings.Builder MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit After Go.1.10+ strings.Builder is known as more efficient in concatenating and building strings than bytes.Buffer. In this CL, there is a minor logic fix for getting advantage of strings.builder. name old time/op new time/op delta DefinedTemplate-8 543ns ± 3% 512ns ± 2% -5.73% (p=0.000 n=8+8) name old alloc/op new alloc/op delta DefinedTemplate-8 192B ± 0% 160B ± 0% -16.67% (p=0.000 n=8+8) name old allocs/op new allocs/op delta DefinedTemplate-8 5.00 ± 0% 5.00 ± 0% ~ (all equal) Change-Id: Icda0054d146e6c5e32ed8a4d13221bb6850d31b4 Reviewed-on: https://go-review.googlesource.com/c/go/+/175261 Run-TryBot: Emmanuel Odeke TryBot-Result: Gobot Gobot Reviewed-by: Emmanuel Odeke Reviewed-by: Brad Fitzpatrick --- src/text/template/exec.go | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/text/template/exec.go b/src/text/template/exec.go index 4db63bfa09..97c9d1f574 100644 --- a/src/text/template/exec.go +++ b/src/text/template/exec.go @@ -5,7 +5,6 @@ package template import ( - "bytes" "fmt" "internal/fmtsort" "io" @@ -230,21 +229,19 @@ func (t *Template) DefinedTemplates() string { if t.common == nil { return "" } - var b bytes.Buffer + var b strings.Builder for name, tmpl := range t.tmpl { if tmpl.Tree == nil || tmpl.Root == nil { continue } - if b.Len() > 0 { + if b.Len() == 0 { + b.WriteString("; defined templates are: ") + } else { b.WriteString(", ") } fmt.Fprintf(&b, "%q", name) } - var s string - if b.Len() > 0 { - s = "; defined templates are: " + b.String() - } - return s + return b.String() } // Walk functions step through the major pieces of the template structure, From b963149d4eddaf92d9e2a9d3bf5474c2d0a3b55d Mon Sep 17 00:00:00 2001 From: Alex Brainman Date: Mon, 22 Jul 2019 19:09:33 +1000 Subject: [PATCH 241/255] net: do not call Windows TransmitFile for large files TransmitFile does not allow for number of bytes that can be transmitted to be larger than 2147483646. See https://docs.microsoft.com/en-us/windows/win32/api/mswsock/nf-mswsock-transmitfile for details. So adjust sendFile accordingly. No test added, because this would require creating large file (more than 2GB file). Fixes #33193. Change-Id: I82e0cb104d112264e4ea363bb20b6d02ac30b38e Reviewed-on: https://go-review.googlesource.com/c/go/+/187037 Run-TryBot: Alex Brainman TryBot-Result: Gobot Gobot Reviewed-by: Emmanuel Odeke --- src/net/sendfile_windows.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/net/sendfile_windows.go b/src/net/sendfile_windows.go index bccd8b149f..a223e2562e 100644 --- a/src/net/sendfile_windows.go +++ b/src/net/sendfile_windows.go @@ -29,6 +29,13 @@ func sendFile(fd *netFD, r io.Reader) (written int64, err error, handled bool) { if n <= 0 { return 0, nil, true } + // TransmitFile can be invoked in one call with at most + // 2,147,483,646 bytes: the maximum value for a 32-bit integer minus 1. + // See https://docs.microsoft.com/en-us/windows/win32/api/mswsock/nf-mswsock-transmitfile + const maxSendBytes = 0x7fffffff - 1 + if n > maxSendBytes { + return 0, nil, false + } } f, ok := r.(*os.File) if !ok { From 32b9e568d8c28e63a8f1d93e69b57794350de159 Mon Sep 17 00:00:00 2001 From: Stefan Baebler Date: Wed, 7 Aug 2019 14:16:59 +0000 Subject: [PATCH 242/255] net/url: fail TestParseErrors test when getting an unwanted error The TestParseErrors test function was not strict with unwanted errors received from url.Parse(). It was not failing in such cases, now it does. Change-Id: I18a26a68c1136f5c762989a76e04b47e33dd35f1 GitHub-Last-Rev: c33f9842f7908f27012859e25caa79388cc2785a GitHub-Pull-Request: golang/go#32954 Reviewed-on: https://go-review.googlesource.com/c/go/+/185080 Reviewed-by: Emmanuel Odeke Run-TryBot: Emmanuel Odeke TryBot-Result: Gobot Gobot --- src/net/url/url_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/net/url/url_test.go b/src/net/url/url_test.go index e83c86c424..b86956906d 100644 --- a/src/net/url/url_test.go +++ b/src/net/url/url_test.go @@ -1456,7 +1456,7 @@ func TestParseErrors(t *testing.T) { continue } if err != nil { - t.Logf("Parse(%q) = %v; want no error", tt.in, err) + t.Errorf("Parse(%q) = %v; want no error", tt.in, err) } } } From 4a4f752c3812d18ffcaa06624de1a29d4e9ab056 Mon Sep 17 00:00:00 2001 From: tnclong Date: Tue, 18 Jun 2019 22:07:30 +0800 Subject: [PATCH 243/255] text/template: avoid allocating a new common in copy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Template.New calls t.init, which allocates several items that are immediately rewritten by copy, so avoid the call to New Change-Id: I16c7cb001bbcd14cf547c1a2db2734a2f8214e7e Reviewed-on: https://go-review.googlesource.com/c/go/+/182757 Run-TryBot: Daniel Martí TryBot-Result: Gobot Gobot Reviewed-by: Daniel Martí --- src/text/template/template.go | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/text/template/template.go b/src/text/template/template.go index 1135d819b9..2c5ff013e3 100644 --- a/src/text/template/template.go +++ b/src/text/template/template.go @@ -110,12 +110,13 @@ func (t *Template) Clone() (*Template, error) { // copy returns a shallow copy of t, with common set to the argument. func (t *Template) copy(c *common) *Template { - nt := New(t.name) - nt.Tree = t.Tree - nt.common = c - nt.leftDelim = t.leftDelim - nt.rightDelim = t.rightDelim - return nt + return &Template{ + name: t.name, + Tree: t.Tree, + common: c, + leftDelim: t.leftDelim, + rightDelim: t.rightDelim, + } } // AddParseTree adds parse tree for template with given name and associates it with t. From 483d6d99256b3c486e0c99106e232b4909938328 Mon Sep 17 00:00:00 2001 From: Andrew Gerrand Date: Fri, 31 May 2019 22:00:42 +1000 Subject: [PATCH 244/255] archive/zip: remove unused special case This removes a special case that was added to fix issue #10956, but that was never actually effective. The code in the test case still fails to read, so perhaps the zip64 support added in CL 6463050 inadvertently caught this particular case. It's possible that the original theorized bug still exists, but I'm not convinced it was ever fixed. Update #28700 Change-Id: I4854de616364510f64a6def30b308686563f8dbb Reviewed-on: https://go-review.googlesource.com/c/go/+/179757 Run-TryBot: Brad Fitzpatrick TryBot-Result: Gobot Gobot Reviewed-by: Brad Fitzpatrick --- src/archive/zip/reader.go | 4 ---- src/archive/zip/reader_test.go | 12 +++++++----- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/archive/zip/reader.go b/src/archive/zip/reader.go index 2260b398c3..13ff9ddcf4 100644 --- a/src/archive/zip/reader.go +++ b/src/archive/zip/reader.go @@ -8,7 +8,6 @@ import ( "bufio" "encoding/binary" "errors" - "fmt" "hash" "hash/crc32" "io" @@ -84,9 +83,6 @@ func (z *Reader) init(r io.ReaderAt, size int64) error { if err != nil { return err } - if end.directoryRecords > uint64(size)/fileHeaderLen { - return fmt.Errorf("archive/zip: TOC declares impossible %d files in %d byte zip", end.directoryRecords, size) - } z.r = r z.File = make([]*File, 0, end.directoryRecords) z.Comment = end.comment diff --git a/src/archive/zip/reader_test.go b/src/archive/zip/reader_test.go index 6b3f2f33bb..328559cc7d 100644 --- a/src/archive/zip/reader_test.go +++ b/src/archive/zip/reader_test.go @@ -981,15 +981,17 @@ func TestIssue10957(t *testing.T) { } } -// Verify the number of files is sane. +// Verify that this particular malformed zip file is rejected. func TestIssue10956(t *testing.T) { data := []byte("PK\x06\x06PK\x06\a0000\x00\x00\x00\x00\x00\x00\x00\x00" + "0000PK\x05\x06000000000000" + "0000\v\x00000\x00\x00\x00\x00\x00\x00\x000") - _, err := NewReader(bytes.NewReader(data), int64(len(data))) - const want = "TOC declares impossible 3472328296227680304 files in 57 byte" - if err == nil && !strings.Contains(err.Error(), want) { - t.Errorf("error = %v; want %q", err, want) + r, err := NewReader(bytes.NewReader(data), int64(len(data))) + if err == nil { + t.Errorf("got nil error, want ErrFormat") + } + if r != nil { + t.Errorf("got non-nil Reader, want nil") } } From 79dee788ec0bf2c943348088e7e6e471f6617c37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Sat, 10 Aug 2019 19:27:45 +0200 Subject: [PATCH 245/255] cmd/compile: teach rulegen to remove unused decls MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit First, add cpu and memory profiling flags, as these are useful to see where rulegen is spending its time. It now takes many seconds to run on a recent laptop, so we have to keep an eye on what it's doing. Second, stop writing '_ = var' lines to keep imports and variables used at all times. Now that rulegen removes all such unused names, they're unnecessary. To perform the removal, lean on go/types to first detect what names are unused. We can configure it to give us all the type-checking errors in a file, so we can collect all "declared but not used" errors in a single pass. We then use astutil.Apply to remove the relevant nodes based on the line information from each unused error. This allows us to apply the changes without having to do extra parser+printer roundtrips to plaintext, which are far too expensive. We need to do multiple such passes, as removing an unused variable declaration might then make another declaration unused. Two passes are enough to clean every file at the moment, so add a limit of three passes for now to avoid eating cpu uncontrollably by accident. The resulting performance of the changes above is a ~30% loss across the table, since go/types is fairly expensive. The numbers were obtained with 'benchcmd Rulegen go run *.go', which involves compiling rulegen itself, but that seems reflective of how the program is used. name old time/op new time/op delta Rulegen 5.61s ± 0% 7.36s ± 0% +31.17% (p=0.016 n=5+4) name old user-time/op new user-time/op delta Rulegen 7.20s ± 1% 9.92s ± 1% +37.76% (p=0.016 n=5+4) name old sys-time/op new sys-time/op delta Rulegen 135ms ±19% 169ms ±17% +25.66% (p=0.032 n=5+5) name old peak-RSS-bytes new peak-RSS-bytes delta Rulegen 71.0MB ± 2% 85.6MB ± 2% +20.56% (p=0.008 n=5+5) We can live with a bit more resource usage, but the time/op getting close to 10s isn't good. To win that back, introduce concurrency in main.go. This further increases resource usage a bit, but the real time on this quad-core laptop is greatly reduced. The final benchstat is as follows: name old time/op new time/op delta Rulegen 5.61s ± 0% 3.97s ± 1% -29.26% (p=0.008 n=5+5) name old user-time/op new user-time/op delta Rulegen 7.20s ± 1% 13.91s ± 1% +93.09% (p=0.008 n=5+5) name old sys-time/op new sys-time/op delta Rulegen 135ms ±19% 269ms ± 9% +99.17% (p=0.008 n=5+5) name old peak-RSS-bytes new peak-RSS-bytes delta Rulegen 71.0MB ± 2% 226.3MB ± 1% +218.72% (p=0.008 n=5+5) It might be possible to reduce the cpu or memory usage in the future, such as configuring go/types to do less work, or taking shortcuts to avoid having to run it many times. For now, ~2x cpu and ~4x memory usage seems like a fair trade for a faster and better rulegen. Finally, we can remove the old code that tried to remove some unused variables in a hacky and unmaintainable way. Change-Id: Iff9e83e3f253babf5a1bd48cc993033b8550cee6 Reviewed-on: https://go-review.googlesource.com/c/go/+/189798 Run-TryBot: Daniel Martí TryBot-Result: Gobot Gobot Reviewed-by: Keith Randall --- src/cmd/compile/internal/ssa/gen/main.go | 48 +++++- src/cmd/compile/internal/ssa/gen/rulegen.go | 161 ++++++++---------- src/cmd/compile/internal/ssa/rewrite386.go | 13 -- .../internal/ssa/rewrite386splitload.go | 17 -- src/cmd/compile/internal/ssa/rewriteAMD64.go | 12 -- .../internal/ssa/rewriteAMD64splitload.go | 17 -- src/cmd/compile/internal/ssa/rewriteARM.go | 13 -- src/cmd/compile/internal/ssa/rewriteARM64.go | 14 -- src/cmd/compile/internal/ssa/rewriteMIPS.go | 14 -- src/cmd/compile/internal/ssa/rewriteMIPS64.go | 14 -- src/cmd/compile/internal/ssa/rewritePPC64.go | 12 -- src/cmd/compile/internal/ssa/rewriteS390X.go | 12 -- src/cmd/compile/internal/ssa/rewriteWasm.go | 14 -- src/cmd/compile/internal/ssa/rewritedec.go | 15 -- src/cmd/compile/internal/ssa/rewritedec64.go | 15 -- .../compile/internal/ssa/rewritedecArgs.go | 17 -- .../compile/internal/ssa/rewritegeneric.go | 13 -- 17 files changed, 120 insertions(+), 301 deletions(-) diff --git a/src/cmd/compile/internal/ssa/gen/main.go b/src/cmd/compile/internal/ssa/gen/main.go index bfecb9b29f..9c0e0904b2 100644 --- a/src/cmd/compile/internal/ssa/gen/main.go +++ b/src/cmd/compile/internal/ssa/gen/main.go @@ -15,10 +15,14 @@ import ( "go/format" "io/ioutil" "log" + "os" "path" "regexp" + "runtime" + "runtime/pprof" "sort" "strings" + "sync" ) type arch struct { @@ -93,11 +97,36 @@ func (a arch) regMaskComment(r regMask) string { var archs []arch +var cpuprofile = flag.String("cpuprofile", "", "write cpu profile to `file`") +var memprofile = flag.String("memprofile", "", "write memory profile to `file`") + func main() { flag.Parse() + if *cpuprofile != "" { + f, err := os.Create(*cpuprofile) + if err != nil { + log.Fatal("could not create CPU profile: ", err) + } + defer f.Close() + if err := pprof.StartCPUProfile(f); err != nil { + log.Fatal("could not start CPU profile: ", err) + } + defer pprof.StopCPUProfile() + } sort.Sort(ArchsByName(archs)) genOp() genLower() + if *memprofile != "" { + f, err := os.Create(*memprofile) + if err != nil { + log.Fatal("could not create memory profile: ", err) + } + defer f.Close() + runtime.GC() // get up-to-date statistics + if err := pprof.WriteHeapProfile(f); err != nil { + log.Fatal("could not write memory profile: ", err) + } + } } func genOp() { @@ -395,11 +424,26 @@ func (a arch) Name() string { return s } +// genLower generates all arch-specific rewrite Go source files. The files are +// generated and written concurrently, since it's a CPU-intensive task that can +// easily make use of many cores on a machine. +// +// Note that there is no limit on the concurrency at the moment. On a four-core +// laptop at the time of writing, peak RSS usually reached ~230MiB, which seems +// doable by practially any machine nowadays. If that stops being the case, we +// can cap this func to a fixed number of architectures being generated at once. func genLower() { + var wg sync.WaitGroup for _, a := range archs { - genRules(a) - genSplitLoadRules(a) + a := a + wg.Add(1) + go func() { + genRules(a) + genSplitLoadRules(a) + wg.Done() + }() } + wg.Wait() } // countRegs returns the number of set bits in the register mask. diff --git a/src/cmd/compile/internal/ssa/gen/rulegen.go b/src/cmd/compile/internal/ssa/gen/rulegen.go index 0e89af73e9..500d98431c 100644 --- a/src/cmd/compile/internal/ssa/gen/rulegen.go +++ b/src/cmd/compile/internal/ssa/gen/rulegen.go @@ -21,14 +21,15 @@ import ( "go/parser" "go/printer" "go/token" + "go/types" "io" - "io/ioutil" "log" - "math" "os" "regexp" "sort" "strings" + + "golang.org/x/tools/go/ast/astutil" ) // rule syntax: @@ -165,7 +166,7 @@ func genRulesSuffix(arch arch, suff string) { } sort.Strings(ops) - file := &File{arch: arch, suffix: suff} + genFile := &File{arch: arch, suffix: suff} const chunkSize = 10 // Main rewrite routine is a switch on v.Op. fn := &Func{kind: "Value"} @@ -182,7 +183,7 @@ func genRulesSuffix(arch arch, suff string) { } fn.add(sw) fn.add(stmtf("return false")) - file.add(fn) + genFile.add(fn) // Generate a routine per op. Note that we don't make one giant routine // because it is too big for some compilers. @@ -201,7 +202,10 @@ func genRulesSuffix(arch arch, suff string) { kind: "Value", suffix: fmt.Sprintf("_%s_%d", op, chunk), } - var rewrites bodyBase + fn.add(declf("b", "v.Block")) + fn.add(declf("config", "b.Func.Config")) + fn.add(declf("fe", "b.Func.fe")) + fn.add(declf("typ", "&b.Func.Config.Types")) for _, rule := range rules[chunk:endchunk] { if rr != nil && !rr.canFail { log.Fatalf("unconditional rule %s is followed by other rules", rr.match) @@ -219,38 +223,12 @@ func genRulesSuffix(arch arch, suff string) { if *genLog { rr.add(stmtf("logRule(%q)", rule.loc)) } - rewrites.add(rr) + fn.add(rr) } - - // TODO(mvdan): remove unused vars later instead - uses := make(map[string]int) - walk(&rewrites, func(node Node) { - switch node := node.(type) { - case *Declare: - // work around var shadowing - // TODO(mvdan): forbid it instead. - uses[node.name] = math.MinInt32 - case *ast.Ident: - uses[node.Name]++ - } - }) - if uses["b"]+uses["config"]+uses["fe"]+uses["typ"] > 0 { - fn.add(declf("b", "v.Block")) - } - if uses["config"] > 0 { - fn.add(declf("config", "b.Func.Config")) - } - if uses["fe"] > 0 { - fn.add(declf("fe", "b.Func.fe")) - } - if uses["typ"] > 0 { - fn.add(declf("typ", "&b.Func.Config.Types")) - } - fn.add(rewrites.list...) if rr.canFail { fn.add(stmtf("return false")) } - file.add(fn) + genFile.add(fn) } } @@ -258,11 +236,8 @@ func genRulesSuffix(arch arch, suff string) { // so we can make this one function with a switch. fn = &Func{kind: "Block"} fn.add(declf("config", "b.Func.Config")) - // TODO(mvdan): declare these only if needed fn.add(declf("typ", "&config.Types")) - fn.add(stmtf("_ = typ")) fn.add(declf("v", "b.Control")) - fn.add(stmtf("_ = v")) sw = &Switch{expr: exprf("b.Kind")} ops = ops[:0] @@ -279,52 +254,69 @@ func genRulesSuffix(arch arch, suff string) { } fn.add(sw) fn.add(stmtf("return false")) - file.add(fn) + genFile.add(fn) - // gofmt result + // Remove unused imports and variables. buf := new(bytes.Buffer) - fprint(buf, file) - b := buf.Bytes() - src, err := format.Source(b) + fprint(buf, genFile) + fset := token.NewFileSet() + file, err := parser.ParseFile(fset, "", buf, parser.ParseComments) if err != nil { - fmt.Printf("%s\n", b) - panic(err) + log.Fatal(err) } - // Write to file - if err := ioutil.WriteFile("../rewrite"+arch.name+suff+".go", src, 0666); err != nil { - log.Fatalf("can't write output: %v\n", err) - } -} + tfile := fset.File(file.Pos()) -func walk(node Node, fn func(Node)) { - fn(node) - switch node := node.(type) { - case *bodyBase: - case *File: - case *Func: - case *Switch: - walk(node.expr, fn) - case *Case: - walk(node.expr, fn) - case *RuleRewrite: - case *Declare: - walk(node.value, fn) - case *CondBreak: - walk(node.expr, fn) - case ast.Node: - ast.Inspect(node, func(node ast.Node) bool { - fn(node) - return true - }) - default: - log.Fatalf("cannot walk %T", node) - } - if wb, ok := node.(interface{ body() []Statement }); ok { - for _, node := range wb.body() { - walk(node, fn) + for n := 0; n < 3; n++ { + unused := make(map[token.Pos]bool) + conf := types.Config{Error: func(err error) { + if terr, ok := err.(types.Error); ok && strings.Contains(terr.Msg, "not used") { + unused[terr.Pos] = true + } + }} + _, _ = conf.Check("ssa", fset, []*ast.File{file}, nil) + if len(unused) == 0 { + break } + pre := func(c *astutil.Cursor) bool { + if node := c.Node(); node != nil && unused[node.Pos()] { + c.Delete() + // Unused imports and declarations use exactly + // one line. Prevent leaving an empty line. + tfile.MergeLine(tfile.Position(node.Pos()).Line) + return false + } + return true + } + post := func(c *astutil.Cursor) bool { + switch node := c.Node().(type) { + case *ast.GenDecl: + if len(node.Specs) == 0 { + c.Delete() + } + } + return true + } + file = astutil.Apply(file, pre, post).(*ast.File) + } + + // Write the well-formatted source to file + f, err := os.Create("../rewrite" + arch.name + suff + ".go") + if err != nil { + log.Fatalf("can't write output: %v", err) + } + defer f.Close() + // gofmt result; use a buffered writer, as otherwise go/format spends + // far too much time in syscalls. + bw := bufio.NewWriter(f) + if err := format.Node(bw, fset, file); err != nil { + log.Fatalf("can't format output: %v", err) + } + if err := bw.Flush(); err != nil { + log.Fatalf("can't write output: %v", err) + } + if err := f.Close(); err != nil { + log.Fatalf("can't write output: %v", err) } - fn(nil) } func fprint(w io.Writer, n Node) { @@ -333,18 +325,13 @@ func fprint(w io.Writer, n Node) { fmt.Fprintf(w, "// Code generated from gen/%s%s.rules; DO NOT EDIT.\n", n.arch.name, n.suffix) fmt.Fprintf(w, "// generated with: cd gen; go run *.go\n") fmt.Fprintf(w, "\npackage ssa\n") - // TODO(mvdan): keep the needed imports only - fmt.Fprintln(w, "import \"fmt\"") - fmt.Fprintln(w, "import \"math\"") - fmt.Fprintln(w, "import \"cmd/internal/obj\"") - fmt.Fprintln(w, "import \"cmd/internal/objabi\"") - fmt.Fprintln(w, "import \"cmd/compile/internal/types\"") - fmt.Fprintln(w, "var _ = fmt.Println // in case not otherwise used") - fmt.Fprintln(w, "var _ = math.MinInt8 // in case not otherwise used") - fmt.Fprintln(w, "var _ = obj.ANOP // in case not otherwise used") - fmt.Fprintln(w, "var _ = objabi.GOROOT // in case not otherwise used") - fmt.Fprintln(w, "var _ = types.TypeMem // in case not otherwise used") - fmt.Fprintln(w) + for _, path := range []string{ + "fmt", "math", + "cmd/internal/obj", "cmd/internal/objabi", + "cmd/compile/internal/types", + } { + fmt.Fprintf(w, "import %q\n", path) + } for _, f := range n.list { f := f.(*Func) fmt.Fprintf(w, "func rewrite%s%s%s%s(", f.kind, n.arch.name, n.suffix, f.suffix) diff --git a/src/cmd/compile/internal/ssa/rewrite386.go b/src/cmd/compile/internal/ssa/rewrite386.go index 8f896ec0c7..812aa9420d 100644 --- a/src/cmd/compile/internal/ssa/rewrite386.go +++ b/src/cmd/compile/internal/ssa/rewrite386.go @@ -3,18 +3,9 @@ package ssa -import "fmt" import "math" -import "cmd/internal/obj" -import "cmd/internal/objabi" import "cmd/compile/internal/types" -var _ = fmt.Println // in case not otherwise used -var _ = math.MinInt8 // in case not otherwise used -var _ = obj.ANOP // in case not otherwise used -var _ = objabi.GOROOT // in case not otherwise used -var _ = types.TypeMem // in case not otherwise used - func rewriteValue386(v *Value) bool { switch v.Op { case Op386ADCL: @@ -24539,11 +24530,7 @@ func rewriteValue386_OpZeromask_0(v *Value) bool { } } func rewriteBlock386(b *Block) bool { - config := b.Func.Config - typ := &config.Types - _ = typ v := b.Control - _ = v switch b.Kind { case Block386EQ: // match: (EQ (InvertFlags cmp) yes no) diff --git a/src/cmd/compile/internal/ssa/rewrite386splitload.go b/src/cmd/compile/internal/ssa/rewrite386splitload.go index 1eaf2d9d48..b6c1989d52 100644 --- a/src/cmd/compile/internal/ssa/rewrite386splitload.go +++ b/src/cmd/compile/internal/ssa/rewrite386splitload.go @@ -3,18 +3,6 @@ package ssa -import "fmt" -import "math" -import "cmd/internal/obj" -import "cmd/internal/objabi" -import "cmd/compile/internal/types" - -var _ = fmt.Println // in case not otherwise used -var _ = math.MinInt8 // in case not otherwise used -var _ = obj.ANOP // in case not otherwise used -var _ = objabi.GOROOT // in case not otherwise used -var _ = types.TypeMem // in case not otherwise used - func rewriteValue386splitload(v *Value) bool { switch v.Op { case Op386CMPBconstload: @@ -168,11 +156,6 @@ func rewriteValue386splitload_Op386CMPWload_0(v *Value) bool { } } func rewriteBlock386splitload(b *Block) bool { - config := b.Func.Config - typ := &config.Types - _ = typ - v := b.Control - _ = v switch b.Kind { } return false diff --git a/src/cmd/compile/internal/ssa/rewriteAMD64.go b/src/cmd/compile/internal/ssa/rewriteAMD64.go index 8c02897f71..1f888211ef 100644 --- a/src/cmd/compile/internal/ssa/rewriteAMD64.go +++ b/src/cmd/compile/internal/ssa/rewriteAMD64.go @@ -3,18 +3,9 @@ package ssa -import "fmt" import "math" -import "cmd/internal/obj" -import "cmd/internal/objabi" import "cmd/compile/internal/types" -var _ = fmt.Println // in case not otherwise used -var _ = math.MinInt8 // in case not otherwise used -var _ = obj.ANOP // in case not otherwise used -var _ = objabi.GOROOT // in case not otherwise used -var _ = types.TypeMem // in case not otherwise used - func rewriteValueAMD64(v *Value) bool { switch v.Op { case OpAMD64ADCQ: @@ -64753,10 +64744,7 @@ func rewriteValueAMD64_OpZeroExt8to64_0(v *Value) bool { } func rewriteBlockAMD64(b *Block) bool { config := b.Func.Config - typ := &config.Types - _ = typ v := b.Control - _ = v switch b.Kind { case BlockAMD64EQ: // match: (EQ (TESTL (SHLL (MOVLconst [1]) x) y)) diff --git a/src/cmd/compile/internal/ssa/rewriteAMD64splitload.go b/src/cmd/compile/internal/ssa/rewriteAMD64splitload.go index 0a0ff2dfbf..2cccc8d4a1 100644 --- a/src/cmd/compile/internal/ssa/rewriteAMD64splitload.go +++ b/src/cmd/compile/internal/ssa/rewriteAMD64splitload.go @@ -3,18 +3,6 @@ package ssa -import "fmt" -import "math" -import "cmd/internal/obj" -import "cmd/internal/objabi" -import "cmd/compile/internal/types" - -var _ = fmt.Println // in case not otherwise used -var _ = math.MinInt8 // in case not otherwise used -var _ = obj.ANOP // in case not otherwise used -var _ = objabi.GOROOT // in case not otherwise used -var _ = types.TypeMem // in case not otherwise used - func rewriteValueAMD64splitload(v *Value) bool { switch v.Op { case OpAMD64CMPBconstload: @@ -217,11 +205,6 @@ func rewriteValueAMD64splitload_OpAMD64CMPWload_0(v *Value) bool { } } func rewriteBlockAMD64splitload(b *Block) bool { - config := b.Func.Config - typ := &config.Types - _ = typ - v := b.Control - _ = v switch b.Kind { } return false diff --git a/src/cmd/compile/internal/ssa/rewriteARM.go b/src/cmd/compile/internal/ssa/rewriteARM.go index 72c07c94c8..6a3237497c 100644 --- a/src/cmd/compile/internal/ssa/rewriteARM.go +++ b/src/cmd/compile/internal/ssa/rewriteARM.go @@ -3,18 +3,9 @@ package ssa -import "fmt" -import "math" -import "cmd/internal/obj" import "cmd/internal/objabi" import "cmd/compile/internal/types" -var _ = fmt.Println // in case not otherwise used -var _ = math.MinInt8 // in case not otherwise used -var _ = obj.ANOP // in case not otherwise used -var _ = objabi.GOROOT // in case not otherwise used -var _ = types.TypeMem // in case not otherwise used - func rewriteValueARM(v *Value) bool { switch v.Op { case OpARMADC: @@ -21785,11 +21776,7 @@ func rewriteValueARM_OpZeromask_0(v *Value) bool { } } func rewriteBlockARM(b *Block) bool { - config := b.Func.Config - typ := &config.Types - _ = typ v := b.Control - _ = v switch b.Kind { case BlockARMEQ: // match: (EQ (FlagEQ) yes no) diff --git a/src/cmd/compile/internal/ssa/rewriteARM64.go b/src/cmd/compile/internal/ssa/rewriteARM64.go index 9dfd848bc4..fc677726dc 100644 --- a/src/cmd/compile/internal/ssa/rewriteARM64.go +++ b/src/cmd/compile/internal/ssa/rewriteARM64.go @@ -3,18 +3,8 @@ package ssa -import "fmt" -import "math" -import "cmd/internal/obj" -import "cmd/internal/objabi" import "cmd/compile/internal/types" -var _ = fmt.Println // in case not otherwise used -var _ = math.MinInt8 // in case not otherwise used -var _ = obj.ANOP // in case not otherwise used -var _ = objabi.GOROOT // in case not otherwise used -var _ = types.TypeMem // in case not otherwise used - func rewriteValueARM64(v *Value) bool { switch v.Op { case OpARM64ADCSflags: @@ -38293,11 +38283,7 @@ func rewriteValueARM64_OpZeroExt8to64_0(v *Value) bool { } } func rewriteBlockARM64(b *Block) bool { - config := b.Func.Config - typ := &config.Types - _ = typ v := b.Control - _ = v switch b.Kind { case BlockARM64EQ: // match: (EQ (CMPWconst [0] x:(ANDconst [c] y)) yes no) diff --git a/src/cmd/compile/internal/ssa/rewriteMIPS.go b/src/cmd/compile/internal/ssa/rewriteMIPS.go index 6e0fa2b891..5ce0ec36f7 100644 --- a/src/cmd/compile/internal/ssa/rewriteMIPS.go +++ b/src/cmd/compile/internal/ssa/rewriteMIPS.go @@ -3,18 +3,8 @@ package ssa -import "fmt" -import "math" -import "cmd/internal/obj" -import "cmd/internal/objabi" import "cmd/compile/internal/types" -var _ = fmt.Println // in case not otherwise used -var _ = math.MinInt8 // in case not otherwise used -var _ = obj.ANOP // in case not otherwise used -var _ = objabi.GOROOT // in case not otherwise used -var _ = types.TypeMem // in case not otherwise used - func rewriteValueMIPS(v *Value) bool { switch v.Op { case OpAdd16: @@ -9452,11 +9442,7 @@ func rewriteValueMIPS_OpZeromask_0(v *Value) bool { } } func rewriteBlockMIPS(b *Block) bool { - config := b.Func.Config - typ := &config.Types - _ = typ v := b.Control - _ = v switch b.Kind { case BlockMIPSEQ: // match: (EQ (FPFlagTrue cmp) yes no) diff --git a/src/cmd/compile/internal/ssa/rewriteMIPS64.go b/src/cmd/compile/internal/ssa/rewriteMIPS64.go index db104504e9..8b75c032cc 100644 --- a/src/cmd/compile/internal/ssa/rewriteMIPS64.go +++ b/src/cmd/compile/internal/ssa/rewriteMIPS64.go @@ -3,18 +3,8 @@ package ssa -import "fmt" -import "math" -import "cmd/internal/obj" -import "cmd/internal/objabi" import "cmd/compile/internal/types" -var _ = fmt.Println // in case not otherwise used -var _ = math.MinInt8 // in case not otherwise used -var _ = obj.ANOP // in case not otherwise used -var _ = objabi.GOROOT // in case not otherwise used -var _ = types.TypeMem // in case not otherwise used - func rewriteValueMIPS64(v *Value) bool { switch v.Op { case OpAdd16: @@ -10186,11 +10176,7 @@ func rewriteValueMIPS64_OpZeroExt8to64_0(v *Value) bool { } } func rewriteBlockMIPS64(b *Block) bool { - config := b.Func.Config - typ := &config.Types - _ = typ v := b.Control - _ = v switch b.Kind { case BlockMIPS64EQ: // match: (EQ (FPFlagTrue cmp) yes no) diff --git a/src/cmd/compile/internal/ssa/rewritePPC64.go b/src/cmd/compile/internal/ssa/rewritePPC64.go index d35cf6eeac..1bc16515d4 100644 --- a/src/cmd/compile/internal/ssa/rewritePPC64.go +++ b/src/cmd/compile/internal/ssa/rewritePPC64.go @@ -3,18 +3,10 @@ package ssa -import "fmt" import "math" -import "cmd/internal/obj" import "cmd/internal/objabi" import "cmd/compile/internal/types" -var _ = fmt.Println // in case not otherwise used -var _ = math.MinInt8 // in case not otherwise used -var _ = obj.ANOP // in case not otherwise used -var _ = objabi.GOROOT // in case not otherwise used -var _ = types.TypeMem // in case not otherwise used - func rewriteValuePPC64(v *Value) bool { switch v.Op { case OpAbs: @@ -30305,11 +30297,7 @@ func rewriteValuePPC64_OpZeroExt8to64_0(v *Value) bool { } } func rewriteBlockPPC64(b *Block) bool { - config := b.Func.Config - typ := &config.Types - _ = typ v := b.Control - _ = v switch b.Kind { case BlockPPC64EQ: // match: (EQ (CMPconst [0] (ANDconst [c] x)) yes no) diff --git a/src/cmd/compile/internal/ssa/rewriteS390X.go b/src/cmd/compile/internal/ssa/rewriteS390X.go index fa1de9a7a6..2de5e1b83f 100644 --- a/src/cmd/compile/internal/ssa/rewriteS390X.go +++ b/src/cmd/compile/internal/ssa/rewriteS390X.go @@ -3,18 +3,8 @@ package ssa -import "fmt" -import "math" -import "cmd/internal/obj" -import "cmd/internal/objabi" import "cmd/compile/internal/types" -var _ = fmt.Println // in case not otherwise used -var _ = math.MinInt8 // in case not otherwise used -var _ = obj.ANOP // in case not otherwise used -var _ = objabi.GOROOT // in case not otherwise used -var _ = types.TypeMem // in case not otherwise used - func rewriteValueS390X(v *Value) bool { switch v.Op { case OpAdd16: @@ -41547,9 +41537,7 @@ func rewriteValueS390X_OpZeroExt8to64_0(v *Value) bool { func rewriteBlockS390X(b *Block) bool { config := b.Func.Config typ := &config.Types - _ = typ v := b.Control - _ = v switch b.Kind { case BlockS390XEQ: // match: (EQ (InvertFlags cmp) yes no) diff --git a/src/cmd/compile/internal/ssa/rewriteWasm.go b/src/cmd/compile/internal/ssa/rewriteWasm.go index acfbb24f10..98ca6f69a3 100644 --- a/src/cmd/compile/internal/ssa/rewriteWasm.go +++ b/src/cmd/compile/internal/ssa/rewriteWasm.go @@ -3,18 +3,9 @@ package ssa -import "fmt" -import "math" -import "cmd/internal/obj" import "cmd/internal/objabi" import "cmd/compile/internal/types" -var _ = fmt.Println // in case not otherwise used -var _ = math.MinInt8 // in case not otherwise used -var _ = obj.ANOP // in case not otherwise used -var _ = objabi.GOROOT // in case not otherwise used -var _ = types.TypeMem // in case not otherwise used - func rewriteValueWasm(v *Value) bool { switch v.Op { case OpAbs: @@ -6555,11 +6546,6 @@ func rewriteValueWasm_OpZeroExt8to64_0(v *Value) bool { } } func rewriteBlockWasm(b *Block) bool { - config := b.Func.Config - typ := &config.Types - _ = typ - v := b.Control - _ = v switch b.Kind { } return false diff --git a/src/cmd/compile/internal/ssa/rewritedec.go b/src/cmd/compile/internal/ssa/rewritedec.go index fe135821eb..389e69213d 100644 --- a/src/cmd/compile/internal/ssa/rewritedec.go +++ b/src/cmd/compile/internal/ssa/rewritedec.go @@ -3,18 +3,8 @@ package ssa -import "fmt" -import "math" -import "cmd/internal/obj" -import "cmd/internal/objabi" import "cmd/compile/internal/types" -var _ = fmt.Println // in case not otherwise used -var _ = math.MinInt8 // in case not otherwise used -var _ = obj.ANOP // in case not otherwise used -var _ = objabi.GOROOT // in case not otherwise used -var _ = types.TypeMem // in case not otherwise used - func rewriteValuedec(v *Value) bool { switch v.Op { case OpComplexImag: @@ -492,11 +482,6 @@ func rewriteValuedec_OpStringPtr_0(v *Value) bool { return false } func rewriteBlockdec(b *Block) bool { - config := b.Func.Config - typ := &config.Types - _ = typ - v := b.Control - _ = v switch b.Kind { } return false diff --git a/src/cmd/compile/internal/ssa/rewritedec64.go b/src/cmd/compile/internal/ssa/rewritedec64.go index a67ae1ed52..3c15ddefdd 100644 --- a/src/cmd/compile/internal/ssa/rewritedec64.go +++ b/src/cmd/compile/internal/ssa/rewritedec64.go @@ -3,18 +3,8 @@ package ssa -import "fmt" -import "math" -import "cmd/internal/obj" -import "cmd/internal/objabi" import "cmd/compile/internal/types" -var _ = fmt.Println // in case not otherwise used -var _ = math.MinInt8 // in case not otherwise used -var _ = obj.ANOP // in case not otherwise used -var _ = objabi.GOROOT // in case not otherwise used -var _ = types.TypeMem // in case not otherwise used - func rewriteValuedec64(v *Value) bool { switch v.Op { case OpAdd64: @@ -2726,11 +2716,6 @@ func rewriteValuedec64_OpZeroExt8to64_0(v *Value) bool { } } func rewriteBlockdec64(b *Block) bool { - config := b.Func.Config - typ := &config.Types - _ = typ - v := b.Control - _ = v switch b.Kind { } return false diff --git a/src/cmd/compile/internal/ssa/rewritedecArgs.go b/src/cmd/compile/internal/ssa/rewritedecArgs.go index 6b811297b3..0f6d01f22b 100644 --- a/src/cmd/compile/internal/ssa/rewritedecArgs.go +++ b/src/cmd/compile/internal/ssa/rewritedecArgs.go @@ -3,18 +3,6 @@ package ssa -import "fmt" -import "math" -import "cmd/internal/obj" -import "cmd/internal/objabi" -import "cmd/compile/internal/types" - -var _ = fmt.Println // in case not otherwise used -var _ = math.MinInt8 // in case not otherwise used -var _ = obj.ANOP // in case not otherwise used -var _ = objabi.GOROOT // in case not otherwise used -var _ = types.TypeMem // in case not otherwise used - func rewriteValuedecArgs(v *Value) bool { switch v.Op { case OpArg: @@ -270,11 +258,6 @@ func rewriteValuedecArgs_OpArg_10(v *Value) bool { return false } func rewriteBlockdecArgs(b *Block) bool { - config := b.Func.Config - typ := &config.Types - _ = typ - v := b.Control - _ = v switch b.Kind { } return false diff --git a/src/cmd/compile/internal/ssa/rewritegeneric.go b/src/cmd/compile/internal/ssa/rewritegeneric.go index 7117f77d24..db0b1749a8 100644 --- a/src/cmd/compile/internal/ssa/rewritegeneric.go +++ b/src/cmd/compile/internal/ssa/rewritegeneric.go @@ -3,18 +3,9 @@ package ssa -import "fmt" import "math" -import "cmd/internal/obj" -import "cmd/internal/objabi" import "cmd/compile/internal/types" -var _ = fmt.Println // in case not otherwise used -var _ = math.MinInt8 // in case not otherwise used -var _ = obj.ANOP // in case not otherwise used -var _ = objabi.GOROOT // in case not otherwise used -var _ = types.TypeMem // in case not otherwise used - func rewriteValuegeneric(v *Value) bool { switch v.Op { case OpAdd16: @@ -49166,11 +49157,7 @@ func rewriteValuegeneric_OpZeroExt8to64_0(v *Value) bool { return false } func rewriteBlockgeneric(b *Block) bool { - config := b.Func.Config - typ := &config.Types - _ = typ v := b.Control - _ = v switch b.Kind { case BlockIf: // match: (If (Not cond) yes no) From 1a432f27d5da052d6e9bae1e0534fa2dc0c44059 Mon Sep 17 00:00:00 2001 From: LE Manh Cuong Date: Fri, 2 Aug 2019 15:24:54 +0700 Subject: [PATCH 246/255] cmd/compile: eliminate usage of global Fatalf in ssa.go state and ssafn both have their own Fatalf, so use them instead of global Fatalf. Updates #19683 Change-Id: Ie02a961d4285ab0a3f3b8d889a5b498d926ed567 Reviewed-on: https://go-review.googlesource.com/c/go/+/188539 Run-TryBot: Brad Fitzpatrick TryBot-Result: Gobot Gobot Reviewed-by: Keith Randall --- src/cmd/compile/internal/gc/ssa.go | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/cmd/compile/internal/gc/ssa.go b/src/cmd/compile/internal/gc/ssa.go index 5509e3d182..9871e11a09 100644 --- a/src/cmd/compile/internal/gc/ssa.go +++ b/src/cmd/compile/internal/gc/ssa.go @@ -908,7 +908,7 @@ func (s *state) stmt(n *Node) { case ODCL: if n.Left.Class() == PAUTOHEAP { - Fatalf("DCL %v", n) + s.Fatalf("DCL %v", n) } case OLABEL: @@ -966,7 +966,7 @@ func (s *state) stmt(n *Node) { // rewritten during walk. Any that remain are just T{} // or equivalents. Use the zero value. if !isZero(rhs) { - Fatalf("literal with nonzero value in SSA: %v", rhs) + s.Fatalf("literal with nonzero value in SSA: %v", rhs) } rhs = nil case OAPPEND: @@ -2295,7 +2295,7 @@ func (s *state) expr(n *Node) *ssa.Value { // rewritten during walk. Any that remain are just T{} // or equivalents. Use the zero value. if !isZero(n.Left) { - Fatalf("literal with nonzero value in SSA: %v", n.Left) + s.Fatalf("literal with nonzero value in SSA: %v", n.Left) } return s.zeroVal(n.Type) } @@ -2457,7 +2457,7 @@ func (s *state) expr(n *Node) *ssa.Value { // rewritten during walk. Any that remain are just T{} // or equivalents. Use the zero value. if !isZero(n) { - Fatalf("literal with nonzero value in SSA: %v", n) + s.Fatalf("literal with nonzero value in SSA: %v", n) } return s.zeroVal(n.Type) @@ -3768,7 +3768,7 @@ func (s *state) call(n *Node, k callKind) *ssa.Value { } case OCALLMETH: if fn.Op != ODOTMETH { - Fatalf("OCALLMETH: n.Left not an ODOTMETH: %v", fn) + s.Fatalf("OCALLMETH: n.Left not an ODOTMETH: %v", fn) } if k == callNormal { sym = fn.Sym @@ -3790,7 +3790,7 @@ func (s *state) call(n *Node, k callKind) *ssa.Value { // want to set it here. case OCALLINTER: if fn.Op != ODOTINTER { - Fatalf("OCALLINTER: n.Left not an ODOTINTER: %v", fn.Op) + s.Fatalf("OCALLINTER: n.Left not an ODOTINTER: %v", fn.Op) } i := s.expr(fn.Left) itab := s.newValue1(ssa.OpITab, types.Types[TUINTPTR], i) @@ -3923,7 +3923,7 @@ func (s *state) call(n *Node, k callKind) *ssa.Value { case sym != nil: call = s.newValue1A(ssa.OpStaticCall, types.TypeMem, sym.Linksym(), s.mem()) default: - Fatalf("bad call type %v %v", n.Op, n) + s.Fatalf("bad call type %v %v", n.Op, n) } call.AuxInt = stksize // Call operations carry the argsize of the callee along with them } @@ -4079,7 +4079,7 @@ func (s *state) canSSA(n *Node) bool { return false } if n.Class() == PAUTOHEAP { - Fatalf("canSSA of PAUTOHEAP %v", n) + s.Fatalf("canSSA of PAUTOHEAP %v", n) } switch n.Class() { case PEXTERN: @@ -4299,7 +4299,7 @@ func (s *state) rtcall(fn *obj.LSym, returns bool, results []*types.Type, args . b.SetControl(call) call.AuxInt = off - Ctxt.FixedFrameSize() if len(results) > 0 { - Fatalf("panic call can't have results") + s.Fatalf("panic call can't have results") } return nil } @@ -5258,7 +5258,7 @@ func emitStackObjects(e *ssafn, pp *Progs) { // Locals have a negative Xoffset, in which case the offset is relative to varp. off = duintptr(x, off, uint64(v.Xoffset)) if !typesym(v.Type).Siggen() { - Fatalf("stack object's type symbol not generated for type %s", v.Type) + e.Fatalf(v.Pos, "stack object's type symbol not generated for type %s", v.Type) } off = dsymptr(x, off, dtypesym(v.Type), 0) } @@ -5597,10 +5597,10 @@ func defframe(s *SSAGenState, e *ssafn) { continue } if n.Class() != PAUTO { - Fatalf("needzero class %d", n.Class()) + e.Fatalf(n.Pos, "needzero class %d", n.Class()) } if n.Type.Size()%int64(Widthptr) != 0 || n.Xoffset%int64(Widthptr) != 0 || n.Type.Size() == 0 { - Fatalf("var %L has size %d offset %d", n, n.Type.Size(), n.Xoffset) + e.Fatalf(n.Pos, "var %L has size %d offset %d", n, n.Type.Size(), n.Xoffset) } if lo != hi && n.Xoffset+n.Type.Size() >= lo-int64(2*Widthreg) { @@ -6096,7 +6096,7 @@ func (e *ssafn) SplitArray(name ssa.LocalSlot) ssa.LocalSlot { n := name.N.(*Node) at := name.Type if at.NumElem() != 1 { - Fatalf("bad array size") + e.Fatalf(n.Pos, "bad array size") } et := at.Elem() if n.Class() == PAUTO && !n.Addrtaken() { @@ -6186,7 +6186,7 @@ func (e *ssafn) Syslook(name string) *obj.LSym { case "typedmemclr": return typedmemclr } - Fatalf("unknown Syslook func %v", name) + e.Fatalf(src.NoXPos, "unknown Syslook func %v", name) return nil } From 72e71b90f3e808900279433c581af272d5b9afa4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Tue, 27 Aug 2019 17:09:56 +0000 Subject: [PATCH 247/255] Revert "net/url: fail TestParseErrors test when getting an unwanted error" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts https://golang.org/cl/185080. Reason for revert: some new changes are erroring again, so this broke the builders. Change-Id: I28da16da98b90cefbb47173d31bbbb56e43062d5 Reviewed-on: https://go-review.googlesource.com/c/go/+/191781 Run-TryBot: Daniel Martí TryBot-Result: Gobot Gobot Reviewed-by: Emmanuel Odeke --- src/net/url/url_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/net/url/url_test.go b/src/net/url/url_test.go index b86956906d..e83c86c424 100644 --- a/src/net/url/url_test.go +++ b/src/net/url/url_test.go @@ -1456,7 +1456,7 @@ func TestParseErrors(t *testing.T) { continue } if err != nil { - t.Errorf("Parse(%q) = %v; want no error", tt.in, err) + t.Logf("Parse(%q) = %v; want no error", tt.in, err) } } } From b9bf2f5d2bb117f806aef84d99ad60adbcb0cc21 Mon Sep 17 00:00:00 2001 From: Dong-hee Na Date: Wed, 15 May 2019 02:40:12 +0900 Subject: [PATCH 248/255] html/template: micro optimization for isJSType MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There is an unnecessary lower operation in isJSType. Simple logic fix can improve tiny performance. name old time/op new time/op delta isJSType-8 152ns ± 0% 58ns ± 7% -61.82% (p=0.001 n=6+8) name old alloc/op new alloc/op delta isJSType-8 32.0B ± 0% 0.0B -100.00% (p=0.000 n=8+8) name old allocs/op new allocs/op delta isJSType-8 1.00 ± 0% 0.00 -100.00% (p=0.000 n=8+8) Change-Id: I281aadf1677d4377920c9649af206381189a27e6 Reviewed-on: https://go-review.googlesource.com/c/go/+/177118 Run-TryBot: Daniel Martí TryBot-Result: Gobot Gobot Reviewed-by: Daniel Martí --- src/html/template/js.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/html/template/js.go b/src/html/template/js.go index 7025c1cfaa..0e91458d19 100644 --- a/src/html/template/js.go +++ b/src/html/template/js.go @@ -383,11 +383,11 @@ func isJSType(mimeType string) bool { // https://tools.ietf.org/html/rfc7231#section-3.1.1 // https://tools.ietf.org/html/rfc4329#section-3 // https://www.ietf.org/rfc/rfc4627.txt - mimeType = strings.ToLower(mimeType) // discard parameters if i := strings.Index(mimeType, ";"); i >= 0 { mimeType = mimeType[:i] } + mimeType = strings.ToLower(mimeType) mimeType = strings.TrimSpace(mimeType) switch mimeType { case From ae68a912725e5a3a0482bc5945687663f2ddafe3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Wed, 3 Jul 2019 00:37:05 +0200 Subject: [PATCH 249/255] encoding/json: remove unnecessary isValidNumber call MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The decoder called this function to check numbers being decoded into a json.Number. However, these can't be quoted as strings, so the tokenizer has already verified they are valid JSON numbers. Verified this by adding a test with such an input. As expected, it produces a syntax error, not the fmt.Errorf - that line could never execute. Since the only remaining non-test caller of isvalidnumber is in encode.go, move the function there. This change should slightly reduce the amount of work when decoding into json.Number, though that isn't very common nor part of any current benchmarks. Change-Id: I67a1723deb3d18d5b542d6dd35f3ae56a43f23eb Reviewed-on: https://go-review.googlesource.com/c/go/+/184817 Run-TryBot: Daniel Martí Reviewed-by: Brad Fitzpatrick TryBot-Result: Gobot Gobot --- src/encoding/json/decode.go | 65 +------------------------------- src/encoding/json/decode_test.go | 1 + src/encoding/json/encode.go | 60 +++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+), 63 deletions(-) diff --git a/src/encoding/json/decode.go b/src/encoding/json/decode.go index cbd71acfc6..df1c085917 100644 --- a/src/encoding/json/decode.go +++ b/src/encoding/json/decode.go @@ -199,66 +199,6 @@ func (n Number) Int64() (int64, error) { return strconv.ParseInt(string(n), 10, 64) } -// isValidNumber reports whether s is a valid JSON number literal. -func isValidNumber(s string) bool { - // This function implements the JSON numbers grammar. - // See https://tools.ietf.org/html/rfc7159#section-6 - // and https://json.org/number.gif - - if s == "" { - return false - } - - // Optional - - if s[0] == '-' { - s = s[1:] - if s == "" { - return false - } - } - - // Digits - switch { - default: - return false - - case s[0] == '0': - s = s[1:] - - case '1' <= s[0] && s[0] <= '9': - s = s[1:] - for len(s) > 0 && '0' <= s[0] && s[0] <= '9' { - s = s[1:] - } - } - - // . followed by 1 or more digits. - if len(s) >= 2 && s[0] == '.' && '0' <= s[1] && s[1] <= '9' { - s = s[2:] - for len(s) > 0 && '0' <= s[0] && s[0] <= '9' { - s = s[1:] - } - } - - // e or E followed by an optional - or + and - // 1 or more digits. - if len(s) >= 2 && (s[0] == 'e' || s[0] == 'E') { - s = s[1:] - if s[0] == '+' || s[0] == '-' { - s = s[1:] - if s == "" { - return false - } - } - for len(s) > 0 && '0' <= s[0] && s[0] <= '9' { - s = s[1:] - } - } - - // Make sure we are at the end. - return s == "" -} - // decodeState represents the state while decoding a JSON value. type decodeState struct { data []byte @@ -1027,10 +967,9 @@ func (d *decodeState) literalStore(item []byte, v reflect.Value, fromQuoted bool switch v.Kind() { default: if v.Kind() == reflect.String && v.Type() == numberType { + // s must be a valid number, because it's + // already been tokenized. v.SetString(s) - if !isValidNumber(s) { - return fmt.Errorf("json: invalid number literal, trying to unmarshal %q into Number", item) - } break } if fromQuoted { diff --git a/src/encoding/json/decode_test.go b/src/encoding/json/decode_test.go index d66be44d4e..8dcb08cbd2 100644 --- a/src/encoding/json/decode_test.go +++ b/src/encoding/json/decode_test.go @@ -448,6 +448,7 @@ var unmarshalTests = []unmarshalTest{ {in: `[1, 2, 3+]`, err: &SyntaxError{"invalid character '+' after array element", 9}}, {in: `{"X":12x}`, err: &SyntaxError{"invalid character 'x' after object key:value pair", 8}, useNumber: true}, {in: `[2, 3`, err: &SyntaxError{msg: "unexpected end of JSON input", Offset: 5}}, + {in: `{"F3": -}`, ptr: new(V), out: V{F3: Number("-")}, err: &SyntaxError{msg: "invalid character '}' in numeric literal", Offset: 9}}, // raw value errors {in: "\x01 42", err: &SyntaxError{"invalid character '\\x01' looking for beginning of value", 1}}, diff --git a/src/encoding/json/encode.go b/src/encoding/json/encode.go index 67412763d6..07d3098f1c 100644 --- a/src/encoding/json/encode.go +++ b/src/encoding/json/encode.go @@ -611,6 +611,66 @@ func stringEncoder(e *encodeState, v reflect.Value, opts encOpts) { } } +// isValidNumber reports whether s is a valid JSON number literal. +func isValidNumber(s string) bool { + // This function implements the JSON numbers grammar. + // See https://tools.ietf.org/html/rfc7159#section-6 + // and https://json.org/number.gif + + if s == "" { + return false + } + + // Optional - + if s[0] == '-' { + s = s[1:] + if s == "" { + return false + } + } + + // Digits + switch { + default: + return false + + case s[0] == '0': + s = s[1:] + + case '1' <= s[0] && s[0] <= '9': + s = s[1:] + for len(s) > 0 && '0' <= s[0] && s[0] <= '9' { + s = s[1:] + } + } + + // . followed by 1 or more digits. + if len(s) >= 2 && s[0] == '.' && '0' <= s[1] && s[1] <= '9' { + s = s[2:] + for len(s) > 0 && '0' <= s[0] && s[0] <= '9' { + s = s[1:] + } + } + + // e or E followed by an optional - or + and + // 1 or more digits. + if len(s) >= 2 && (s[0] == 'e' || s[0] == 'E') { + s = s[1:] + if s[0] == '+' || s[0] == '-' { + s = s[1:] + if s == "" { + return false + } + } + for len(s) > 0 && '0' <= s[0] && s[0] <= '9' { + s = s[1:] + } + } + + // Make sure we are at the end. + return s == "" +} + func interfaceEncoder(e *encodeState, v reflect.Value, opts encOpts) { if v.IsNil() { e.WriteString("null") From c5f142fa9fb6e00b0877ba4b6e9ab77d22ac50cd Mon Sep 17 00:00:00 2001 From: LE Manh Cuong Date: Wed, 8 May 2019 17:02:23 +0700 Subject: [PATCH 250/255] cmd/compile: optimize bitset tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The assembly output for x & c == c, where c is power of 2: MOVQ "".set+8(SP), AX ANDQ $8, AX CMPQ AX, $8 SETEQ "".~r2+24(SP) With optimization using bitset: MOVQ "".set+8(SP), AX BTL $3, AX SETCS "".~r2+24(SP) output less than 1 instruction. However, there is no speed improvement: name old time/op new time/op delta AllBitSet-8 0.35ns ± 0% 0.35ns ± 0% ~ (all equal) Fixes #31904 Change-Id: I5dca4e410bf45716ed2145e3473979ec997e35d4 Reviewed-on: https://go-review.googlesource.com/c/go/+/175957 Run-TryBot: Brad Fitzpatrick TryBot-Result: Gobot Gobot Reviewed-by: Keith Randall --- .../compile/internal/ssa/gen/generic.rules | 6 + .../compile/internal/ssa/rewritegeneric.go | 1455 ++++++++++++++++- test/codegen/bits.go | 12 + 3 files changed, 1468 insertions(+), 5 deletions(-) diff --git a/src/cmd/compile/internal/ssa/gen/generic.rules b/src/cmd/compile/internal/ssa/gen/generic.rules index 454eb498c6..347bf2a00f 100644 --- a/src/cmd/compile/internal/ssa/gen/generic.rules +++ b/src/cmd/compile/internal/ssa/gen/generic.rules @@ -1733,6 +1733,12 @@ (Eq(8|16|32|64) s:(Sub(8|16|32|64) x y) (Const(8|16|32|64) [0])) && s.Uses == 1 -> (Eq(8|16|32|64) x y) (Neq(8|16|32|64) s:(Sub(8|16|32|64) x y) (Const(8|16|32|64) [0])) && s.Uses == 1 -> (Neq(8|16|32|64) x y) +// Optimize bitsets +(Eq(8|16|32|64) (And(8|16|32|64) x (Const(8|16|32|64) [y])) (Const(8|16|32|64) [y])) && isPowerOfTwo(y) + -> (Neq(8|16|32|64) (And(8|16|32|64) x (Const(8|16|32|64) [y])) (Const(8|16|32|64) [0])) +(Neq(8|16|32|64) (And(8|16|32|64) x (Const(8|16|32|64) [y])) (Const(8|16|32|64) [y])) && isPowerOfTwo(y) + -> (Eq(8|16|32|64) (And(8|16|32|64) x (Const(8|16|32|64) [y])) (Const(8|16|32|64) [0])) + // Reassociate expressions involving // constants such that constants come first, // exposing obvious constant-folding opportunities. diff --git a/src/cmd/compile/internal/ssa/rewritegeneric.go b/src/cmd/compile/internal/ssa/rewritegeneric.go index db0b1749a8..6b0cd05047 100644 --- a/src/cmd/compile/internal/ssa/rewritegeneric.go +++ b/src/cmd/compile/internal/ssa/rewritegeneric.go @@ -89,7 +89,7 @@ func rewriteValuegeneric(v *Value) bool { case OpDiv8u: return rewriteValuegeneric_OpDiv8u_0(v) case OpEq16: - return rewriteValuegeneric_OpEq16_0(v) || rewriteValuegeneric_OpEq16_10(v) || rewriteValuegeneric_OpEq16_20(v) || rewriteValuegeneric_OpEq16_30(v) || rewriteValuegeneric_OpEq16_40(v) || rewriteValuegeneric_OpEq16_50(v) + return rewriteValuegeneric_OpEq16_0(v) || rewriteValuegeneric_OpEq16_10(v) || rewriteValuegeneric_OpEq16_20(v) || rewriteValuegeneric_OpEq16_30(v) || rewriteValuegeneric_OpEq16_40(v) || rewriteValuegeneric_OpEq16_50(v) || rewriteValuegeneric_OpEq16_60(v) case OpEq32: return rewriteValuegeneric_OpEq32_0(v) || rewriteValuegeneric_OpEq32_10(v) || rewriteValuegeneric_OpEq32_20(v) || rewriteValuegeneric_OpEq32_30(v) || rewriteValuegeneric_OpEq32_40(v) || rewriteValuegeneric_OpEq32_50(v) || rewriteValuegeneric_OpEq32_60(v) || rewriteValuegeneric_OpEq32_70(v) || rewriteValuegeneric_OpEq32_80(v) || rewriteValuegeneric_OpEq32_90(v) case OpEq32F: @@ -275,17 +275,17 @@ func rewriteValuegeneric(v *Value) bool { case OpNeg8: return rewriteValuegeneric_OpNeg8_0(v) case OpNeq16: - return rewriteValuegeneric_OpNeq16_0(v) + return rewriteValuegeneric_OpNeq16_0(v) || rewriteValuegeneric_OpNeq16_10(v) case OpNeq32: - return rewriteValuegeneric_OpNeq32_0(v) + return rewriteValuegeneric_OpNeq32_0(v) || rewriteValuegeneric_OpNeq32_10(v) case OpNeq32F: return rewriteValuegeneric_OpNeq32F_0(v) case OpNeq64: - return rewriteValuegeneric_OpNeq64_0(v) + return rewriteValuegeneric_OpNeq64_0(v) || rewriteValuegeneric_OpNeq64_10(v) case OpNeq64F: return rewriteValuegeneric_OpNeq64F_0(v) case OpNeq8: - return rewriteValuegeneric_OpNeq8_0(v) + return rewriteValuegeneric_OpNeq8_0(v) || rewriteValuegeneric_OpNeq8_10(v) case OpNeqB: return rewriteValuegeneric_OpNeqB_0(v) case OpNeqInter: @@ -12716,6 +12716,188 @@ func rewriteValuegeneric_OpEq16_50(v *Value) bool { v.AddArg(y) return true } + // match: (Eq16 (And16 x (Const16 [y])) (Const16 [y])) + // cond: isPowerOfTwo(y) + // result: (Neq16 (And16 x (Const16 [y])) (Const16 [0])) + for { + _ = v.Args[1] + v_0 := v.Args[0] + if v_0.Op != OpAnd16 { + break + } + t := v_0.Type + _ = v_0.Args[1] + x := v_0.Args[0] + v_0_1 := v_0.Args[1] + if v_0_1.Op != OpConst16 { + break + } + if v_0_1.Type != t { + break + } + y := v_0_1.AuxInt + v_1 := v.Args[1] + if v_1.Op != OpConst16 { + break + } + if v_1.Type != t { + break + } + if v_1.AuxInt != y { + break + } + if !(isPowerOfTwo(y)) { + break + } + v.reset(OpNeq16) + v0 := b.NewValue0(v.Pos, OpAnd16, t) + v0.AddArg(x) + v1 := b.NewValue0(v.Pos, OpConst16, t) + v1.AuxInt = y + v0.AddArg(v1) + v.AddArg(v0) + v2 := b.NewValue0(v.Pos, OpConst16, t) + v2.AuxInt = 0 + v.AddArg(v2) + return true + } + // match: (Eq16 (And16 (Const16 [y]) x) (Const16 [y])) + // cond: isPowerOfTwo(y) + // result: (Neq16 (And16 x (Const16 [y])) (Const16 [0])) + for { + _ = v.Args[1] + v_0 := v.Args[0] + if v_0.Op != OpAnd16 { + break + } + t := v_0.Type + x := v_0.Args[1] + v_0_0 := v_0.Args[0] + if v_0_0.Op != OpConst16 { + break + } + if v_0_0.Type != t { + break + } + y := v_0_0.AuxInt + v_1 := v.Args[1] + if v_1.Op != OpConst16 { + break + } + if v_1.Type != t { + break + } + if v_1.AuxInt != y { + break + } + if !(isPowerOfTwo(y)) { + break + } + v.reset(OpNeq16) + v0 := b.NewValue0(v.Pos, OpAnd16, t) + v0.AddArg(x) + v1 := b.NewValue0(v.Pos, OpConst16, t) + v1.AuxInt = y + v0.AddArg(v1) + v.AddArg(v0) + v2 := b.NewValue0(v.Pos, OpConst16, t) + v2.AuxInt = 0 + v.AddArg(v2) + return true + } + // match: (Eq16 (Const16 [y]) (And16 x (Const16 [y]))) + // cond: isPowerOfTwo(y) + // result: (Neq16 (And16 x (Const16 [y])) (Const16 [0])) + for { + _ = v.Args[1] + v_0 := v.Args[0] + if v_0.Op != OpConst16 { + break + } + t := v_0.Type + y := v_0.AuxInt + v_1 := v.Args[1] + if v_1.Op != OpAnd16 { + break + } + if v_1.Type != t { + break + } + _ = v_1.Args[1] + x := v_1.Args[0] + v_1_1 := v_1.Args[1] + if v_1_1.Op != OpConst16 { + break + } + if v_1_1.Type != t { + break + } + if v_1_1.AuxInt != y { + break + } + if !(isPowerOfTwo(y)) { + break + } + v.reset(OpNeq16) + v0 := b.NewValue0(v.Pos, OpAnd16, t) + v0.AddArg(x) + v1 := b.NewValue0(v.Pos, OpConst16, t) + v1.AuxInt = y + v0.AddArg(v1) + v.AddArg(v0) + v2 := b.NewValue0(v.Pos, OpConst16, t) + v2.AuxInt = 0 + v.AddArg(v2) + return true + } + return false +} +func rewriteValuegeneric_OpEq16_60(v *Value) bool { + b := v.Block + // match: (Eq16 (Const16 [y]) (And16 (Const16 [y]) x)) + // cond: isPowerOfTwo(y) + // result: (Neq16 (And16 x (Const16 [y])) (Const16 [0])) + for { + _ = v.Args[1] + v_0 := v.Args[0] + if v_0.Op != OpConst16 { + break + } + t := v_0.Type + y := v_0.AuxInt + v_1 := v.Args[1] + if v_1.Op != OpAnd16 { + break + } + if v_1.Type != t { + break + } + x := v_1.Args[1] + v_1_0 := v_1.Args[0] + if v_1_0.Op != OpConst16 { + break + } + if v_1_0.Type != t { + break + } + if v_1_0.AuxInt != y { + break + } + if !(isPowerOfTwo(y)) { + break + } + v.reset(OpNeq16) + v0 := b.NewValue0(v.Pos, OpAnd16, t) + v0.AddArg(x) + v1 := b.NewValue0(v.Pos, OpConst16, t) + v1.AuxInt = y + v0.AddArg(v1) + v.AddArg(v0) + v2 := b.NewValue0(v.Pos, OpConst16, t) + v2.AuxInt = 0 + v.AddArg(v2) + return true + } return false } func rewriteValuegeneric_OpEq32_0(v *Value) bool { @@ -19708,6 +19890,184 @@ func rewriteValuegeneric_OpEq32_90(v *Value) bool { v.AddArg(y) return true } + // match: (Eq32 (And32 x (Const32 [y])) (Const32 [y])) + // cond: isPowerOfTwo(y) + // result: (Neq32 (And32 x (Const32 [y])) (Const32 [0])) + for { + _ = v.Args[1] + v_0 := v.Args[0] + if v_0.Op != OpAnd32 { + break + } + t := v_0.Type + _ = v_0.Args[1] + x := v_0.Args[0] + v_0_1 := v_0.Args[1] + if v_0_1.Op != OpConst32 { + break + } + if v_0_1.Type != t { + break + } + y := v_0_1.AuxInt + v_1 := v.Args[1] + if v_1.Op != OpConst32 { + break + } + if v_1.Type != t { + break + } + if v_1.AuxInt != y { + break + } + if !(isPowerOfTwo(y)) { + break + } + v.reset(OpNeq32) + v0 := b.NewValue0(v.Pos, OpAnd32, t) + v0.AddArg(x) + v1 := b.NewValue0(v.Pos, OpConst32, t) + v1.AuxInt = y + v0.AddArg(v1) + v.AddArg(v0) + v2 := b.NewValue0(v.Pos, OpConst32, t) + v2.AuxInt = 0 + v.AddArg(v2) + return true + } + // match: (Eq32 (And32 (Const32 [y]) x) (Const32 [y])) + // cond: isPowerOfTwo(y) + // result: (Neq32 (And32 x (Const32 [y])) (Const32 [0])) + for { + _ = v.Args[1] + v_0 := v.Args[0] + if v_0.Op != OpAnd32 { + break + } + t := v_0.Type + x := v_0.Args[1] + v_0_0 := v_0.Args[0] + if v_0_0.Op != OpConst32 { + break + } + if v_0_0.Type != t { + break + } + y := v_0_0.AuxInt + v_1 := v.Args[1] + if v_1.Op != OpConst32 { + break + } + if v_1.Type != t { + break + } + if v_1.AuxInt != y { + break + } + if !(isPowerOfTwo(y)) { + break + } + v.reset(OpNeq32) + v0 := b.NewValue0(v.Pos, OpAnd32, t) + v0.AddArg(x) + v1 := b.NewValue0(v.Pos, OpConst32, t) + v1.AuxInt = y + v0.AddArg(v1) + v.AddArg(v0) + v2 := b.NewValue0(v.Pos, OpConst32, t) + v2.AuxInt = 0 + v.AddArg(v2) + return true + } + // match: (Eq32 (Const32 [y]) (And32 x (Const32 [y]))) + // cond: isPowerOfTwo(y) + // result: (Neq32 (And32 x (Const32 [y])) (Const32 [0])) + for { + _ = v.Args[1] + v_0 := v.Args[0] + if v_0.Op != OpConst32 { + break + } + t := v_0.Type + y := v_0.AuxInt + v_1 := v.Args[1] + if v_1.Op != OpAnd32 { + break + } + if v_1.Type != t { + break + } + _ = v_1.Args[1] + x := v_1.Args[0] + v_1_1 := v_1.Args[1] + if v_1_1.Op != OpConst32 { + break + } + if v_1_1.Type != t { + break + } + if v_1_1.AuxInt != y { + break + } + if !(isPowerOfTwo(y)) { + break + } + v.reset(OpNeq32) + v0 := b.NewValue0(v.Pos, OpAnd32, t) + v0.AddArg(x) + v1 := b.NewValue0(v.Pos, OpConst32, t) + v1.AuxInt = y + v0.AddArg(v1) + v.AddArg(v0) + v2 := b.NewValue0(v.Pos, OpConst32, t) + v2.AuxInt = 0 + v.AddArg(v2) + return true + } + // match: (Eq32 (Const32 [y]) (And32 (Const32 [y]) x)) + // cond: isPowerOfTwo(y) + // result: (Neq32 (And32 x (Const32 [y])) (Const32 [0])) + for { + _ = v.Args[1] + v_0 := v.Args[0] + if v_0.Op != OpConst32 { + break + } + t := v_0.Type + y := v_0.AuxInt + v_1 := v.Args[1] + if v_1.Op != OpAnd32 { + break + } + if v_1.Type != t { + break + } + x := v_1.Args[1] + v_1_0 := v_1.Args[0] + if v_1_0.Op != OpConst32 { + break + } + if v_1_0.Type != t { + break + } + if v_1_0.AuxInt != y { + break + } + if !(isPowerOfTwo(y)) { + break + } + v.reset(OpNeq32) + v0 := b.NewValue0(v.Pos, OpAnd32, t) + v0.AddArg(x) + v1 := b.NewValue0(v.Pos, OpConst32, t) + v1.AuxInt = y + v0.AddArg(v1) + v.AddArg(v0) + v2 := b.NewValue0(v.Pos, OpConst32, t) + v2.AuxInt = 0 + v.AddArg(v2) + return true + } return false } func rewriteValuegeneric_OpEq32F_0(v *Value) bool { @@ -24058,6 +24418,7 @@ func rewriteValuegeneric_OpEq64_50(v *Value) bool { return false } func rewriteValuegeneric_OpEq64_60(v *Value) bool { + b := v.Block // match: (Eq64 (Const64 [0]) s:(Sub64 x y)) // cond: s.Uses == 1 // result: (Eq64 x y) @@ -24084,6 +24445,184 @@ func rewriteValuegeneric_OpEq64_60(v *Value) bool { v.AddArg(y) return true } + // match: (Eq64 (And64 x (Const64 [y])) (Const64 [y])) + // cond: isPowerOfTwo(y) + // result: (Neq64 (And64 x (Const64 [y])) (Const64 [0])) + for { + _ = v.Args[1] + v_0 := v.Args[0] + if v_0.Op != OpAnd64 { + break + } + t := v_0.Type + _ = v_0.Args[1] + x := v_0.Args[0] + v_0_1 := v_0.Args[1] + if v_0_1.Op != OpConst64 { + break + } + if v_0_1.Type != t { + break + } + y := v_0_1.AuxInt + v_1 := v.Args[1] + if v_1.Op != OpConst64 { + break + } + if v_1.Type != t { + break + } + if v_1.AuxInt != y { + break + } + if !(isPowerOfTwo(y)) { + break + } + v.reset(OpNeq64) + v0 := b.NewValue0(v.Pos, OpAnd64, t) + v0.AddArg(x) + v1 := b.NewValue0(v.Pos, OpConst64, t) + v1.AuxInt = y + v0.AddArg(v1) + v.AddArg(v0) + v2 := b.NewValue0(v.Pos, OpConst64, t) + v2.AuxInt = 0 + v.AddArg(v2) + return true + } + // match: (Eq64 (And64 (Const64 [y]) x) (Const64 [y])) + // cond: isPowerOfTwo(y) + // result: (Neq64 (And64 x (Const64 [y])) (Const64 [0])) + for { + _ = v.Args[1] + v_0 := v.Args[0] + if v_0.Op != OpAnd64 { + break + } + t := v_0.Type + x := v_0.Args[1] + v_0_0 := v_0.Args[0] + if v_0_0.Op != OpConst64 { + break + } + if v_0_0.Type != t { + break + } + y := v_0_0.AuxInt + v_1 := v.Args[1] + if v_1.Op != OpConst64 { + break + } + if v_1.Type != t { + break + } + if v_1.AuxInt != y { + break + } + if !(isPowerOfTwo(y)) { + break + } + v.reset(OpNeq64) + v0 := b.NewValue0(v.Pos, OpAnd64, t) + v0.AddArg(x) + v1 := b.NewValue0(v.Pos, OpConst64, t) + v1.AuxInt = y + v0.AddArg(v1) + v.AddArg(v0) + v2 := b.NewValue0(v.Pos, OpConst64, t) + v2.AuxInt = 0 + v.AddArg(v2) + return true + } + // match: (Eq64 (Const64 [y]) (And64 x (Const64 [y]))) + // cond: isPowerOfTwo(y) + // result: (Neq64 (And64 x (Const64 [y])) (Const64 [0])) + for { + _ = v.Args[1] + v_0 := v.Args[0] + if v_0.Op != OpConst64 { + break + } + t := v_0.Type + y := v_0.AuxInt + v_1 := v.Args[1] + if v_1.Op != OpAnd64 { + break + } + if v_1.Type != t { + break + } + _ = v_1.Args[1] + x := v_1.Args[0] + v_1_1 := v_1.Args[1] + if v_1_1.Op != OpConst64 { + break + } + if v_1_1.Type != t { + break + } + if v_1_1.AuxInt != y { + break + } + if !(isPowerOfTwo(y)) { + break + } + v.reset(OpNeq64) + v0 := b.NewValue0(v.Pos, OpAnd64, t) + v0.AddArg(x) + v1 := b.NewValue0(v.Pos, OpConst64, t) + v1.AuxInt = y + v0.AddArg(v1) + v.AddArg(v0) + v2 := b.NewValue0(v.Pos, OpConst64, t) + v2.AuxInt = 0 + v.AddArg(v2) + return true + } + // match: (Eq64 (Const64 [y]) (And64 (Const64 [y]) x)) + // cond: isPowerOfTwo(y) + // result: (Neq64 (And64 x (Const64 [y])) (Const64 [0])) + for { + _ = v.Args[1] + v_0 := v.Args[0] + if v_0.Op != OpConst64 { + break + } + t := v_0.Type + y := v_0.AuxInt + v_1 := v.Args[1] + if v_1.Op != OpAnd64 { + break + } + if v_1.Type != t { + break + } + x := v_1.Args[1] + v_1_0 := v_1.Args[0] + if v_1_0.Op != OpConst64 { + break + } + if v_1_0.Type != t { + break + } + if v_1_0.AuxInt != y { + break + } + if !(isPowerOfTwo(y)) { + break + } + v.reset(OpNeq64) + v0 := b.NewValue0(v.Pos, OpAnd64, t) + v0.AddArg(x) + v1 := b.NewValue0(v.Pos, OpConst64, t) + v1.AuxInt = y + v0.AddArg(v1) + v.AddArg(v0) + v2 := b.NewValue0(v.Pos, OpConst64, t) + v2.AuxInt = 0 + v.AddArg(v2) + return true + } return false } func rewriteValuegeneric_OpEq64F_0(v *Value) bool { @@ -26177,6 +26716,184 @@ func rewriteValuegeneric_OpEq8_30(v *Value) bool { v.AddArg(y) return true } + // match: (Eq8 (And8 x (Const8 [y])) (Const8 [y])) + // cond: isPowerOfTwo(y) + // result: (Neq8 (And8 x (Const8 [y])) (Const8 [0])) + for { + _ = v.Args[1] + v_0 := v.Args[0] + if v_0.Op != OpAnd8 { + break + } + t := v_0.Type + _ = v_0.Args[1] + x := v_0.Args[0] + v_0_1 := v_0.Args[1] + if v_0_1.Op != OpConst8 { + break + } + if v_0_1.Type != t { + break + } + y := v_0_1.AuxInt + v_1 := v.Args[1] + if v_1.Op != OpConst8 { + break + } + if v_1.Type != t { + break + } + if v_1.AuxInt != y { + break + } + if !(isPowerOfTwo(y)) { + break + } + v.reset(OpNeq8) + v0 := b.NewValue0(v.Pos, OpAnd8, t) + v0.AddArg(x) + v1 := b.NewValue0(v.Pos, OpConst8, t) + v1.AuxInt = y + v0.AddArg(v1) + v.AddArg(v0) + v2 := b.NewValue0(v.Pos, OpConst8, t) + v2.AuxInt = 0 + v.AddArg(v2) + return true + } + // match: (Eq8 (And8 (Const8 [y]) x) (Const8 [y])) + // cond: isPowerOfTwo(y) + // result: (Neq8 (And8 x (Const8 [y])) (Const8 [0])) + for { + _ = v.Args[1] + v_0 := v.Args[0] + if v_0.Op != OpAnd8 { + break + } + t := v_0.Type + x := v_0.Args[1] + v_0_0 := v_0.Args[0] + if v_0_0.Op != OpConst8 { + break + } + if v_0_0.Type != t { + break + } + y := v_0_0.AuxInt + v_1 := v.Args[1] + if v_1.Op != OpConst8 { + break + } + if v_1.Type != t { + break + } + if v_1.AuxInt != y { + break + } + if !(isPowerOfTwo(y)) { + break + } + v.reset(OpNeq8) + v0 := b.NewValue0(v.Pos, OpAnd8, t) + v0.AddArg(x) + v1 := b.NewValue0(v.Pos, OpConst8, t) + v1.AuxInt = y + v0.AddArg(v1) + v.AddArg(v0) + v2 := b.NewValue0(v.Pos, OpConst8, t) + v2.AuxInt = 0 + v.AddArg(v2) + return true + } + // match: (Eq8 (Const8 [y]) (And8 x (Const8 [y]))) + // cond: isPowerOfTwo(y) + // result: (Neq8 (And8 x (Const8 [y])) (Const8 [0])) + for { + _ = v.Args[1] + v_0 := v.Args[0] + if v_0.Op != OpConst8 { + break + } + t := v_0.Type + y := v_0.AuxInt + v_1 := v.Args[1] + if v_1.Op != OpAnd8 { + break + } + if v_1.Type != t { + break + } + _ = v_1.Args[1] + x := v_1.Args[0] + v_1_1 := v_1.Args[1] + if v_1_1.Op != OpConst8 { + break + } + if v_1_1.Type != t { + break + } + if v_1_1.AuxInt != y { + break + } + if !(isPowerOfTwo(y)) { + break + } + v.reset(OpNeq8) + v0 := b.NewValue0(v.Pos, OpAnd8, t) + v0.AddArg(x) + v1 := b.NewValue0(v.Pos, OpConst8, t) + v1.AuxInt = y + v0.AddArg(v1) + v.AddArg(v0) + v2 := b.NewValue0(v.Pos, OpConst8, t) + v2.AuxInt = 0 + v.AddArg(v2) + return true + } + // match: (Eq8 (Const8 [y]) (And8 (Const8 [y]) x)) + // cond: isPowerOfTwo(y) + // result: (Neq8 (And8 x (Const8 [y])) (Const8 [0])) + for { + _ = v.Args[1] + v_0 := v.Args[0] + if v_0.Op != OpConst8 { + break + } + t := v_0.Type + y := v_0.AuxInt + v_1 := v.Args[1] + if v_1.Op != OpAnd8 { + break + } + if v_1.Type != t { + break + } + x := v_1.Args[1] + v_1_0 := v_1.Args[0] + if v_1_0.Op != OpConst8 { + break + } + if v_1_0.Type != t { + break + } + if v_1_0.AuxInt != y { + break + } + if !(isPowerOfTwo(y)) { + break + } + v.reset(OpNeq8) + v0 := b.NewValue0(v.Pos, OpAnd8, t) + v0.AddArg(x) + v1 := b.NewValue0(v.Pos, OpConst8, t) + v1.AuxInt = y + v0.AddArg(v1) + v.AddArg(v0) + v2 := b.NewValue0(v.Pos, OpConst8, t) + v2.AuxInt = 0 + v.AddArg(v2) + return true + } return false } func rewriteValuegeneric_OpEqB_0(v *Value) bool { @@ -35976,6 +36693,188 @@ func rewriteValuegeneric_OpNeq16_0(v *Value) bool { v.AddArg(y) return true } + // match: (Neq16 (And16 x (Const16 [y])) (Const16 [y])) + // cond: isPowerOfTwo(y) + // result: (Eq16 (And16 x (Const16 [y])) (Const16 [0])) + for { + _ = v.Args[1] + v_0 := v.Args[0] + if v_0.Op != OpAnd16 { + break + } + t := v_0.Type + _ = v_0.Args[1] + x := v_0.Args[0] + v_0_1 := v_0.Args[1] + if v_0_1.Op != OpConst16 { + break + } + if v_0_1.Type != t { + break + } + y := v_0_1.AuxInt + v_1 := v.Args[1] + if v_1.Op != OpConst16 { + break + } + if v_1.Type != t { + break + } + if v_1.AuxInt != y { + break + } + if !(isPowerOfTwo(y)) { + break + } + v.reset(OpEq16) + v0 := b.NewValue0(v.Pos, OpAnd16, t) + v0.AddArg(x) + v1 := b.NewValue0(v.Pos, OpConst16, t) + v1.AuxInt = y + v0.AddArg(v1) + v.AddArg(v0) + v2 := b.NewValue0(v.Pos, OpConst16, t) + v2.AuxInt = 0 + v.AddArg(v2) + return true + } + return false +} +func rewriteValuegeneric_OpNeq16_10(v *Value) bool { + b := v.Block + // match: (Neq16 (And16 (Const16 [y]) x) (Const16 [y])) + // cond: isPowerOfTwo(y) + // result: (Eq16 (And16 x (Const16 [y])) (Const16 [0])) + for { + _ = v.Args[1] + v_0 := v.Args[0] + if v_0.Op != OpAnd16 { + break + } + t := v_0.Type + x := v_0.Args[1] + v_0_0 := v_0.Args[0] + if v_0_0.Op != OpConst16 { + break + } + if v_0_0.Type != t { + break + } + y := v_0_0.AuxInt + v_1 := v.Args[1] + if v_1.Op != OpConst16 { + break + } + if v_1.Type != t { + break + } + if v_1.AuxInt != y { + break + } + if !(isPowerOfTwo(y)) { + break + } + v.reset(OpEq16) + v0 := b.NewValue0(v.Pos, OpAnd16, t) + v0.AddArg(x) + v1 := b.NewValue0(v.Pos, OpConst16, t) + v1.AuxInt = y + v0.AddArg(v1) + v.AddArg(v0) + v2 := b.NewValue0(v.Pos, OpConst16, t) + v2.AuxInt = 0 + v.AddArg(v2) + return true + } + // match: (Neq16 (Const16 [y]) (And16 x (Const16 [y]))) + // cond: isPowerOfTwo(y) + // result: (Eq16 (And16 x (Const16 [y])) (Const16 [0])) + for { + _ = v.Args[1] + v_0 := v.Args[0] + if v_0.Op != OpConst16 { + break + } + t := v_0.Type + y := v_0.AuxInt + v_1 := v.Args[1] + if v_1.Op != OpAnd16 { + break + } + if v_1.Type != t { + break + } + _ = v_1.Args[1] + x := v_1.Args[0] + v_1_1 := v_1.Args[1] + if v_1_1.Op != OpConst16 { + break + } + if v_1_1.Type != t { + break + } + if v_1_1.AuxInt != y { + break + } + if !(isPowerOfTwo(y)) { + break + } + v.reset(OpEq16) + v0 := b.NewValue0(v.Pos, OpAnd16, t) + v0.AddArg(x) + v1 := b.NewValue0(v.Pos, OpConst16, t) + v1.AuxInt = y + v0.AddArg(v1) + v.AddArg(v0) + v2 := b.NewValue0(v.Pos, OpConst16, t) + v2.AuxInt = 0 + v.AddArg(v2) + return true + } + // match: (Neq16 (Const16 [y]) (And16 (Const16 [y]) x)) + // cond: isPowerOfTwo(y) + // result: (Eq16 (And16 x (Const16 [y])) (Const16 [0])) + for { + _ = v.Args[1] + v_0 := v.Args[0] + if v_0.Op != OpConst16 { + break + } + t := v_0.Type + y := v_0.AuxInt + v_1 := v.Args[1] + if v_1.Op != OpAnd16 { + break + } + if v_1.Type != t { + break + } + x := v_1.Args[1] + v_1_0 := v_1.Args[0] + if v_1_0.Op != OpConst16 { + break + } + if v_1_0.Type != t { + break + } + if v_1_0.AuxInt != y { + break + } + if !(isPowerOfTwo(y)) { + break + } + v.reset(OpEq16) + v0 := b.NewValue0(v.Pos, OpAnd16, t) + v0.AddArg(x) + v1 := b.NewValue0(v.Pos, OpConst16, t) + v1.AuxInt = y + v0.AddArg(v1) + v.AddArg(v0) + v2 := b.NewValue0(v.Pos, OpConst16, t) + v2.AuxInt = 0 + v.AddArg(v2) + return true + } return false } func rewriteValuegeneric_OpNeq32_0(v *Value) bool { @@ -36208,6 +37107,188 @@ func rewriteValuegeneric_OpNeq32_0(v *Value) bool { v.AddArg(y) return true } + // match: (Neq32 (And32 x (Const32 [y])) (Const32 [y])) + // cond: isPowerOfTwo(y) + // result: (Eq32 (And32 x (Const32 [y])) (Const32 [0])) + for { + _ = v.Args[1] + v_0 := v.Args[0] + if v_0.Op != OpAnd32 { + break + } + t := v_0.Type + _ = v_0.Args[1] + x := v_0.Args[0] + v_0_1 := v_0.Args[1] + if v_0_1.Op != OpConst32 { + break + } + if v_0_1.Type != t { + break + } + y := v_0_1.AuxInt + v_1 := v.Args[1] + if v_1.Op != OpConst32 { + break + } + if v_1.Type != t { + break + } + if v_1.AuxInt != y { + break + } + if !(isPowerOfTwo(y)) { + break + } + v.reset(OpEq32) + v0 := b.NewValue0(v.Pos, OpAnd32, t) + v0.AddArg(x) + v1 := b.NewValue0(v.Pos, OpConst32, t) + v1.AuxInt = y + v0.AddArg(v1) + v.AddArg(v0) + v2 := b.NewValue0(v.Pos, OpConst32, t) + v2.AuxInt = 0 + v.AddArg(v2) + return true + } + return false +} +func rewriteValuegeneric_OpNeq32_10(v *Value) bool { + b := v.Block + // match: (Neq32 (And32 (Const32 [y]) x) (Const32 [y])) + // cond: isPowerOfTwo(y) + // result: (Eq32 (And32 x (Const32 [y])) (Const32 [0])) + for { + _ = v.Args[1] + v_0 := v.Args[0] + if v_0.Op != OpAnd32 { + break + } + t := v_0.Type + x := v_0.Args[1] + v_0_0 := v_0.Args[0] + if v_0_0.Op != OpConst32 { + break + } + if v_0_0.Type != t { + break + } + y := v_0_0.AuxInt + v_1 := v.Args[1] + if v_1.Op != OpConst32 { + break + } + if v_1.Type != t { + break + } + if v_1.AuxInt != y { + break + } + if !(isPowerOfTwo(y)) { + break + } + v.reset(OpEq32) + v0 := b.NewValue0(v.Pos, OpAnd32, t) + v0.AddArg(x) + v1 := b.NewValue0(v.Pos, OpConst32, t) + v1.AuxInt = y + v0.AddArg(v1) + v.AddArg(v0) + v2 := b.NewValue0(v.Pos, OpConst32, t) + v2.AuxInt = 0 + v.AddArg(v2) + return true + } + // match: (Neq32 (Const32 [y]) (And32 x (Const32 [y]))) + // cond: isPowerOfTwo(y) + // result: (Eq32 (And32 x (Const32 [y])) (Const32 [0])) + for { + _ = v.Args[1] + v_0 := v.Args[0] + if v_0.Op != OpConst32 { + break + } + t := v_0.Type + y := v_0.AuxInt + v_1 := v.Args[1] + if v_1.Op != OpAnd32 { + break + } + if v_1.Type != t { + break + } + _ = v_1.Args[1] + x := v_1.Args[0] + v_1_1 := v_1.Args[1] + if v_1_1.Op != OpConst32 { + break + } + if v_1_1.Type != t { + break + } + if v_1_1.AuxInt != y { + break + } + if !(isPowerOfTwo(y)) { + break + } + v.reset(OpEq32) + v0 := b.NewValue0(v.Pos, OpAnd32, t) + v0.AddArg(x) + v1 := b.NewValue0(v.Pos, OpConst32, t) + v1.AuxInt = y + v0.AddArg(v1) + v.AddArg(v0) + v2 := b.NewValue0(v.Pos, OpConst32, t) + v2.AuxInt = 0 + v.AddArg(v2) + return true + } + // match: (Neq32 (Const32 [y]) (And32 (Const32 [y]) x)) + // cond: isPowerOfTwo(y) + // result: (Eq32 (And32 x (Const32 [y])) (Const32 [0])) + for { + _ = v.Args[1] + v_0 := v.Args[0] + if v_0.Op != OpConst32 { + break + } + t := v_0.Type + y := v_0.AuxInt + v_1 := v.Args[1] + if v_1.Op != OpAnd32 { + break + } + if v_1.Type != t { + break + } + x := v_1.Args[1] + v_1_0 := v_1.Args[0] + if v_1_0.Op != OpConst32 { + break + } + if v_1_0.Type != t { + break + } + if v_1_0.AuxInt != y { + break + } + if !(isPowerOfTwo(y)) { + break + } + v.reset(OpEq32) + v0 := b.NewValue0(v.Pos, OpAnd32, t) + v0.AddArg(x) + v1 := b.NewValue0(v.Pos, OpConst32, t) + v1.AuxInt = y + v0.AddArg(v1) + v.AddArg(v0) + v2 := b.NewValue0(v.Pos, OpConst32, t) + v2.AuxInt = 0 + v.AddArg(v2) + return true + } return false } func rewriteValuegeneric_OpNeq32F_0(v *Value) bool { @@ -36481,6 +37562,188 @@ func rewriteValuegeneric_OpNeq64_0(v *Value) bool { v.AddArg(y) return true } + // match: (Neq64 (And64 x (Const64 [y])) (Const64 [y])) + // cond: isPowerOfTwo(y) + // result: (Eq64 (And64 x (Const64 [y])) (Const64 [0])) + for { + _ = v.Args[1] + v_0 := v.Args[0] + if v_0.Op != OpAnd64 { + break + } + t := v_0.Type + _ = v_0.Args[1] + x := v_0.Args[0] + v_0_1 := v_0.Args[1] + if v_0_1.Op != OpConst64 { + break + } + if v_0_1.Type != t { + break + } + y := v_0_1.AuxInt + v_1 := v.Args[1] + if v_1.Op != OpConst64 { + break + } + if v_1.Type != t { + break + } + if v_1.AuxInt != y { + break + } + if !(isPowerOfTwo(y)) { + break + } + v.reset(OpEq64) + v0 := b.NewValue0(v.Pos, OpAnd64, t) + v0.AddArg(x) + v1 := b.NewValue0(v.Pos, OpConst64, t) + v1.AuxInt = y + v0.AddArg(v1) + v.AddArg(v0) + v2 := b.NewValue0(v.Pos, OpConst64, t) + v2.AuxInt = 0 + v.AddArg(v2) + return true + } + return false +} +func rewriteValuegeneric_OpNeq64_10(v *Value) bool { + b := v.Block + // match: (Neq64 (And64 (Const64 [y]) x) (Const64 [y])) + // cond: isPowerOfTwo(y) + // result: (Eq64 (And64 x (Const64 [y])) (Const64 [0])) + for { + _ = v.Args[1] + v_0 := v.Args[0] + if v_0.Op != OpAnd64 { + break + } + t := v_0.Type + x := v_0.Args[1] + v_0_0 := v_0.Args[0] + if v_0_0.Op != OpConst64 { + break + } + if v_0_0.Type != t { + break + } + y := v_0_0.AuxInt + v_1 := v.Args[1] + if v_1.Op != OpConst64 { + break + } + if v_1.Type != t { + break + } + if v_1.AuxInt != y { + break + } + if !(isPowerOfTwo(y)) { + break + } + v.reset(OpEq64) + v0 := b.NewValue0(v.Pos, OpAnd64, t) + v0.AddArg(x) + v1 := b.NewValue0(v.Pos, OpConst64, t) + v1.AuxInt = y + v0.AddArg(v1) + v.AddArg(v0) + v2 := b.NewValue0(v.Pos, OpConst64, t) + v2.AuxInt = 0 + v.AddArg(v2) + return true + } + // match: (Neq64 (Const64 [y]) (And64 x (Const64 [y]))) + // cond: isPowerOfTwo(y) + // result: (Eq64 (And64 x (Const64 [y])) (Const64 [0])) + for { + _ = v.Args[1] + v_0 := v.Args[0] + if v_0.Op != OpConst64 { + break + } + t := v_0.Type + y := v_0.AuxInt + v_1 := v.Args[1] + if v_1.Op != OpAnd64 { + break + } + if v_1.Type != t { + break + } + _ = v_1.Args[1] + x := v_1.Args[0] + v_1_1 := v_1.Args[1] + if v_1_1.Op != OpConst64 { + break + } + if v_1_1.Type != t { + break + } + if v_1_1.AuxInt != y { + break + } + if !(isPowerOfTwo(y)) { + break + } + v.reset(OpEq64) + v0 := b.NewValue0(v.Pos, OpAnd64, t) + v0.AddArg(x) + v1 := b.NewValue0(v.Pos, OpConst64, t) + v1.AuxInt = y + v0.AddArg(v1) + v.AddArg(v0) + v2 := b.NewValue0(v.Pos, OpConst64, t) + v2.AuxInt = 0 + v.AddArg(v2) + return true + } + // match: (Neq64 (Const64 [y]) (And64 (Const64 [y]) x)) + // cond: isPowerOfTwo(y) + // result: (Eq64 (And64 x (Const64 [y])) (Const64 [0])) + for { + _ = v.Args[1] + v_0 := v.Args[0] + if v_0.Op != OpConst64 { + break + } + t := v_0.Type + y := v_0.AuxInt + v_1 := v.Args[1] + if v_1.Op != OpAnd64 { + break + } + if v_1.Type != t { + break + } + x := v_1.Args[1] + v_1_0 := v_1.Args[0] + if v_1_0.Op != OpConst64 { + break + } + if v_1_0.Type != t { + break + } + if v_1_0.AuxInt != y { + break + } + if !(isPowerOfTwo(y)) { + break + } + v.reset(OpEq64) + v0 := b.NewValue0(v.Pos, OpAnd64, t) + v0.AddArg(x) + v1 := b.NewValue0(v.Pos, OpConst64, t) + v1.AuxInt = y + v0.AddArg(v1) + v.AddArg(v0) + v2 := b.NewValue0(v.Pos, OpConst64, t) + v2.AuxInt = 0 + v.AddArg(v2) + return true + } return false } func rewriteValuegeneric_OpNeq64F_0(v *Value) bool { @@ -36754,6 +38017,188 @@ func rewriteValuegeneric_OpNeq8_0(v *Value) bool { v.AddArg(y) return true } + // match: (Neq8 (And8 x (Const8 [y])) (Const8 [y])) + // cond: isPowerOfTwo(y) + // result: (Eq8 (And8 x (Const8 [y])) (Const8 [0])) + for { + _ = v.Args[1] + v_0 := v.Args[0] + if v_0.Op != OpAnd8 { + break + } + t := v_0.Type + _ = v_0.Args[1] + x := v_0.Args[0] + v_0_1 := v_0.Args[1] + if v_0_1.Op != OpConst8 { + break + } + if v_0_1.Type != t { + break + } + y := v_0_1.AuxInt + v_1 := v.Args[1] + if v_1.Op != OpConst8 { + break + } + if v_1.Type != t { + break + } + if v_1.AuxInt != y { + break + } + if !(isPowerOfTwo(y)) { + break + } + v.reset(OpEq8) + v0 := b.NewValue0(v.Pos, OpAnd8, t) + v0.AddArg(x) + v1 := b.NewValue0(v.Pos, OpConst8, t) + v1.AuxInt = y + v0.AddArg(v1) + v.AddArg(v0) + v2 := b.NewValue0(v.Pos, OpConst8, t) + v2.AuxInt = 0 + v.AddArg(v2) + return true + } + return false +} +func rewriteValuegeneric_OpNeq8_10(v *Value) bool { + b := v.Block + // match: (Neq8 (And8 (Const8 [y]) x) (Const8 [y])) + // cond: isPowerOfTwo(y) + // result: (Eq8 (And8 x (Const8 [y])) (Const8 [0])) + for { + _ = v.Args[1] + v_0 := v.Args[0] + if v_0.Op != OpAnd8 { + break + } + t := v_0.Type + x := v_0.Args[1] + v_0_0 := v_0.Args[0] + if v_0_0.Op != OpConst8 { + break + } + if v_0_0.Type != t { + break + } + y := v_0_0.AuxInt + v_1 := v.Args[1] + if v_1.Op != OpConst8 { + break + } + if v_1.Type != t { + break + } + if v_1.AuxInt != y { + break + } + if !(isPowerOfTwo(y)) { + break + } + v.reset(OpEq8) + v0 := b.NewValue0(v.Pos, OpAnd8, t) + v0.AddArg(x) + v1 := b.NewValue0(v.Pos, OpConst8, t) + v1.AuxInt = y + v0.AddArg(v1) + v.AddArg(v0) + v2 := b.NewValue0(v.Pos, OpConst8, t) + v2.AuxInt = 0 + v.AddArg(v2) + return true + } + // match: (Neq8 (Const8 [y]) (And8 x (Const8 [y]))) + // cond: isPowerOfTwo(y) + // result: (Eq8 (And8 x (Const8 [y])) (Const8 [0])) + for { + _ = v.Args[1] + v_0 := v.Args[0] + if v_0.Op != OpConst8 { + break + } + t := v_0.Type + y := v_0.AuxInt + v_1 := v.Args[1] + if v_1.Op != OpAnd8 { + break + } + if v_1.Type != t { + break + } + _ = v_1.Args[1] + x := v_1.Args[0] + v_1_1 := v_1.Args[1] + if v_1_1.Op != OpConst8 { + break + } + if v_1_1.Type != t { + break + } + if v_1_1.AuxInt != y { + break + } + if !(isPowerOfTwo(y)) { + break + } + v.reset(OpEq8) + v0 := b.NewValue0(v.Pos, OpAnd8, t) + v0.AddArg(x) + v1 := b.NewValue0(v.Pos, OpConst8, t) + v1.AuxInt = y + v0.AddArg(v1) + v.AddArg(v0) + v2 := b.NewValue0(v.Pos, OpConst8, t) + v2.AuxInt = 0 + v.AddArg(v2) + return true + } + // match: (Neq8 (Const8 [y]) (And8 (Const8 [y]) x)) + // cond: isPowerOfTwo(y) + // result: (Eq8 (And8 x (Const8 [y])) (Const8 [0])) + for { + _ = v.Args[1] + v_0 := v.Args[0] + if v_0.Op != OpConst8 { + break + } + t := v_0.Type + y := v_0.AuxInt + v_1 := v.Args[1] + if v_1.Op != OpAnd8 { + break + } + if v_1.Type != t { + break + } + x := v_1.Args[1] + v_1_0 := v_1.Args[0] + if v_1_0.Op != OpConst8 { + break + } + if v_1_0.Type != t { + break + } + if v_1_0.AuxInt != y { + break + } + if !(isPowerOfTwo(y)) { + break + } + v.reset(OpEq8) + v0 := b.NewValue0(v.Pos, OpAnd8, t) + v0.AddArg(x) + v1 := b.NewValue0(v.Pos, OpConst8, t) + v1.AuxInt = y + v0.AddArg(v1) + v.AddArg(v0) + v2 := b.NewValue0(v.Pos, OpConst8, t) + v2.AuxInt = 0 + v.AddArg(v2) + return true + } return false } func rewriteValuegeneric_OpNeqB_0(v *Value) bool { diff --git a/test/codegen/bits.go b/test/codegen/bits.go index 65d57c8f9f..18f9daf7cf 100644 --- a/test/codegen/bits.go +++ b/test/codegen/bits.go @@ -314,3 +314,15 @@ func op_orn(x, y uint32) uint32 { // arm64:`ORN\t`,-`ORR` return x | ^y } + +// check bitsets +func bitSetPowerOf2Test(x int) bool { + // amd64:"BTL\t[$]3" + return x&8 == 8 +} + +func bitSetTest(x int) bool { + // amd64:"ANDQ\t[$]9, AX" + // amd64:"CMPQ\tAX, [$]9" + return x&9 == 9 +} From 94bf9a8d4ad479e5a9dd57b3cb8e682e841d58d4 Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Mon, 26 Aug 2019 16:44:36 -0400 Subject: [PATCH 251/255] net/http: fix wantConnQueue memory leaks in Transport I'm trying to keep the code changes minimal for backporting to Go 1.13, so it is still possible for a handful of entries to leak, but the leaks are now O(1) instead of O(N) in the steady state. Longer-term, I think it would be a good idea to coalesce idleMu with connsPerHostMu and clear entries out of both queues as soon as their goroutines are done waiting. Fixes #33849 Fixes #33850 Change-Id: Ia66bc64671eb1014369f2d3a01debfc023b44281 Reviewed-on: https://go-review.googlesource.com/c/go/+/191964 Run-TryBot: Bryan C. Mills TryBot-Result: Gobot Gobot Reviewed-by: Brad Fitzpatrick --- src/net/http/transport.go | 28 +++++- src/net/http/transport_test.go | 170 +++++++++++++++++++++++++++++++++ 2 files changed, 197 insertions(+), 1 deletion(-) diff --git a/src/net/http/transport.go b/src/net/http/transport.go index f9d9f4451c..ee279877e0 100644 --- a/src/net/http/transport.go +++ b/src/net/http/transport.go @@ -953,6 +953,7 @@ func (t *Transport) queueForIdleConn(w *wantConn) (delivered bool) { t.idleConnWait = make(map[connectMethodKey]wantConnQueue) } q := t.idleConnWait[w.key] + q.cleanFront() q.pushBack(w) t.idleConnWait[w.key] = q return false @@ -1137,7 +1138,7 @@ func (q *wantConnQueue) pushBack(w *wantConn) { q.tail = append(q.tail, w) } -// popFront removes and returns the w at the front of the queue. +// popFront removes and returns the wantConn at the front of the queue. func (q *wantConnQueue) popFront() *wantConn { if q.headPos >= len(q.head) { if len(q.tail) == 0 { @@ -1152,6 +1153,30 @@ func (q *wantConnQueue) popFront() *wantConn { return w } +// peekFront returns the wantConn at the front of the queue without removing it. +func (q *wantConnQueue) peekFront() *wantConn { + if q.headPos < len(q.head) { + return q.head[q.headPos] + } + if len(q.tail) > 0 { + return q.tail[0] + } + return nil +} + +// cleanFront pops any wantConns that are no longer waiting from the head of the +// queue, reporting whether any were popped. +func (q *wantConnQueue) cleanFront() (cleaned bool) { + for { + w := q.peekFront() + if w == nil || w.waiting() { + return cleaned + } + q.popFront() + cleaned = true + } +} + // getConn dials and creates a new persistConn to the target as // specified in the connectMethod. This includes doing a proxy CONNECT // and/or setting up TLS. If this doesn't return an error, the persistConn @@ -1261,6 +1286,7 @@ func (t *Transport) queueForDial(w *wantConn) { t.connsPerHostWait = make(map[connectMethodKey]wantConnQueue) } q := t.connsPerHostWait[w.key] + q.cleanFront() q.pushBack(w) t.connsPerHostWait[w.key] = q } diff --git a/src/net/http/transport_test.go b/src/net/http/transport_test.go index 1a6f631ea2..23afff5d84 100644 --- a/src/net/http/transport_test.go +++ b/src/net/http/transport_test.go @@ -1658,6 +1658,176 @@ func TestTransportPersistConnLeakShortBody(t *testing.T) { } } +// A countedConn is a net.Conn that decrements an atomic counter when finalized. +type countedConn struct { + net.Conn +} + +// A countingDialer dials connections and counts the number that remain reachable. +type countingDialer struct { + dialer net.Dialer + mu sync.Mutex + total, live int64 +} + +func (d *countingDialer) DialContext(ctx context.Context, network, address string) (net.Conn, error) { + conn, err := d.dialer.DialContext(ctx, network, address) + if err != nil { + return nil, err + } + + counted := new(countedConn) + counted.Conn = conn + + d.mu.Lock() + defer d.mu.Unlock() + d.total++ + d.live++ + + runtime.SetFinalizer(counted, d.decrement) + return counted, nil +} + +func (d *countingDialer) decrement(*countedConn) { + d.mu.Lock() + defer d.mu.Unlock() + d.live-- +} + +func (d *countingDialer) Read() (total, live int64) { + d.mu.Lock() + defer d.mu.Unlock() + return d.total, d.live +} + +func TestTransportPersistConnLeakNeverIdle(t *testing.T) { + defer afterTest(t) + + ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) { + // Close every connection so that it cannot be kept alive. + conn, _, err := w.(Hijacker).Hijack() + if err != nil { + t.Errorf("Hijack failed unexpectedly: %v", err) + return + } + conn.Close() + })) + defer ts.Close() + + var d countingDialer + c := ts.Client() + c.Transport.(*Transport).DialContext = d.DialContext + + body := []byte("Hello") + for i := 0; ; i++ { + total, live := d.Read() + if live < total { + break + } + if i >= 1<<12 { + t.Fatalf("Count of live client net.Conns (%d) not lower than total (%d) after %d Do / GC iterations.", live, total, i) + } + + req, err := NewRequest("POST", ts.URL, bytes.NewReader(body)) + if err != nil { + t.Fatal(err) + } + _, err = c.Do(req) + if err == nil { + t.Fatal("expected broken connection") + } + + runtime.GC() + } +} + +type countedContext struct { + context.Context +} + +type contextCounter struct { + mu sync.Mutex + live int64 +} + +func (cc *contextCounter) Track(ctx context.Context) context.Context { + counted := new(countedContext) + counted.Context = ctx + cc.mu.Lock() + defer cc.mu.Unlock() + cc.live++ + runtime.SetFinalizer(counted, cc.decrement) + return counted +} + +func (cc *contextCounter) decrement(*countedContext) { + cc.mu.Lock() + defer cc.mu.Unlock() + cc.live-- +} + +func (cc *contextCounter) Read() (live int64) { + cc.mu.Lock() + defer cc.mu.Unlock() + return cc.live +} + +func TestTransportPersistConnContextLeakMaxConnsPerHost(t *testing.T) { + defer afterTest(t) + + ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, r *Request) { + runtime.Gosched() + w.WriteHeader(StatusOK) + })) + defer ts.Close() + + c := ts.Client() + c.Transport.(*Transport).MaxConnsPerHost = 1 + + ctx := context.Background() + body := []byte("Hello") + doPosts := func(cc *contextCounter) { + var wg sync.WaitGroup + for n := 64; n > 0; n-- { + wg.Add(1) + go func() { + defer wg.Done() + + ctx := cc.Track(ctx) + req, err := NewRequest("POST", ts.URL, bytes.NewReader(body)) + if err != nil { + t.Error(err) + } + + _, err = c.Do(req.WithContext(ctx)) + if err != nil { + t.Errorf("Do failed with error: %v", err) + } + }() + } + wg.Wait() + } + + var initialCC contextCounter + doPosts(&initialCC) + + // flushCC exists only to put pressure on the GC to finalize the initialCC + // contexts: the flushCC allocations should eventually displace the initialCC + // allocations. + var flushCC contextCounter + for i := 0; ; i++ { + live := initialCC.Read() + if live == 0 { + break + } + if i >= 100 { + t.Fatalf("%d Contexts still not finalized after %d GC cycles.", live, i) + } + doPosts(&flushCC) + runtime.GC() + } +} + // This used to crash; https://golang.org/issue/3266 func TestTransportIdleConnCrash(t *testing.T) { defer afterTest(t) From c1df5187d007f205c31d96c8cb9c173a634a102a Mon Sep 17 00:00:00 2001 From: Matthew Dempsky Date: Thu, 15 Aug 2019 13:09:00 -0700 Subject: [PATCH 252/255] runtime: simplify some pointer conversions Use efaceOf to safely convert from *interface{} to *_eface, and to make it clearer what the pointer arithmetic is computing. Incidentally, remove a spurious unsafe.Pointer->*uint8->unsafe.Pointer round trip conversion in newproc. No behavior change. Change-Id: I2ad9d791d35d8bd008ef43b03dad1589713c5fd4 Reviewed-on: https://go-review.googlesource.com/c/go/+/190457 Run-TryBot: Matthew Dempsky TryBot-Result: Gobot Gobot Reviewed-by: Keith Randall --- src/runtime/proc.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/runtime/proc.go b/src/runtime/proc.go index 93d329d15e..df98783385 100644 --- a/src/runtime/proc.go +++ b/src/runtime/proc.go @@ -413,7 +413,7 @@ func releaseSudog(s *sudog) { // use the result as an address at which to start executing code. //go:nosplit func funcPC(f interface{}) uintptr { - return **(**uintptr)(add(unsafe.Pointer(&f), sys.PtrSize)) + return *(*uintptr)(efaceOf(&f).data) } // called from assembly @@ -3253,14 +3253,14 @@ func newproc(siz int32, fn *funcval) { gp := getg() pc := getcallerpc() systemstack(func() { - newproc1(fn, (*uint8)(argp), siz, gp, pc) + newproc1(fn, argp, siz, gp, pc) }) } // Create a new g running fn with narg bytes of arguments starting // at argp. callerpc is the address of the go statement that created // this. The new g is put on the queue of g's waiting to run. -func newproc1(fn *funcval, argp *uint8, narg int32, callergp *g, callerpc uintptr) { +func newproc1(fn *funcval, argp unsafe.Pointer, narg int32, callergp *g, callerpc uintptr) { _g_ := getg() if fn == nil { @@ -3305,7 +3305,7 @@ func newproc1(fn *funcval, argp *uint8, narg int32, callergp *g, callerpc uintpt spArg += sys.MinFrameSize } if narg > 0 { - memmove(unsafe.Pointer(spArg), unsafe.Pointer(argp), uintptr(narg)) + memmove(unsafe.Pointer(spArg), argp, uintptr(narg)) // This is a stack-to-stack copy. If write barriers // are enabled and the source stack is grey (the // destination is always black), then perform a From c302785df941f10a4350f895e0c48886b582e609 Mon Sep 17 00:00:00 2001 From: Matthew Dempsky Date: Mon, 5 Aug 2019 13:12:01 -0700 Subject: [PATCH 253/255] cmd/compile: fix "previous" position info for duplicate switch cases Because the Node AST represents references to declared objects (e.g., variables, packages, types, constants) by directly pointing to the referred object, we don't have use-position info for these objects. For switch statements with duplicate cases, we report back where the first duplicate value appeared. However, due to the AST representation, if the value was a declared constant, we mistakenly reported the constant declaration position as the previous case position. This CL reports back against the 'case' keyword's position instead, if there's no more precise information available to us. It also refactors code to emit the same "previous at" error message for duplicate values in map literals. Thanks to Emmanuel Odeke for the test case. Fixes #33460. Change-Id: Iec69542ccd4aad594dde8df02d1b880a422c5622 Reviewed-on: https://go-review.googlesource.com/c/go/+/188901 Reviewed-by: Robert Griesemer Reviewed-by: Emmanuel Odeke Run-TryBot: Emmanuel Odeke TryBot-Result: Gobot Gobot --- src/cmd/compile/internal/gc/const.go | 48 +++++++++++++++++------ src/cmd/compile/internal/gc/subr.go | 49 ++++++++++++++---------- src/cmd/compile/internal/gc/swt.go | 15 +------- src/cmd/compile/internal/gc/typecheck.go | 4 +- test/fixedbugs/issue33460.go | 37 ++++++++++++++++++ 5 files changed, 103 insertions(+), 50 deletions(-) create mode 100644 test/fixedbugs/issue33460.go diff --git a/src/cmd/compile/internal/gc/const.go b/src/cmd/compile/internal/gc/const.go index 4ed881bc07..504f8f0ec3 100644 --- a/src/cmd/compile/internal/gc/const.go +++ b/src/cmd/compile/internal/gc/const.go @@ -6,6 +6,8 @@ package gc import ( "cmd/compile/internal/types" + "cmd/internal/src" + "fmt" "math/big" "strings" ) @@ -1397,7 +1399,7 @@ func hascallchan(n *Node) bool { // A constSet represents a set of Go constant expressions. type constSet struct { - m map[constSetKey]*Node + m map[constSetKey]src.XPos } type constSetKey struct { @@ -1405,20 +1407,22 @@ type constSetKey struct { val interface{} } -// add adds constant expressions to s. If a constant expression of -// equal value and identical type has already been added, then that -// type expression is returned. Otherwise, add returns nil. +// add adds constant expression n to s. If a constant expression of +// equal value and identical type has already been added, then add +// reports an error about the duplicate value. // -// add also returns nil if n is not a Go constant expression. +// pos provides position information for where expression n occured +// (in case n does not have its own position information). what and +// where are used in the error message. // // n must not be an untyped constant. -func (s *constSet) add(n *Node) *Node { +func (s *constSet) add(pos src.XPos, n *Node, what, where string) { if n.Op == OCONVIFACE && n.Implicit() { n = n.Left } if !n.isGoConst() { - return nil + return } if n.Type.IsUntyped() { Fatalf("%v is untyped", n) @@ -1448,12 +1452,32 @@ func (s *constSet) add(n *Node) *Node { } k := constSetKey{typ, n.Val().Interface()} + if hasUniquePos(n) { + pos = n.Pos + } + if s.m == nil { - s.m = make(map[constSetKey]*Node) + s.m = make(map[constSetKey]src.XPos) } - old, dup := s.m[k] - if !dup { - s.m[k] = n + + if prevPos, isDup := s.m[k]; isDup { + yyerrorl(pos, "duplicate %s %s in %s\n\tprevious %s at %v", + what, nodeAndVal(n), where, + what, linestr(prevPos)) + } else { + s.m[k] = pos } - return old +} + +// nodeAndVal reports both an expression and its constant value, if +// the latter is non-obvious. +// +// TODO(mdempsky): This could probably be a fmt.go flag. +func nodeAndVal(n *Node) string { + show := n.String() + val := n.Val().Interface() + if s := fmt.Sprintf("%#v", val); show != s { + show += " (value " + s + ")" + } + return show } diff --git a/src/cmd/compile/internal/gc/subr.go b/src/cmd/compile/internal/gc/subr.go index f3ec21c7cb..42f47bb8c1 100644 --- a/src/cmd/compile/internal/gc/subr.go +++ b/src/cmd/compile/internal/gc/subr.go @@ -194,30 +194,37 @@ func Fatalf(fmt_ string, args ...interface{}) { errorexit() } -func setlineno(n *Node) src.XPos { - lno := lineno - if n != nil { - switch n.Op { - case ONAME, OPACK: - break - - case OLITERAL, OTYPE: - if n.Sym != nil { - break - } - fallthrough - - default: - lineno = n.Pos - if !lineno.IsKnown() { - if Debug['K'] != 0 { - Warn("setlineno: unknown position (line 0)") - } - lineno = lno - } +// hasUniquePos reports whether n has a unique position that can be +// used for reporting error messages. +// +// It's primarily used to distinguish references to named objects, +// whose Pos will point back to their declaration position rather than +// their usage position. +func hasUniquePos(n *Node) bool { + switch n.Op { + case ONAME, OPACK: + return false + case OLITERAL, OTYPE: + if n.Sym != nil { + return false } } + if !n.Pos.IsKnown() { + if Debug['K'] != 0 { + Warn("setlineno: unknown position (line 0)") + } + return false + } + + return true +} + +func setlineno(n *Node) src.XPos { + lno := lineno + if n != nil && hasUniquePos(n) { + lineno = n.Pos + } return lno } diff --git a/src/cmd/compile/internal/gc/swt.go b/src/cmd/compile/internal/gc/swt.go index 6a41885954..1436e29bae 100644 --- a/src/cmd/compile/internal/gc/swt.go +++ b/src/cmd/compile/internal/gc/swt.go @@ -6,7 +6,6 @@ package gc import ( "cmd/compile/internal/types" - "fmt" "sort" ) @@ -641,23 +640,11 @@ func checkDupExprCases(exprname *Node, clauses []*Node) { continue } - if prev := cs.add(n); prev != nil { - yyerrorl(ncase.Pos, "duplicate case %s in switch\n\tprevious case at %v", - nodeAndVal(n), prev.Line()) - } + cs.add(ncase.Pos, n, "case", "switch") } } } -func nodeAndVal(n *Node) string { - show := n.String() - val := n.Val().Interface() - if s := fmt.Sprintf("%#v", val); show != s { - show += " (value " + s + ")" - } - return show -} - // walk generates an AST that implements sw, // where sw is a type switch. // The AST is generally of the form of a linear diff --git a/src/cmd/compile/internal/gc/typecheck.go b/src/cmd/compile/internal/gc/typecheck.go index 4cb28d6100..0e680f54ae 100644 --- a/src/cmd/compile/internal/gc/typecheck.go +++ b/src/cmd/compile/internal/gc/typecheck.go @@ -2911,9 +2911,7 @@ func typecheckcomplit(n *Node) (res *Node) { r = typecheck(r, ctxExpr) r = defaultlit(r, t.Key()) l.Left = assignconv(r, t.Key(), "map key") - if cs.add(l.Left) != nil { - yyerror("duplicate key %v in map literal", l.Left) - } + cs.add(lineno, l.Left, "key", "map literal") r = l.Right pushtype(r, t.Elem()) diff --git a/test/fixedbugs/issue33460.go b/test/fixedbugs/issue33460.go new file mode 100644 index 0000000000..1061d3e746 --- /dev/null +++ b/test/fixedbugs/issue33460.go @@ -0,0 +1,37 @@ +// errorcheck + +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package p + +const ( + zero = iota + one + two + three +) + +const iii int = 0x3 + +func f(v int) { + switch v { + case zero, one: + case two, one: // ERROR "previous case at LINE-1" + + case three: + case 3: // ERROR "previous case at LINE-1" + case iii: // ERROR "previous case at LINE-2" + } +} + +const b = "b" + +var _ = map[string]int{ + "a": 0, + b: 1, + "a": 2, // ERROR "previous key at LINE-2" + "b": 3, // ERROR "previous key at LINE-2" + "b": 4, // ERROR "previous key at LINE-3" +} From 8f5353fd1c0598bf5c92d67ffe8cfa1424115694 Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Tue, 27 Aug 2019 15:36:21 -0400 Subject: [PATCH 254/255] cmd/go/internal/modload: fix swapped paths in error message Updates #33879 Change-Id: Ifc91490b1cb791fdf5ffe69ef81c0ec0e6cbecc3 Reviewed-on: https://go-review.googlesource.com/c/go/+/191997 Run-TryBot: Bryan C. Mills Reviewed-by: Alexander Rakoczy --- src/cmd/go/internal/modload/load.go | 2 +- .../mod/example.com_badchain_c_v1.1.0.txt | 2 +- .../go/testdata/script/mod_load_badchain.txt | 20 +++++++++---------- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/cmd/go/internal/modload/load.go b/src/cmd/go/internal/modload/load.go index 52b371e5a9..b50a084166 100644 --- a/src/cmd/go/internal/modload/load.go +++ b/src/cmd/go/internal/modload/load.go @@ -1140,7 +1140,7 @@ func (r *mvsReqs) required(mod module.Version) ([]module.Version, error) { if mpath := f.Module.Mod.Path; mpath != origPath && mpath != mod.Path { return nil, module.VersionError(mod, fmt.Errorf(`parsing go.mod: module declares its path as: %s - but was required as: %s`, mod.Path, mpath)) + but was required as: %s`, mpath, mod.Path)) } if f.Go != nil { r.versions.LoadOrStore(mod, f.Go.Version) diff --git a/src/cmd/go/testdata/mod/example.com_badchain_c_v1.1.0.txt b/src/cmd/go/testdata/mod/example.com_badchain_c_v1.1.0.txt index da19ebd9ec..36bc2c6726 100644 --- a/src/cmd/go/testdata/mod/example.com_badchain_c_v1.1.0.txt +++ b/src/cmd/go/testdata/mod/example.com_badchain_c_v1.1.0.txt @@ -1,7 +1,7 @@ example.com/badchain/c v1.1.0 -- .mod -- -module example.com/badchain/wrong +module badchain.example.com/c -- .info -- {"Version":"v1.1.0"} -- c.go -- diff --git a/src/cmd/go/testdata/script/mod_load_badchain.txt b/src/cmd/go/testdata/script/mod_load_badchain.txt index 559f411593..b97a2e6eab 100644 --- a/src/cmd/go/testdata/script/mod_load_badchain.txt +++ b/src/cmd/go/testdata/script/mod_load_badchain.txt @@ -58,28 +58,28 @@ func Test(t *testing.T) {} -- update-main-expected -- go get: example.com/badchain/c@v1.0.0 updating to example.com/badchain/c@v1.1.0: parsing go.mod: - module declares its path as: example.com/badchain/c - but was required as: example.com/badchain/wrong + module declares its path as: badchain.example.com/c + but was required as: example.com/badchain/c -- update-a-expected -- go get: example.com/badchain/a@v1.1.0 requires example.com/badchain/b@v1.1.0 requires example.com/badchain/c@v1.1.0: parsing go.mod: - module declares its path as: example.com/badchain/c - but was required as: example.com/badchain/wrong + module declares its path as: badchain.example.com/c + but was required as: example.com/badchain/c -- list-expected -- go: example.com/badchain/a@v1.1.0 requires example.com/badchain/b@v1.1.0 requires example.com/badchain/c@v1.1.0: parsing go.mod: - module declares its path as: example.com/badchain/c - but was required as: example.com/badchain/wrong + module declares its path as: badchain.example.com/c + but was required as: example.com/badchain/c -- list-missing-expected -- go: m/use imports example.com/badchain/c: example.com/badchain/c@v1.1.0: parsing go.mod: - module declares its path as: example.com/badchain/c - but was required as: example.com/badchain/wrong + module declares its path as: badchain.example.com/c + but was required as: example.com/badchain/c -- list-missing-test-expected -- go: m/testuse tested by m/testuse.test imports example.com/badchain/c: example.com/badchain/c@v1.1.0: parsing go.mod: - module declares its path as: example.com/badchain/c - but was required as: example.com/badchain/wrong + module declares its path as: badchain.example.com/c + but was required as: example.com/badchain/c From 2ebc3d8157fedba633ce90c5454827512734a793 Mon Sep 17 00:00:00 2001 From: Filippo Valsorda Date: Mon, 26 Aug 2019 16:18:24 -0400 Subject: [PATCH 255/255] crypto/tls: make SSLv3 again disabled by default It was mistakenly re-enabled in CL 146217. Fixes #33837 Change-Id: I8c0e1787114c6232df5888e51e355906622295bc Reviewed-on: https://go-review.googlesource.com/c/go/+/191877 Run-TryBot: Filippo Valsorda TryBot-Result: Gobot Gobot Reviewed-by: Dmitri Shuralyov --- doc/go1.13.html | 13 +++++++++---- src/crypto/tls/common.go | 4 ++++ src/crypto/tls/handshake_server_test.go | 14 ++++++++++++++ 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/doc/go1.13.html b/doc/go1.13.html index df8733ec72..220f34f31d 100644 --- a/doc/go1.13.html +++ b/doc/go1.13.html @@ -593,10 +593,15 @@ godoc

      Support for SSL version 3.0 (SSLv3) - is now deprecated and will be removed in Go 1.14. Note that SSLv3 - is cryptographically - broken, is already disabled by default in crypto/tls, - and was never supported by Go clients. + is now deprecated and will be removed in Go 1.14. Note that SSLv3 is the + cryptographically broken + protocol predating TLS. +

      + +

      + SSLv3 was always disabled by default, other than in Go 1.12, when it was + mistakenly enabled by default server-side. It is now again disabled by + default. (SSLv3 was never supported client-side.)

      diff --git a/src/crypto/tls/common.go b/src/crypto/tls/common.go index da1eae0800..ef0b385848 100644 --- a/src/crypto/tls/common.go +++ b/src/crypto/tls/common.go @@ -794,6 +794,10 @@ var supportedVersions = []uint16{ func (c *Config) supportedVersions(isClient bool) []uint16 { versions := make([]uint16, 0, len(supportedVersions)) for _, v := range supportedVersions { + // TLS 1.0 is the default minimum version. + if (c == nil || c.MinVersion == 0) && v < VersionTLS10 { + continue + } if c != nil && c.MinVersion != 0 && v < c.MinVersion { continue } diff --git a/src/crypto/tls/handshake_server_test.go b/src/crypto/tls/handshake_server_test.go index 22b126fa22..a9c1c08cbc 100644 --- a/src/crypto/tls/handshake_server_test.go +++ b/src/crypto/tls/handshake_server_test.go @@ -77,6 +77,20 @@ func TestRejectBadProtocolVersion(t *testing.T) { }, "unsupported versions") } +func TestSSLv3OptIn(t *testing.T) { + config := testConfig.Clone() + config.MinVersion = 0 + testClientHelloFailure(t, config, &clientHelloMsg{ + vers: VersionSSL30, + random: make([]byte, 32), + }, "unsupported versions") + testClientHelloFailure(t, config, &clientHelloMsg{ + vers: VersionTLS12, + supportedVersions: []uint16{VersionSSL30}, + random: make([]byte, 32), + }, "unsupported versions") +} + func TestNoSuiteOverlap(t *testing.T) { clientHello := &clientHelloMsg{ vers: VersionTLS10,

    $GOOS $GOARCH
    aix ppc64
    android 386
    android amd64
    android arm
    android arm64
    darwin 386
    freebsd arm
    illumos amd64
    js wasm
    linux 386
    openbsd arm
    openbsd arm64
    plan9 386
    plan9 amd64
    plan9 arm
    solaris amd64