[chore]: Bump golang.org/x/crypto from 0.36.0 to 0.37.0 (#3975)
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.36.0 to 0.37.0. - [Commits](https://github.com/golang/crypto/compare/v0.36.0...v0.37.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-version: 0.37.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This commit is contained in:
parent
4232d61782
commit
920e20c2d2
8
go.mod
8
go.mod
|
@ -82,12 +82,12 @@ require (
|
||||||
go.opentelemetry.io/otel/sdk/metric v1.34.0
|
go.opentelemetry.io/otel/sdk/metric v1.34.0
|
||||||
go.opentelemetry.io/otel/trace v1.35.0
|
go.opentelemetry.io/otel/trace v1.35.0
|
||||||
go.uber.org/automaxprocs v1.6.0
|
go.uber.org/automaxprocs v1.6.0
|
||||||
golang.org/x/crypto v0.36.0
|
golang.org/x/crypto v0.37.0
|
||||||
golang.org/x/image v0.24.0
|
golang.org/x/image v0.24.0
|
||||||
golang.org/x/net v0.38.0
|
golang.org/x/net v0.38.0
|
||||||
golang.org/x/oauth2 v0.27.0
|
golang.org/x/oauth2 v0.27.0
|
||||||
golang.org/x/sys v0.31.0
|
golang.org/x/sys v0.32.0
|
||||||
golang.org/x/text v0.23.0
|
golang.org/x/text v0.24.0
|
||||||
gopkg.in/mcuadros/go-syslog.v2 v2.3.0
|
gopkg.in/mcuadros/go-syslog.v2 v2.3.0
|
||||||
gopkg.in/yaml.v3 v3.0.1
|
gopkg.in/yaml.v3 v3.0.1
|
||||||
modernc.org/sqlite v0.0.0-00010101000000-000000000000
|
modernc.org/sqlite v0.0.0-00010101000000-000000000000
|
||||||
|
@ -213,7 +213,7 @@ require (
|
||||||
golang.org/x/arch v0.13.0 // indirect
|
golang.org/x/arch v0.13.0 // indirect
|
||||||
golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 // indirect
|
golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 // indirect
|
||||||
golang.org/x/mod v0.24.0 // indirect
|
golang.org/x/mod v0.24.0 // indirect
|
||||||
golang.org/x/sync v0.12.0 // indirect
|
golang.org/x/sync v0.13.0 // indirect
|
||||||
golang.org/x/tools v0.31.0 // indirect
|
golang.org/x/tools v0.31.0 // indirect
|
||||||
google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a // indirect
|
google.golang.org/genproto/googleapis/api v0.0.0-20250218202821-56aae31c358a // indirect
|
||||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a // indirect
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a // indirect
|
||||||
|
|
|
@ -525,8 +525,8 @@ golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliY
|
||||||
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
|
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
|
||||||
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
|
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
|
||||||
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
|
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
|
||||||
golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34=
|
golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE=
|
||||||
golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc=
|
golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc=
|
||||||
golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 h1:nDVHiLt8aIbd/VzvPWN6kSOPE7+F/fNFDSXLVYkE/Iw=
|
golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 h1:nDVHiLt8aIbd/VzvPWN6kSOPE7+F/fNFDSXLVYkE/Iw=
|
||||||
golang.org/x/exp v0.0.0-20250305212735-054e65f0b394/go.mod h1:sIifuuw/Yco/y6yb6+bDNfyeQ/MdPUy/hKEMYQV17cM=
|
golang.org/x/exp v0.0.0-20250305212735-054e65f0b394/go.mod h1:sIifuuw/Yco/y6yb6+bDNfyeQ/MdPUy/hKEMYQV17cM=
|
||||||
golang.org/x/image v0.24.0 h1:AN7zRgVsbvmTfNyqIbbOraYL8mSwcKncEj8ofjgzcMQ=
|
golang.org/x/image v0.24.0 h1:AN7zRgVsbvmTfNyqIbbOraYL8mSwcKncEj8ofjgzcMQ=
|
||||||
|
@ -565,8 +565,8 @@ golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
|
||||||
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||||
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||||
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||||
golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw=
|
golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610=
|
||||||
golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
|
golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
@ -583,8 +583,8 @@ golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
|
golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20=
|
||||||
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
||||||
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
|
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
|
||||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||||
|
@ -595,8 +595,8 @@ golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
|
||||||
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
|
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
|
||||||
golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
|
golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
|
||||||
golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
|
golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
|
||||||
golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y=
|
golang.org/x/term v0.31.0 h1:erwDkOK1Msy6offm1mOgvspSkslFnIGsFnxOKoufg3o=
|
||||||
golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g=
|
golang.org/x/term v0.31.0/go.mod h1:R4BeIy7D95HzImkxGkTW1UQTtP54tio2RyHz7PwK0aw=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||||
|
@ -607,8 +607,8 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
|
||||||
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||||
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||||
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
|
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
|
||||||
golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
|
golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0=
|
||||||
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
|
golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU=
|
||||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
|
|
|
@ -92,7 +92,7 @@ func jwsEncodeJSON(claimset interface{}, key crypto.Signer, kid KeyID, nonce, ur
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
phead := base64.RawURLEncoding.EncodeToString([]byte(phJSON))
|
phead := base64.RawURLEncoding.EncodeToString(phJSON)
|
||||||
var payload string
|
var payload string
|
||||||
if val, ok := claimset.(string); ok {
|
if val, ok := claimset.(string); ok {
|
||||||
payload = val
|
payload = val
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
//go:build (!amd64 && !ppc64le && !ppc64 && !s390x) || !gc || purego
|
//go:build (!amd64 && !loong64 && !ppc64le && !ppc64 && !s390x) || !gc || purego
|
||||||
|
|
||||||
package poly1305
|
package poly1305
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
//go:build gc && !purego
|
//go:build gc && !purego && (amd64 || loong64 || ppc64 || ppc64le)
|
||||||
|
|
||||||
package poly1305
|
package poly1305
|
||||||
|
|
|
@ -0,0 +1,123 @@
|
||||||
|
// Copyright 2025 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.
|
||||||
|
|
||||||
|
//go:build gc && !purego
|
||||||
|
|
||||||
|
// func update(state *macState, msg []byte)
|
||||||
|
TEXT ·update(SB), $0-32
|
||||||
|
MOVV state+0(FP), R4
|
||||||
|
MOVV msg_base+8(FP), R5
|
||||||
|
MOVV msg_len+16(FP), R6
|
||||||
|
|
||||||
|
MOVV $0x10, R7
|
||||||
|
|
||||||
|
MOVV (R4), R8 // h0
|
||||||
|
MOVV 8(R4), R9 // h1
|
||||||
|
MOVV 16(R4), R10 // h2
|
||||||
|
MOVV 24(R4), R11 // r0
|
||||||
|
MOVV 32(R4), R12 // r1
|
||||||
|
|
||||||
|
BLT R6, R7, bytes_between_0_and_15
|
||||||
|
|
||||||
|
loop:
|
||||||
|
MOVV (R5), R14 // msg[0:8]
|
||||||
|
MOVV 8(R5), R16 // msg[8:16]
|
||||||
|
ADDV R14, R8, R8 // h0 (x1 + y1 = z1', if z1' < x1 then z1' overflow)
|
||||||
|
ADDV R16, R9, R27
|
||||||
|
SGTU R14, R8, R24 // h0.carry
|
||||||
|
SGTU R9, R27, R28
|
||||||
|
ADDV R27, R24, R9 // h1
|
||||||
|
SGTU R27, R9, R24
|
||||||
|
OR R24, R28, R24 // h1.carry
|
||||||
|
ADDV $0x01, R24, R24
|
||||||
|
ADDV R10, R24, R10 // h2
|
||||||
|
|
||||||
|
ADDV $16, R5, R5 // msg = msg[16:]
|
||||||
|
|
||||||
|
multiply:
|
||||||
|
MULV R8, R11, R14 // h0r0.lo
|
||||||
|
MULHVU R8, R11, R15 // h0r0.hi
|
||||||
|
MULV R9, R11, R13 // h1r0.lo
|
||||||
|
MULHVU R9, R11, R16 // h1r0.hi
|
||||||
|
ADDV R13, R15, R15
|
||||||
|
SGTU R13, R15, R24
|
||||||
|
ADDV R24, R16, R16
|
||||||
|
MULV R10, R11, R25
|
||||||
|
ADDV R16, R25, R25
|
||||||
|
MULV R8, R12, R13 // h0r1.lo
|
||||||
|
MULHVU R8, R12, R16 // h0r1.hi
|
||||||
|
ADDV R13, R15, R15
|
||||||
|
SGTU R13, R15, R24
|
||||||
|
ADDV R24, R16, R16
|
||||||
|
MOVV R16, R8
|
||||||
|
MULV R10, R12, R26 // h2r1
|
||||||
|
MULV R9, R12, R13 // h1r1.lo
|
||||||
|
MULHVU R9, R12, R16 // h1r1.hi
|
||||||
|
ADDV R13, R25, R25
|
||||||
|
ADDV R16, R26, R27
|
||||||
|
SGTU R13, R25, R24
|
||||||
|
ADDV R27, R24, R26
|
||||||
|
ADDV R8, R25, R25
|
||||||
|
SGTU R8, R25, R24
|
||||||
|
ADDV R24, R26, R26
|
||||||
|
AND $3, R25, R10
|
||||||
|
AND $-4, R25, R17
|
||||||
|
ADDV R17, R14, R8
|
||||||
|
ADDV R26, R15, R27
|
||||||
|
SGTU R17, R8, R24
|
||||||
|
SGTU R26, R27, R28
|
||||||
|
ADDV R27, R24, R9
|
||||||
|
SGTU R27, R9, R24
|
||||||
|
OR R24, R28, R24
|
||||||
|
ADDV R24, R10, R10
|
||||||
|
SLLV $62, R26, R27
|
||||||
|
SRLV $2, R25, R28
|
||||||
|
SRLV $2, R26, R26
|
||||||
|
OR R27, R28, R25
|
||||||
|
ADDV R25, R8, R8
|
||||||
|
ADDV R26, R9, R27
|
||||||
|
SGTU R25, R8, R24
|
||||||
|
SGTU R26, R27, R28
|
||||||
|
ADDV R27, R24, R9
|
||||||
|
SGTU R27, R9, R24
|
||||||
|
OR R24, R28, R24
|
||||||
|
ADDV R24, R10, R10
|
||||||
|
|
||||||
|
SUBV $16, R6, R6
|
||||||
|
BGE R6, R7, loop
|
||||||
|
|
||||||
|
bytes_between_0_and_15:
|
||||||
|
BEQ R6, R0, done
|
||||||
|
MOVV $1, R14
|
||||||
|
XOR R15, R15
|
||||||
|
ADDV R6, R5, R5
|
||||||
|
|
||||||
|
flush_buffer:
|
||||||
|
MOVBU -1(R5), R25
|
||||||
|
SRLV $56, R14, R24
|
||||||
|
SLLV $8, R15, R28
|
||||||
|
SLLV $8, R14, R14
|
||||||
|
OR R24, R28, R15
|
||||||
|
XOR R25, R14, R14
|
||||||
|
SUBV $1, R6, R6
|
||||||
|
SUBV $1, R5, R5
|
||||||
|
BNE R6, R0, flush_buffer
|
||||||
|
|
||||||
|
ADDV R14, R8, R8
|
||||||
|
SGTU R14, R8, R24
|
||||||
|
ADDV R15, R9, R27
|
||||||
|
SGTU R15, R27, R28
|
||||||
|
ADDV R27, R24, R9
|
||||||
|
SGTU R27, R9, R24
|
||||||
|
OR R24, R28, R24
|
||||||
|
ADDV R10, R24, R10
|
||||||
|
|
||||||
|
MOVV $16, R6
|
||||||
|
JMP multiply
|
||||||
|
|
||||||
|
done:
|
||||||
|
MOVV R8, (R4)
|
||||||
|
MOVV R9, 8(R4)
|
||||||
|
MOVV R10, 16(R4)
|
||||||
|
RET
|
|
@ -1,47 +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.
|
|
||||||
|
|
||||||
//go:build gc && !purego && (ppc64 || ppc64le)
|
|
||||||
|
|
||||||
package poly1305
|
|
||||||
|
|
||||||
//go:noescape
|
|
||||||
func update(state *macState, msg []byte)
|
|
||||||
|
|
||||||
// mac is a wrapper for macGeneric that redirects calls that would have gone to
|
|
||||||
// updateGeneric to update.
|
|
||||||
//
|
|
||||||
// Its Write and Sum methods are otherwise identical to the macGeneric ones, but
|
|
||||||
// using function pointers would carry a major performance cost.
|
|
||||||
type mac struct{ macGeneric }
|
|
||||||
|
|
||||||
func (h *mac) Write(p []byte) (int, error) {
|
|
||||||
nn := len(p)
|
|
||||||
if h.offset > 0 {
|
|
||||||
n := copy(h.buffer[h.offset:], p)
|
|
||||||
if h.offset+n < TagSize {
|
|
||||||
h.offset += n
|
|
||||||
return nn, nil
|
|
||||||
}
|
|
||||||
p = p[n:]
|
|
||||||
h.offset = 0
|
|
||||||
update(&h.macState, h.buffer[:])
|
|
||||||
}
|
|
||||||
if n := len(p) - (len(p) % TagSize); n > 0 {
|
|
||||||
update(&h.macState, p[:n])
|
|
||||||
p = p[n:]
|
|
||||||
}
|
|
||||||
if len(p) > 0 {
|
|
||||||
h.offset += copy(h.buffer[h.offset:], p)
|
|
||||||
}
|
|
||||||
return nn, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (h *mac) Sum(out *[16]byte) {
|
|
||||||
state := h.macState
|
|
||||||
if h.offset > 0 {
|
|
||||||
update(&state, h.buffer[:h.offset])
|
|
||||||
}
|
|
||||||
finalize(out, &state.h, &state.s)
|
|
||||||
}
|
|
|
@ -5,7 +5,6 @@
|
||||||
package ssh
|
package ssh
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"crypto/rand"
|
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
@ -501,7 +500,7 @@ func (t *handshakeTransport) sendKexInit() error {
|
||||||
CompressionClientServer: supportedCompressions,
|
CompressionClientServer: supportedCompressions,
|
||||||
CompressionServerClient: supportedCompressions,
|
CompressionServerClient: supportedCompressions,
|
||||||
}
|
}
|
||||||
io.ReadFull(rand.Reader, msg.Cookie[:])
|
io.ReadFull(t.config.Rand, msg.Cookie[:])
|
||||||
|
|
||||||
// We mutate the KexAlgos slice, in order to add the kex-strict extension algorithm,
|
// We mutate the KexAlgos slice, in order to add the kex-strict extension algorithm,
|
||||||
// and possibly to add the ext-info extension algorithm. Since the slice may be the
|
// and possibly to add the ext-info extension algorithm. Since the slice may be the
|
||||||
|
|
|
@ -18,7 +18,7 @@ import (
|
||||||
type token struct{}
|
type token struct{}
|
||||||
|
|
||||||
// A Group is a collection of goroutines working on subtasks that are part of
|
// A Group is a collection of goroutines working on subtasks that are part of
|
||||||
// the same overall task.
|
// the same overall task. A Group should not be reused for different tasks.
|
||||||
//
|
//
|
||||||
// A zero Group is valid, has no limit on the number of active goroutines,
|
// A zero Group is valid, has no limit on the number of active goroutines,
|
||||||
// and does not cancel on error.
|
// and does not cancel on error.
|
||||||
|
@ -61,6 +61,7 @@ func (g *Group) Wait() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Go calls the given function in a new goroutine.
|
// Go calls the given function in a new goroutine.
|
||||||
|
// The first call to Go must happen before a Wait.
|
||||||
// It blocks until the new goroutine can be added without the number of
|
// It blocks until the new goroutine can be added without the number of
|
||||||
// active goroutines in the group exceeding the configured limit.
|
// active goroutines in the group exceeding the configured limit.
|
||||||
//
|
//
|
||||||
|
|
|
@ -149,6 +149,18 @@ var ARM struct {
|
||||||
_ CacheLinePad
|
_ CacheLinePad
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The booleans in Loong64 contain the correspondingly named cpu feature bit.
|
||||||
|
// The struct is padded to avoid false sharing.
|
||||||
|
var Loong64 struct {
|
||||||
|
_ CacheLinePad
|
||||||
|
HasLSX bool // support 128-bit vector extension
|
||||||
|
HasLASX bool // support 256-bit vector extension
|
||||||
|
HasCRC32 bool // support CRC instruction
|
||||||
|
HasLAM_BH bool // support AM{SWAP/ADD}[_DB].{B/H} instruction
|
||||||
|
HasLAMCAS bool // support AMCAS[_DB].{B/H/W/D} instruction
|
||||||
|
_ CacheLinePad
|
||||||
|
}
|
||||||
|
|
||||||
// MIPS64X contains the supported CPU features of the current mips64/mips64le
|
// MIPS64X contains the supported CPU features of the current mips64/mips64le
|
||||||
// platforms. If the current platform is not mips64/mips64le or the current
|
// platforms. If the current platform is not mips64/mips64le or the current
|
||||||
// operating system is not Linux then all feature flags are false.
|
// operating system is not Linux then all feature flags are false.
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
// Copyright 2025 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 cpu
|
||||||
|
|
||||||
|
// HWCAP bits. These are exposed by the Linux kernel.
|
||||||
|
const (
|
||||||
|
hwcap_LOONGARCH_LSX = 1 << 4
|
||||||
|
hwcap_LOONGARCH_LASX = 1 << 5
|
||||||
|
)
|
||||||
|
|
||||||
|
func doinit() {
|
||||||
|
// TODO: Features that require kernel support like LSX and LASX can
|
||||||
|
// be detected here once needed in std library or by the compiler.
|
||||||
|
Loong64.HasLSX = hwcIsSet(hwCap, hwcap_LOONGARCH_LSX)
|
||||||
|
Loong64.HasLASX = hwcIsSet(hwCap, hwcap_LOONGARCH_LASX)
|
||||||
|
}
|
||||||
|
|
||||||
|
func hwcIsSet(hwc uint, val uint) bool {
|
||||||
|
return hwc&val != 0
|
||||||
|
}
|
|
@ -2,7 +2,7 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
//go:build linux && !arm && !arm64 && !mips64 && !mips64le && !ppc64 && !ppc64le && !s390x && !riscv64
|
//go:build linux && !arm && !arm64 && !loong64 && !mips64 && !mips64le && !ppc64 && !ppc64le && !s390x && !riscv64
|
||||||
|
|
||||||
package cpu
|
package cpu
|
||||||
|
|
||||||
|
|
|
@ -8,5 +8,43 @@ package cpu
|
||||||
|
|
||||||
const cacheLineSize = 64
|
const cacheLineSize = 64
|
||||||
|
|
||||||
|
// Bit fields for CPUCFG registers, Related reference documents:
|
||||||
|
// https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN.html#_cpucfg
|
||||||
|
const (
|
||||||
|
// CPUCFG1 bits
|
||||||
|
cpucfg1_CRC32 = 1 << 25
|
||||||
|
|
||||||
|
// CPUCFG2 bits
|
||||||
|
cpucfg2_LAM_BH = 1 << 27
|
||||||
|
cpucfg2_LAMCAS = 1 << 28
|
||||||
|
)
|
||||||
|
|
||||||
func initOptions() {
|
func initOptions() {
|
||||||
|
options = []option{
|
||||||
|
{Name: "lsx", Feature: &Loong64.HasLSX},
|
||||||
|
{Name: "lasx", Feature: &Loong64.HasLASX},
|
||||||
|
{Name: "crc32", Feature: &Loong64.HasCRC32},
|
||||||
|
{Name: "lam_bh", Feature: &Loong64.HasLAM_BH},
|
||||||
|
{Name: "lamcas", Feature: &Loong64.HasLAMCAS},
|
||||||
|
}
|
||||||
|
|
||||||
|
// The CPUCFG data on Loong64 only reflects the hardware capabilities,
|
||||||
|
// not the kernel support status, so features such as LSX and LASX that
|
||||||
|
// require kernel support cannot be obtained from the CPUCFG data.
|
||||||
|
//
|
||||||
|
// These features only require hardware capability support and do not
|
||||||
|
// require kernel specific support, so they can be obtained directly
|
||||||
|
// through CPUCFG
|
||||||
|
cfg1 := get_cpucfg(1)
|
||||||
|
cfg2 := get_cpucfg(2)
|
||||||
|
|
||||||
|
Loong64.HasCRC32 = cfgIsSet(cfg1, cpucfg1_CRC32)
|
||||||
|
Loong64.HasLAMCAS = cfgIsSet(cfg2, cpucfg2_LAMCAS)
|
||||||
|
Loong64.HasLAM_BH = cfgIsSet(cfg2, cpucfg2_LAM_BH)
|
||||||
|
}
|
||||||
|
|
||||||
|
func get_cpucfg(reg uint32) uint32
|
||||||
|
|
||||||
|
func cfgIsSet(cfg uint32, val uint32) bool {
|
||||||
|
return cfg&val != 0
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
// Copyright 2025 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.
|
||||||
|
|
||||||
|
#include "textflag.h"
|
||||||
|
|
||||||
|
// func get_cpucfg(reg uint32) uint32
|
||||||
|
TEXT ·get_cpucfg(SB), NOSPLIT|NOFRAME, $0
|
||||||
|
MOVW reg+0(FP), R5
|
||||||
|
// CPUCFG R5, R4 = 0x00006ca4
|
||||||
|
WORD $0x00006ca4
|
||||||
|
MOVW R4, ret+8(FP)
|
||||||
|
RET
|
|
@ -13,7 +13,7 @@ import "strconv"
|
||||||
// https://golang.org/cl/209597.
|
// https://golang.org/cl/209597.
|
||||||
func parseRelease(rel string) (major, minor, patch int, ok bool) {
|
func parseRelease(rel string) (major, minor, patch int, ok bool) {
|
||||||
// Strip anything after a dash or plus.
|
// Strip anything after a dash or plus.
|
||||||
for i := 0; i < len(rel); i++ {
|
for i := range len(rel) {
|
||||||
if rel[i] == '-' || rel[i] == '+' {
|
if rel[i] == '-' || rel[i] == '+' {
|
||||||
rel = rel[:i]
|
rel = rel[:i]
|
||||||
break
|
break
|
||||||
|
@ -21,7 +21,7 @@ func parseRelease(rel string) (major, minor, patch int, ok bool) {
|
||||||
}
|
}
|
||||||
|
|
||||||
next := func() (int, bool) {
|
next := func() (int, bool) {
|
||||||
for i := 0; i < len(rel); i++ {
|
for i := range len(rel) {
|
||||||
if rel[i] == '.' {
|
if rel[i] == '.' {
|
||||||
ver, err := strconv.Atoi(rel[:i])
|
ver, err := strconv.Atoi(rel[:i])
|
||||||
rel = rel[i+1:]
|
rel = rel[i+1:]
|
||||||
|
|
|
@ -602,7 +602,150 @@ func Connectx(fd int, srcIf uint32, srcAddr, dstAddr Sockaddr, associd SaeAssocI
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
//sys connectx(fd int, endpoints *SaEndpoints, associd SaeAssocID, flags uint32, iov []Iovec, n *uintptr, connid *SaeConnID) (err error)
|
// sys connectx(fd int, endpoints *SaEndpoints, associd SaeAssocID, flags uint32, iov []Iovec, n *uintptr, connid *SaeConnID) (err error)
|
||||||
|
const minIovec = 8
|
||||||
|
|
||||||
|
func Readv(fd int, iovs [][]byte) (n int, err error) {
|
||||||
|
if !darwinKernelVersionMin(11, 0, 0) {
|
||||||
|
return 0, ENOSYS
|
||||||
|
}
|
||||||
|
|
||||||
|
iovecs := make([]Iovec, 0, minIovec)
|
||||||
|
iovecs = appendBytes(iovecs, iovs)
|
||||||
|
n, err = readv(fd, iovecs)
|
||||||
|
readvRacedetect(iovecs, n, err)
|
||||||
|
return n, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func Preadv(fd int, iovs [][]byte, offset int64) (n int, err error) {
|
||||||
|
if !darwinKernelVersionMin(11, 0, 0) {
|
||||||
|
return 0, ENOSYS
|
||||||
|
}
|
||||||
|
iovecs := make([]Iovec, 0, minIovec)
|
||||||
|
iovecs = appendBytes(iovecs, iovs)
|
||||||
|
n, err = preadv(fd, iovecs, offset)
|
||||||
|
readvRacedetect(iovecs, n, err)
|
||||||
|
return n, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func Writev(fd int, iovs [][]byte) (n int, err error) {
|
||||||
|
if !darwinKernelVersionMin(11, 0, 0) {
|
||||||
|
return 0, ENOSYS
|
||||||
|
}
|
||||||
|
|
||||||
|
iovecs := make([]Iovec, 0, minIovec)
|
||||||
|
iovecs = appendBytes(iovecs, iovs)
|
||||||
|
if raceenabled {
|
||||||
|
raceReleaseMerge(unsafe.Pointer(&ioSync))
|
||||||
|
}
|
||||||
|
n, err = writev(fd, iovecs)
|
||||||
|
writevRacedetect(iovecs, n)
|
||||||
|
return n, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func Pwritev(fd int, iovs [][]byte, offset int64) (n int, err error) {
|
||||||
|
if !darwinKernelVersionMin(11, 0, 0) {
|
||||||
|
return 0, ENOSYS
|
||||||
|
}
|
||||||
|
|
||||||
|
iovecs := make([]Iovec, 0, minIovec)
|
||||||
|
iovecs = appendBytes(iovecs, iovs)
|
||||||
|
if raceenabled {
|
||||||
|
raceReleaseMerge(unsafe.Pointer(&ioSync))
|
||||||
|
}
|
||||||
|
n, err = pwritev(fd, iovecs, offset)
|
||||||
|
writevRacedetect(iovecs, n)
|
||||||
|
return n, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func appendBytes(vecs []Iovec, bs [][]byte) []Iovec {
|
||||||
|
for _, b := range bs {
|
||||||
|
var v Iovec
|
||||||
|
v.SetLen(len(b))
|
||||||
|
if len(b) > 0 {
|
||||||
|
v.Base = &b[0]
|
||||||
|
} else {
|
||||||
|
v.Base = (*byte)(unsafe.Pointer(&_zero))
|
||||||
|
}
|
||||||
|
vecs = append(vecs, v)
|
||||||
|
}
|
||||||
|
return vecs
|
||||||
|
}
|
||||||
|
|
||||||
|
func writevRacedetect(iovecs []Iovec, n int) {
|
||||||
|
if !raceenabled {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for i := 0; n > 0 && i < len(iovecs); i++ {
|
||||||
|
m := int(iovecs[i].Len)
|
||||||
|
if m > n {
|
||||||
|
m = n
|
||||||
|
}
|
||||||
|
n -= m
|
||||||
|
if m > 0 {
|
||||||
|
raceReadRange(unsafe.Pointer(iovecs[i].Base), m)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func readvRacedetect(iovecs []Iovec, n int, err error) {
|
||||||
|
if !raceenabled {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for i := 0; n > 0 && i < len(iovecs); i++ {
|
||||||
|
m := int(iovecs[i].Len)
|
||||||
|
if m > n {
|
||||||
|
m = n
|
||||||
|
}
|
||||||
|
n -= m
|
||||||
|
if m > 0 {
|
||||||
|
raceWriteRange(unsafe.Pointer(iovecs[i].Base), m)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if err == nil {
|
||||||
|
raceAcquire(unsafe.Pointer(&ioSync))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func darwinMajorMinPatch() (maj, min, patch int, err error) {
|
||||||
|
var un Utsname
|
||||||
|
err = Uname(&un)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var mmp [3]int
|
||||||
|
c := 0
|
||||||
|
Loop:
|
||||||
|
for _, b := range un.Release[:] {
|
||||||
|
switch {
|
||||||
|
case b >= '0' && b <= '9':
|
||||||
|
mmp[c] = 10*mmp[c] + int(b-'0')
|
||||||
|
case b == '.':
|
||||||
|
c++
|
||||||
|
if c > 2 {
|
||||||
|
return 0, 0, 0, ENOTSUP
|
||||||
|
}
|
||||||
|
case b == 0:
|
||||||
|
break Loop
|
||||||
|
default:
|
||||||
|
return 0, 0, 0, ENOTSUP
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if c != 2 {
|
||||||
|
return 0, 0, 0, ENOTSUP
|
||||||
|
}
|
||||||
|
return mmp[0], mmp[1], mmp[2], nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func darwinKernelVersionMin(maj, min, patch int) bool {
|
||||||
|
actualMaj, actualMin, actualPatch, err := darwinMajorMinPatch()
|
||||||
|
if err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return actualMaj > maj || actualMaj == maj && (actualMin > min || actualMin == min && actualPatch >= patch)
|
||||||
|
}
|
||||||
|
|
||||||
//sys sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error)
|
//sys sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error)
|
||||||
|
|
||||||
//sys shmat(id int, addr uintptr, flag int) (ret uintptr, err error)
|
//sys shmat(id int, addr uintptr, flag int) (ret uintptr, err error)
|
||||||
|
@ -705,3 +848,7 @@ func Connectx(fd int, srcIf uint32, srcAddr, dstAddr Sockaddr, associd SaeAssocI
|
||||||
//sys write(fd int, p []byte) (n int, err error)
|
//sys write(fd int, p []byte) (n int, err error)
|
||||||
//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
|
//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)
|
||||||
//sys munmap(addr uintptr, length uintptr) (err error)
|
//sys munmap(addr uintptr, length uintptr) (err error)
|
||||||
|
//sys readv(fd int, iovecs []Iovec) (n int, err error)
|
||||||
|
//sys preadv(fd int, iovecs []Iovec, offset int64) (n int, err error)
|
||||||
|
//sys writev(fd int, iovecs []Iovec) (n int, err error)
|
||||||
|
//sys pwritev(fd int, iovecs []Iovec, offset int64) (n int, err error)
|
||||||
|
|
|
@ -13,6 +13,7 @@ package unix
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
|
"slices"
|
||||||
"strconv"
|
"strconv"
|
||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
@ -417,7 +418,7 @@ func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {
|
||||||
return nil, 0, EINVAL
|
return nil, 0, EINVAL
|
||||||
}
|
}
|
||||||
sa.raw.Family = AF_UNIX
|
sa.raw.Family = AF_UNIX
|
||||||
for i := 0; i < n; i++ {
|
for i := range n {
|
||||||
sa.raw.Path[i] = int8(name[i])
|
sa.raw.Path[i] = int8(name[i])
|
||||||
}
|
}
|
||||||
// length is family (uint16), name, NUL.
|
// length is family (uint16), name, NUL.
|
||||||
|
@ -507,7 +508,7 @@ func (sa *SockaddrL2) sockaddr() (unsafe.Pointer, _Socklen, error) {
|
||||||
psm := (*[2]byte)(unsafe.Pointer(&sa.raw.Psm))
|
psm := (*[2]byte)(unsafe.Pointer(&sa.raw.Psm))
|
||||||
psm[0] = byte(sa.PSM)
|
psm[0] = byte(sa.PSM)
|
||||||
psm[1] = byte(sa.PSM >> 8)
|
psm[1] = byte(sa.PSM >> 8)
|
||||||
for i := 0; i < len(sa.Addr); i++ {
|
for i := range len(sa.Addr) {
|
||||||
sa.raw.Bdaddr[i] = sa.Addr[len(sa.Addr)-1-i]
|
sa.raw.Bdaddr[i] = sa.Addr[len(sa.Addr)-1-i]
|
||||||
}
|
}
|
||||||
cid := (*[2]byte)(unsafe.Pointer(&sa.raw.Cid))
|
cid := (*[2]byte)(unsafe.Pointer(&sa.raw.Cid))
|
||||||
|
@ -589,11 +590,11 @@ func (sa *SockaddrCAN) sockaddr() (unsafe.Pointer, _Socklen, error) {
|
||||||
sa.raw.Family = AF_CAN
|
sa.raw.Family = AF_CAN
|
||||||
sa.raw.Ifindex = int32(sa.Ifindex)
|
sa.raw.Ifindex = int32(sa.Ifindex)
|
||||||
rx := (*[4]byte)(unsafe.Pointer(&sa.RxID))
|
rx := (*[4]byte)(unsafe.Pointer(&sa.RxID))
|
||||||
for i := 0; i < 4; i++ {
|
for i := range 4 {
|
||||||
sa.raw.Addr[i] = rx[i]
|
sa.raw.Addr[i] = rx[i]
|
||||||
}
|
}
|
||||||
tx := (*[4]byte)(unsafe.Pointer(&sa.TxID))
|
tx := (*[4]byte)(unsafe.Pointer(&sa.TxID))
|
||||||
for i := 0; i < 4; i++ {
|
for i := range 4 {
|
||||||
sa.raw.Addr[i+4] = tx[i]
|
sa.raw.Addr[i+4] = tx[i]
|
||||||
}
|
}
|
||||||
return unsafe.Pointer(&sa.raw), SizeofSockaddrCAN, nil
|
return unsafe.Pointer(&sa.raw), SizeofSockaddrCAN, nil
|
||||||
|
@ -618,11 +619,11 @@ func (sa *SockaddrCANJ1939) sockaddr() (unsafe.Pointer, _Socklen, error) {
|
||||||
sa.raw.Family = AF_CAN
|
sa.raw.Family = AF_CAN
|
||||||
sa.raw.Ifindex = int32(sa.Ifindex)
|
sa.raw.Ifindex = int32(sa.Ifindex)
|
||||||
n := (*[8]byte)(unsafe.Pointer(&sa.Name))
|
n := (*[8]byte)(unsafe.Pointer(&sa.Name))
|
||||||
for i := 0; i < 8; i++ {
|
for i := range 8 {
|
||||||
sa.raw.Addr[i] = n[i]
|
sa.raw.Addr[i] = n[i]
|
||||||
}
|
}
|
||||||
p := (*[4]byte)(unsafe.Pointer(&sa.PGN))
|
p := (*[4]byte)(unsafe.Pointer(&sa.PGN))
|
||||||
for i := 0; i < 4; i++ {
|
for i := range 4 {
|
||||||
sa.raw.Addr[i+8] = p[i]
|
sa.raw.Addr[i+8] = p[i]
|
||||||
}
|
}
|
||||||
sa.raw.Addr[12] = sa.Addr
|
sa.raw.Addr[12] = sa.Addr
|
||||||
|
@ -911,7 +912,7 @@ func (sa *SockaddrIUCV) sockaddr() (unsafe.Pointer, _Socklen, error) {
|
||||||
// These are EBCDIC encoded by the kernel, but we still need to pad them
|
// These are EBCDIC encoded by the kernel, but we still need to pad them
|
||||||
// with blanks. Initializing with blanks allows the caller to feed in either
|
// with blanks. Initializing with blanks allows the caller to feed in either
|
||||||
// a padded or an unpadded string.
|
// a padded or an unpadded string.
|
||||||
for i := 0; i < 8; i++ {
|
for i := range 8 {
|
||||||
sa.raw.Nodeid[i] = ' '
|
sa.raw.Nodeid[i] = ' '
|
||||||
sa.raw.User_id[i] = ' '
|
sa.raw.User_id[i] = ' '
|
||||||
sa.raw.Name[i] = ' '
|
sa.raw.Name[i] = ' '
|
||||||
|
@ -1148,7 +1149,7 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
|
||||||
var user [8]byte
|
var user [8]byte
|
||||||
var name [8]byte
|
var name [8]byte
|
||||||
|
|
||||||
for i := 0; i < 8; i++ {
|
for i := range 8 {
|
||||||
user[i] = byte(pp.User_id[i])
|
user[i] = byte(pp.User_id[i])
|
||||||
name[i] = byte(pp.Name[i])
|
name[i] = byte(pp.Name[i])
|
||||||
}
|
}
|
||||||
|
@ -1173,11 +1174,11 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
|
||||||
Ifindex: int(pp.Ifindex),
|
Ifindex: int(pp.Ifindex),
|
||||||
}
|
}
|
||||||
name := (*[8]byte)(unsafe.Pointer(&sa.Name))
|
name := (*[8]byte)(unsafe.Pointer(&sa.Name))
|
||||||
for i := 0; i < 8; i++ {
|
for i := range 8 {
|
||||||
name[i] = pp.Addr[i]
|
name[i] = pp.Addr[i]
|
||||||
}
|
}
|
||||||
pgn := (*[4]byte)(unsafe.Pointer(&sa.PGN))
|
pgn := (*[4]byte)(unsafe.Pointer(&sa.PGN))
|
||||||
for i := 0; i < 4; i++ {
|
for i := range 4 {
|
||||||
pgn[i] = pp.Addr[i+8]
|
pgn[i] = pp.Addr[i+8]
|
||||||
}
|
}
|
||||||
addr := (*[1]byte)(unsafe.Pointer(&sa.Addr))
|
addr := (*[1]byte)(unsafe.Pointer(&sa.Addr))
|
||||||
|
@ -1188,11 +1189,11 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
|
||||||
Ifindex: int(pp.Ifindex),
|
Ifindex: int(pp.Ifindex),
|
||||||
}
|
}
|
||||||
rx := (*[4]byte)(unsafe.Pointer(&sa.RxID))
|
rx := (*[4]byte)(unsafe.Pointer(&sa.RxID))
|
||||||
for i := 0; i < 4; i++ {
|
for i := range 4 {
|
||||||
rx[i] = pp.Addr[i]
|
rx[i] = pp.Addr[i]
|
||||||
}
|
}
|
||||||
tx := (*[4]byte)(unsafe.Pointer(&sa.TxID))
|
tx := (*[4]byte)(unsafe.Pointer(&sa.TxID))
|
||||||
for i := 0; i < 4; i++ {
|
for i := range 4 {
|
||||||
tx[i] = pp.Addr[i+4]
|
tx[i] = pp.Addr[i+4]
|
||||||
}
|
}
|
||||||
return sa, nil
|
return sa, nil
|
||||||
|
@ -2216,10 +2217,7 @@ func readvRacedetect(iovecs []Iovec, n int, err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
for i := 0; n > 0 && i < len(iovecs); i++ {
|
for i := 0; n > 0 && i < len(iovecs); i++ {
|
||||||
m := int(iovecs[i].Len)
|
m := min(int(iovecs[i].Len), n)
|
||||||
if m > n {
|
|
||||||
m = n
|
|
||||||
}
|
|
||||||
n -= m
|
n -= m
|
||||||
if m > 0 {
|
if m > 0 {
|
||||||
raceWriteRange(unsafe.Pointer(iovecs[i].Base), m)
|
raceWriteRange(unsafe.Pointer(iovecs[i].Base), m)
|
||||||
|
@ -2270,10 +2268,7 @@ func writevRacedetect(iovecs []Iovec, n int) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
for i := 0; n > 0 && i < len(iovecs); i++ {
|
for i := 0; n > 0 && i < len(iovecs); i++ {
|
||||||
m := int(iovecs[i].Len)
|
m := min(int(iovecs[i].Len), n)
|
||||||
if m > n {
|
|
||||||
m = n
|
|
||||||
}
|
|
||||||
n -= m
|
n -= m
|
||||||
if m > 0 {
|
if m > 0 {
|
||||||
raceReadRange(unsafe.Pointer(iovecs[i].Base), m)
|
raceReadRange(unsafe.Pointer(iovecs[i].Base), m)
|
||||||
|
@ -2320,12 +2315,7 @@ func isGroupMember(gid int) bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, g := range groups {
|
return slices.Contains(groups, gid)
|
||||||
if g == gid {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func isCapDacOverrideSet() bool {
|
func isCapDacOverrideSet() bool {
|
||||||
|
|
|
@ -2512,6 +2512,90 @@ var libc_munmap_trampoline_addr uintptr
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func readv(fd int, iovecs []Iovec) (n int, err error) {
|
||||||
|
var _p0 unsafe.Pointer
|
||||||
|
if len(iovecs) > 0 {
|
||||||
|
_p0 = unsafe.Pointer(&iovecs[0])
|
||||||
|
} else {
|
||||||
|
_p0 = unsafe.Pointer(&_zero)
|
||||||
|
}
|
||||||
|
r0, _, e1 := syscall_syscall(libc_readv_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)))
|
||||||
|
n = int(r0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var libc_readv_trampoline_addr uintptr
|
||||||
|
|
||||||
|
//go:cgo_import_dynamic libc_readv readv "/usr/lib/libSystem.B.dylib"
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func preadv(fd int, iovecs []Iovec, offset int64) (n int, err error) {
|
||||||
|
var _p0 unsafe.Pointer
|
||||||
|
if len(iovecs) > 0 {
|
||||||
|
_p0 = unsafe.Pointer(&iovecs[0])
|
||||||
|
} else {
|
||||||
|
_p0 = unsafe.Pointer(&_zero)
|
||||||
|
}
|
||||||
|
r0, _, e1 := syscall_syscall6(libc_preadv_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)), uintptr(offset), 0, 0)
|
||||||
|
n = int(r0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var libc_preadv_trampoline_addr uintptr
|
||||||
|
|
||||||
|
//go:cgo_import_dynamic libc_preadv preadv "/usr/lib/libSystem.B.dylib"
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func writev(fd int, iovecs []Iovec) (n int, err error) {
|
||||||
|
var _p0 unsafe.Pointer
|
||||||
|
if len(iovecs) > 0 {
|
||||||
|
_p0 = unsafe.Pointer(&iovecs[0])
|
||||||
|
} else {
|
||||||
|
_p0 = unsafe.Pointer(&_zero)
|
||||||
|
}
|
||||||
|
r0, _, e1 := syscall_syscall(libc_writev_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)))
|
||||||
|
n = int(r0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var libc_writev_trampoline_addr uintptr
|
||||||
|
|
||||||
|
//go:cgo_import_dynamic libc_writev writev "/usr/lib/libSystem.B.dylib"
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func pwritev(fd int, iovecs []Iovec, offset int64) (n int, err error) {
|
||||||
|
var _p0 unsafe.Pointer
|
||||||
|
if len(iovecs) > 0 {
|
||||||
|
_p0 = unsafe.Pointer(&iovecs[0])
|
||||||
|
} else {
|
||||||
|
_p0 = unsafe.Pointer(&_zero)
|
||||||
|
}
|
||||||
|
r0, _, e1 := syscall_syscall6(libc_pwritev_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)), uintptr(offset), 0, 0)
|
||||||
|
n = int(r0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var libc_pwritev_trampoline_addr uintptr
|
||||||
|
|
||||||
|
//go:cgo_import_dynamic libc_pwritev pwritev "/usr/lib/libSystem.B.dylib"
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Fstat(fd int, stat *Stat_t) (err error) {
|
func Fstat(fd int, stat *Stat_t) (err error) {
|
||||||
_, _, e1 := syscall_syscall(libc_fstat64_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
|
_, _, e1 := syscall_syscall(libc_fstat64_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
|
|
@ -738,6 +738,26 @@ TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)
|
DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)
|
||||||
|
|
||||||
|
TEXT libc_readv_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
|
JMP libc_readv(SB)
|
||||||
|
GLOBL ·libc_readv_trampoline_addr(SB), RODATA, $8
|
||||||
|
DATA ·libc_readv_trampoline_addr(SB)/8, $libc_readv_trampoline<>(SB)
|
||||||
|
|
||||||
|
TEXT libc_preadv_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
|
JMP libc_preadv(SB)
|
||||||
|
GLOBL ·libc_preadv_trampoline_addr(SB), RODATA, $8
|
||||||
|
DATA ·libc_preadv_trampoline_addr(SB)/8, $libc_preadv_trampoline<>(SB)
|
||||||
|
|
||||||
|
TEXT libc_writev_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
|
JMP libc_writev(SB)
|
||||||
|
GLOBL ·libc_writev_trampoline_addr(SB), RODATA, $8
|
||||||
|
DATA ·libc_writev_trampoline_addr(SB)/8, $libc_writev_trampoline<>(SB)
|
||||||
|
|
||||||
|
TEXT libc_pwritev_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
|
JMP libc_pwritev(SB)
|
||||||
|
GLOBL ·libc_pwritev_trampoline_addr(SB), RODATA, $8
|
||||||
|
DATA ·libc_pwritev_trampoline_addr(SB)/8, $libc_pwritev_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_fstat64_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fstat64_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fstat64(SB)
|
JMP libc_fstat64(SB)
|
||||||
GLOBL ·libc_fstat64_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fstat64_trampoline_addr(SB), RODATA, $8
|
||||||
|
|
|
@ -2512,6 +2512,90 @@ var libc_munmap_trampoline_addr uintptr
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func readv(fd int, iovecs []Iovec) (n int, err error) {
|
||||||
|
var _p0 unsafe.Pointer
|
||||||
|
if len(iovecs) > 0 {
|
||||||
|
_p0 = unsafe.Pointer(&iovecs[0])
|
||||||
|
} else {
|
||||||
|
_p0 = unsafe.Pointer(&_zero)
|
||||||
|
}
|
||||||
|
r0, _, e1 := syscall_syscall(libc_readv_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)))
|
||||||
|
n = int(r0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var libc_readv_trampoline_addr uintptr
|
||||||
|
|
||||||
|
//go:cgo_import_dynamic libc_readv readv "/usr/lib/libSystem.B.dylib"
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func preadv(fd int, iovecs []Iovec, offset int64) (n int, err error) {
|
||||||
|
var _p0 unsafe.Pointer
|
||||||
|
if len(iovecs) > 0 {
|
||||||
|
_p0 = unsafe.Pointer(&iovecs[0])
|
||||||
|
} else {
|
||||||
|
_p0 = unsafe.Pointer(&_zero)
|
||||||
|
}
|
||||||
|
r0, _, e1 := syscall_syscall6(libc_preadv_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)), uintptr(offset), 0, 0)
|
||||||
|
n = int(r0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var libc_preadv_trampoline_addr uintptr
|
||||||
|
|
||||||
|
//go:cgo_import_dynamic libc_preadv preadv "/usr/lib/libSystem.B.dylib"
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func writev(fd int, iovecs []Iovec) (n int, err error) {
|
||||||
|
var _p0 unsafe.Pointer
|
||||||
|
if len(iovecs) > 0 {
|
||||||
|
_p0 = unsafe.Pointer(&iovecs[0])
|
||||||
|
} else {
|
||||||
|
_p0 = unsafe.Pointer(&_zero)
|
||||||
|
}
|
||||||
|
r0, _, e1 := syscall_syscall(libc_writev_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)))
|
||||||
|
n = int(r0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var libc_writev_trampoline_addr uintptr
|
||||||
|
|
||||||
|
//go:cgo_import_dynamic libc_writev writev "/usr/lib/libSystem.B.dylib"
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func pwritev(fd int, iovecs []Iovec, offset int64) (n int, err error) {
|
||||||
|
var _p0 unsafe.Pointer
|
||||||
|
if len(iovecs) > 0 {
|
||||||
|
_p0 = unsafe.Pointer(&iovecs[0])
|
||||||
|
} else {
|
||||||
|
_p0 = unsafe.Pointer(&_zero)
|
||||||
|
}
|
||||||
|
r0, _, e1 := syscall_syscall6(libc_pwritev_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(iovecs)), uintptr(offset), 0, 0)
|
||||||
|
n = int(r0)
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var libc_pwritev_trampoline_addr uintptr
|
||||||
|
|
||||||
|
//go:cgo_import_dynamic libc_pwritev pwritev "/usr/lib/libSystem.B.dylib"
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Fstat(fd int, stat *Stat_t) (err error) {
|
func Fstat(fd int, stat *Stat_t) (err error) {
|
||||||
_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
|
_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
|
|
@ -738,6 +738,26 @@ TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_munmap_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)
|
DATA ·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)
|
||||||
|
|
||||||
|
TEXT libc_readv_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
|
JMP libc_readv(SB)
|
||||||
|
GLOBL ·libc_readv_trampoline_addr(SB), RODATA, $8
|
||||||
|
DATA ·libc_readv_trampoline_addr(SB)/8, $libc_readv_trampoline<>(SB)
|
||||||
|
|
||||||
|
TEXT libc_preadv_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
|
JMP libc_preadv(SB)
|
||||||
|
GLOBL ·libc_preadv_trampoline_addr(SB), RODATA, $8
|
||||||
|
DATA ·libc_preadv_trampoline_addr(SB)/8, $libc_preadv_trampoline<>(SB)
|
||||||
|
|
||||||
|
TEXT libc_writev_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
|
JMP libc_writev(SB)
|
||||||
|
GLOBL ·libc_writev_trampoline_addr(SB), RODATA, $8
|
||||||
|
DATA ·libc_writev_trampoline_addr(SB)/8, $libc_writev_trampoline<>(SB)
|
||||||
|
|
||||||
|
TEXT libc_pwritev_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
|
JMP libc_pwritev(SB)
|
||||||
|
GLOBL ·libc_pwritev_trampoline_addr(SB), RODATA, $8
|
||||||
|
DATA ·libc_pwritev_trampoline_addr(SB)/8, $libc_pwritev_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fstat(SB)
|
JMP libc_fstat(SB)
|
||||||
GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fstat_trampoline_addr(SB), RODATA, $8
|
||||||
|
|
|
@ -164,7 +164,12 @@ loopItems:
|
||||||
func CreateKey(k Key, path string, access uint32) (newk Key, openedExisting bool, err error) {
|
func CreateKey(k Key, path string, access uint32) (newk Key, openedExisting bool, err error) {
|
||||||
var h syscall.Handle
|
var h syscall.Handle
|
||||||
var d uint32
|
var d uint32
|
||||||
err = regCreateKeyEx(syscall.Handle(k), syscall.StringToUTF16Ptr(path),
|
var pathPointer *uint16
|
||||||
|
pathPointer, err = syscall.UTF16PtrFromString(path)
|
||||||
|
if err != nil {
|
||||||
|
return 0, false, err
|
||||||
|
}
|
||||||
|
err = regCreateKeyEx(syscall.Handle(k), pathPointer,
|
||||||
0, nil, _REG_OPTION_NON_VOLATILE, access, nil, &h, &d)
|
0, nil, _REG_OPTION_NON_VOLATILE, access, nil, &h, &d)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, false, err
|
return 0, false, err
|
||||||
|
@ -174,7 +179,11 @@ func CreateKey(k Key, path string, access uint32) (newk Key, openedExisting bool
|
||||||
|
|
||||||
// DeleteKey deletes the subkey path of key k and its values.
|
// DeleteKey deletes the subkey path of key k and its values.
|
||||||
func DeleteKey(k Key, path string) error {
|
func DeleteKey(k Key, path string) error {
|
||||||
return regDeleteKey(syscall.Handle(k), syscall.StringToUTF16Ptr(path))
|
pathPointer, err := syscall.UTF16PtrFromString(path)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return regDeleteKey(syscall.Handle(k), pathPointer)
|
||||||
}
|
}
|
||||||
|
|
||||||
// A KeyInfo describes the statistics of a key. It is returned by Stat.
|
// A KeyInfo describes the statistics of a key. It is returned by Stat.
|
||||||
|
|
|
@ -340,7 +340,11 @@ func (k Key) SetBinaryValue(name string, value []byte) error {
|
||||||
|
|
||||||
// DeleteValue removes a named value from the key k.
|
// DeleteValue removes a named value from the key k.
|
||||||
func (k Key) DeleteValue(name string) error {
|
func (k Key) DeleteValue(name string) error {
|
||||||
return regDeleteValue(syscall.Handle(k), syscall.StringToUTF16Ptr(name))
|
namePointer, err := syscall.UTF16PtrFromString(name)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return regDeleteValue(syscall.Handle(k), namePointer)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ReadValueNames returns the value names of key k.
|
// ReadValueNames returns the value names of key k.
|
||||||
|
|
|
@ -1074,6 +1074,7 @@ const (
|
||||||
IP_ADD_MEMBERSHIP = 0xc
|
IP_ADD_MEMBERSHIP = 0xc
|
||||||
IP_DROP_MEMBERSHIP = 0xd
|
IP_DROP_MEMBERSHIP = 0xd
|
||||||
IP_PKTINFO = 0x13
|
IP_PKTINFO = 0x13
|
||||||
|
IP_MTU_DISCOVER = 0x47
|
||||||
|
|
||||||
IPV6_V6ONLY = 0x1b
|
IPV6_V6ONLY = 0x1b
|
||||||
IPV6_UNICAST_HOPS = 0x4
|
IPV6_UNICAST_HOPS = 0x4
|
||||||
|
@ -1083,6 +1084,7 @@ const (
|
||||||
IPV6_JOIN_GROUP = 0xc
|
IPV6_JOIN_GROUP = 0xc
|
||||||
IPV6_LEAVE_GROUP = 0xd
|
IPV6_LEAVE_GROUP = 0xd
|
||||||
IPV6_PKTINFO = 0x13
|
IPV6_PKTINFO = 0x13
|
||||||
|
IPV6_MTU_DISCOVER = 0x47
|
||||||
|
|
||||||
MSG_OOB = 0x1
|
MSG_OOB = 0x1
|
||||||
MSG_PEEK = 0x2
|
MSG_PEEK = 0x2
|
||||||
|
@ -1132,6 +1134,15 @@ const (
|
||||||
WSASYS_STATUS_LEN = 128
|
WSASYS_STATUS_LEN = 128
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// enum PMTUD_STATE from ws2ipdef.h
|
||||||
|
const (
|
||||||
|
IP_PMTUDISC_NOT_SET = 0
|
||||||
|
IP_PMTUDISC_DO = 1
|
||||||
|
IP_PMTUDISC_DONT = 2
|
||||||
|
IP_PMTUDISC_PROBE = 3
|
||||||
|
IP_PMTUDISC_MAX = 4
|
||||||
|
)
|
||||||
|
|
||||||
type WSABuf struct {
|
type WSABuf struct {
|
||||||
Len uint32
|
Len uint32
|
||||||
Buf *byte
|
Buf *byte
|
||||||
|
@ -1146,6 +1157,22 @@ type WSAMsg struct {
|
||||||
Flags uint32
|
Flags uint32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type WSACMSGHDR struct {
|
||||||
|
Len uintptr
|
||||||
|
Level int32
|
||||||
|
Type int32
|
||||||
|
}
|
||||||
|
|
||||||
|
type IN_PKTINFO struct {
|
||||||
|
Addr [4]byte
|
||||||
|
Ifindex uint32
|
||||||
|
}
|
||||||
|
|
||||||
|
type IN6_PKTINFO struct {
|
||||||
|
Addr [16]byte
|
||||||
|
Ifindex uint32
|
||||||
|
}
|
||||||
|
|
||||||
// Flags for WSASocket
|
// Flags for WSASocket
|
||||||
const (
|
const (
|
||||||
WSA_FLAG_OVERLAPPED = 0x01
|
WSA_FLAG_OVERLAPPED = 0x01
|
||||||
|
|
|
@ -1043,7 +1043,7 @@ go.uber.org/multierr
|
||||||
# golang.org/x/arch v0.13.0
|
# golang.org/x/arch v0.13.0
|
||||||
## explicit; go 1.18
|
## explicit; go 1.18
|
||||||
golang.org/x/arch/x86/x86asm
|
golang.org/x/arch/x86/x86asm
|
||||||
# golang.org/x/crypto v0.36.0
|
# golang.org/x/crypto v0.37.0
|
||||||
## explicit; go 1.23.0
|
## explicit; go 1.23.0
|
||||||
golang.org/x/crypto/acme
|
golang.org/x/crypto/acme
|
||||||
golang.org/x/crypto/acme/autocert
|
golang.org/x/crypto/acme/autocert
|
||||||
|
@ -1101,17 +1101,17 @@ golang.org/x/net/trace
|
||||||
## explicit; go 1.23.0
|
## explicit; go 1.23.0
|
||||||
golang.org/x/oauth2
|
golang.org/x/oauth2
|
||||||
golang.org/x/oauth2/internal
|
golang.org/x/oauth2/internal
|
||||||
# golang.org/x/sync v0.12.0
|
# golang.org/x/sync v0.13.0
|
||||||
## explicit; go 1.23.0
|
## explicit; go 1.23.0
|
||||||
golang.org/x/sync/errgroup
|
golang.org/x/sync/errgroup
|
||||||
golang.org/x/sync/semaphore
|
golang.org/x/sync/semaphore
|
||||||
# golang.org/x/sys v0.31.0
|
# golang.org/x/sys v0.32.0
|
||||||
## explicit; go 1.23.0
|
## explicit; go 1.23.0
|
||||||
golang.org/x/sys/cpu
|
golang.org/x/sys/cpu
|
||||||
golang.org/x/sys/unix
|
golang.org/x/sys/unix
|
||||||
golang.org/x/sys/windows
|
golang.org/x/sys/windows
|
||||||
golang.org/x/sys/windows/registry
|
golang.org/x/sys/windows/registry
|
||||||
# golang.org/x/text v0.23.0
|
# golang.org/x/text v0.24.0
|
||||||
## explicit; go 1.23.0
|
## explicit; go 1.23.0
|
||||||
golang.org/x/text/cases
|
golang.org/x/text/cases
|
||||||
golang.org/x/text/encoding
|
golang.org/x/text/encoding
|
||||||
|
|
Loading…
Reference in New Issue