chore(deps): bump golang.org/x/oauth2 from 0.12.0 to 0.13.0 (#2781)
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.12.0 to 0.13.0. - [Commits](https://github.com/golang/oauth2/compare/v0.12.0...v0.13.0) --- updated-dependencies: - dependency-name: golang.org/x/oauth2 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
2a1b29a9f1
commit
bda9700863
8
go.mod
8
go.mod
|
|
@ -34,8 +34,8 @@ require (
|
||||||
github.com/spf13/afero v1.10.0
|
github.com/spf13/afero v1.10.0
|
||||||
github.com/spf13/cobra v1.7.0
|
github.com/spf13/cobra v1.7.0
|
||||||
github.com/spf13/pflag v1.0.5
|
github.com/spf13/pflag v1.0.5
|
||||||
golang.org/x/net v0.15.0
|
golang.org/x/net v0.16.0
|
||||||
golang.org/x/oauth2 v0.12.0
|
golang.org/x/oauth2 v0.13.0
|
||||||
golang.org/x/sync v0.3.0
|
golang.org/x/sync v0.3.0
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -144,8 +144,8 @@ require (
|
||||||
go.etcd.io/etcd/raft/v3 v3.5.6 // indirect
|
go.etcd.io/etcd/raft/v3 v3.5.6 // indirect
|
||||||
go.opencensus.io v0.24.0 // indirect
|
go.opencensus.io v0.24.0 // indirect
|
||||||
go.uber.org/goleak v1.2.1 // indirect
|
go.uber.org/goleak v1.2.1 // indirect
|
||||||
golang.org/x/crypto v0.13.0 // indirect
|
golang.org/x/crypto v0.14.0 // indirect
|
||||||
golang.org/x/sys v0.12.0
|
golang.org/x/sys v0.13.0
|
||||||
golang.org/x/text v0.13.0 // indirect
|
golang.org/x/text v0.13.0 // indirect
|
||||||
golang.org/x/time v0.1.0 // indirect
|
golang.org/x/time v0.1.0 // indirect
|
||||||
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
|
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
|
||||||
|
|
|
||||||
18
go.sum
18
go.sum
|
|
@ -691,8 +691,8 @@ golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0
|
||||||
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||||
golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
|
golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
|
||||||
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
|
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
|
||||||
golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck=
|
golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc=
|
||||||
golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
|
golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
|
||||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
|
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
|
||||||
|
|
@ -781,8 +781,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug
|
||||||
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
|
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
|
||||||
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||||
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
|
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
|
||||||
golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8=
|
golang.org/x/net v0.16.0 h1:7eBu7KsSvFDtSXUIDbh3aqlK4DPsZ1rByC8PFfBThos=
|
||||||
golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
|
golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
|
||||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||||
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
|
|
@ -797,8 +797,8 @@ golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ
|
||||||
golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||||
golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||||
golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc=
|
golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc=
|
||||||
golang.org/x/oauth2 v0.12.0 h1:smVPGxink+n1ZI5pkQa8y6fZT0RW0MgCO5bFpepy4B4=
|
golang.org/x/oauth2 v0.13.0 h1:jDDenyj+WgFtmV3zYVoi8aE2BwtXFLWOA67ZfNWftiY=
|
||||||
golang.org/x/oauth2 v0.12.0/go.mod h1:A74bZ3aGXgCY0qaIC9Ahg6Lglin4AMAco8cIv9baba4=
|
golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn0=
|
||||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
|
@ -892,14 +892,14 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o=
|
golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE=
|
||||||
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
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=
|
||||||
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
|
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
|
||||||
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
||||||
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
|
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
|
||||||
golang.org/x/term v0.12.0 h1:/ZfYdc3zq+q02Rv9vGqTeSItdzZTSNDmfTi0mBAuidU=
|
golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek=
|
||||||
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/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.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,8 @@
|
||||||
// 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 go1.11 && gc && !purego
|
//go:build gc && !purego
|
||||||
// +build go1.11,gc,!purego
|
// +build gc,!purego
|
||||||
|
|
||||||
package chacha20
|
package chacha20
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,8 @@
|
||||||
// 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 go1.11 && gc && !purego
|
//go:build gc && !purego
|
||||||
// +build go1.11,gc,!purego
|
// +build gc,!purego
|
||||||
|
|
||||||
#include "textflag.h"
|
#include "textflag.h"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,8 @@
|
||||||
// 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 (!arm64 && !s390x && !ppc64le) || (arm64 && !go1.11) || !gc || purego
|
//go:build (!arm64 && !s390x && !ppc64le) || !gc || purego
|
||||||
// +build !arm64,!s390x,!ppc64le arm64,!go1.11 !gc purego
|
// +build !arm64,!s390x,!ppc64le !gc purego
|
||||||
|
|
||||||
package chacha20
|
package chacha20
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -95,6 +95,11 @@ func (b *Builder) AddUint32(v uint32) {
|
||||||
b.add(byte(v>>24), byte(v>>16), byte(v>>8), byte(v))
|
b.add(byte(v>>24), byte(v>>16), byte(v>>8), byte(v))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AddUint48 appends a big-endian, 48-bit value to the byte string.
|
||||||
|
func (b *Builder) AddUint48(v uint64) {
|
||||||
|
b.add(byte(v>>40), byte(v>>32), byte(v>>24), byte(v>>16), byte(v>>8), byte(v))
|
||||||
|
}
|
||||||
|
|
||||||
// AddUint64 appends a big-endian, 64-bit value to the byte string.
|
// AddUint64 appends a big-endian, 64-bit value to the byte string.
|
||||||
func (b *Builder) AddUint64(v uint64) {
|
func (b *Builder) AddUint64(v uint64) {
|
||||||
b.add(byte(v>>56), byte(v>>48), byte(v>>40), byte(v>>32), byte(v>>24), byte(v>>16), byte(v>>8), byte(v))
|
b.add(byte(v>>56), byte(v>>48), byte(v>>40), byte(v>>32), byte(v>>24), byte(v>>16), byte(v>>8), byte(v))
|
||||||
|
|
|
||||||
|
|
@ -81,6 +81,17 @@ func (s *String) ReadUint32(out *uint32) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ReadUint48 decodes a big-endian, 48-bit value into out and advances over it.
|
||||||
|
// It reports whether the read was successful.
|
||||||
|
func (s *String) ReadUint48(out *uint64) bool {
|
||||||
|
v := s.read(6)
|
||||||
|
if v == nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
*out = uint64(v[0])<<40 | uint64(v[1])<<32 | uint64(v[2])<<24 | uint64(v[3])<<16 | uint64(v[4])<<8 | uint64(v[5])
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
// ReadUint64 decodes a big-endian, 64-bit value into out and advances over it.
|
// ReadUint64 decodes a big-endian, 64-bit value into out and advances over it.
|
||||||
// It reports whether the read was successful.
|
// It reports whether the read was successful.
|
||||||
func (s *String) ReadUint64(out *uint64) bool {
|
func (s *String) ReadUint64(out *uint64) bool {
|
||||||
|
|
|
||||||
|
|
@ -1,71 +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 ed25519 implements the Ed25519 signature algorithm. See
|
|
||||||
// https://ed25519.cr.yp.to/.
|
|
||||||
//
|
|
||||||
// These functions are also compatible with the “Ed25519” function defined in
|
|
||||||
// RFC 8032. However, unlike RFC 8032's formulation, this package's private key
|
|
||||||
// representation includes a public key suffix to make multiple signing
|
|
||||||
// operations with the same key more efficient. This package refers to the RFC
|
|
||||||
// 8032 private key as the “seed”.
|
|
||||||
//
|
|
||||||
// Beginning with Go 1.13, the functionality of this package was moved to the
|
|
||||||
// standard library as crypto/ed25519. This package only acts as a compatibility
|
|
||||||
// wrapper.
|
|
||||||
package ed25519
|
|
||||||
|
|
||||||
import (
|
|
||||||
"crypto/ed25519"
|
|
||||||
"io"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
// PublicKeySize is the size, in bytes, of public keys as used in this package.
|
|
||||||
PublicKeySize = 32
|
|
||||||
// PrivateKeySize is the size, in bytes, of private keys as used in this package.
|
|
||||||
PrivateKeySize = 64
|
|
||||||
// SignatureSize is the size, in bytes, of signatures generated and verified by this package.
|
|
||||||
SignatureSize = 64
|
|
||||||
// SeedSize is the size, in bytes, of private key seeds. These are the private key representations used by RFC 8032.
|
|
||||||
SeedSize = 32
|
|
||||||
)
|
|
||||||
|
|
||||||
// PublicKey is the type of Ed25519 public keys.
|
|
||||||
//
|
|
||||||
// This type is an alias for crypto/ed25519's PublicKey type.
|
|
||||||
// See the crypto/ed25519 package for the methods on this type.
|
|
||||||
type PublicKey = ed25519.PublicKey
|
|
||||||
|
|
||||||
// PrivateKey is the type of Ed25519 private keys. It implements crypto.Signer.
|
|
||||||
//
|
|
||||||
// This type is an alias for crypto/ed25519's PrivateKey type.
|
|
||||||
// See the crypto/ed25519 package for the methods on this type.
|
|
||||||
type PrivateKey = ed25519.PrivateKey
|
|
||||||
|
|
||||||
// GenerateKey generates a public/private key pair using entropy from rand.
|
|
||||||
// If rand is nil, crypto/rand.Reader will be used.
|
|
||||||
func GenerateKey(rand io.Reader) (PublicKey, PrivateKey, error) {
|
|
||||||
return ed25519.GenerateKey(rand)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewKeyFromSeed calculates a private key from a seed. It will panic if
|
|
||||||
// len(seed) is not SeedSize. This function is provided for interoperability
|
|
||||||
// with RFC 8032. RFC 8032's private keys correspond to seeds in this
|
|
||||||
// package.
|
|
||||||
func NewKeyFromSeed(seed []byte) PrivateKey {
|
|
||||||
return ed25519.NewKeyFromSeed(seed)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sign signs the message with privateKey and returns a signature. It will
|
|
||||||
// panic if len(privateKey) is not PrivateKeySize.
|
|
||||||
func Sign(privateKey PrivateKey, message []byte) []byte {
|
|
||||||
return ed25519.Sign(privateKey, message)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Verify reports whether sig is a valid signature of message by publicKey. It
|
|
||||||
// will panic if len(publicKey) is not PublicKeySize.
|
|
||||||
func Verify(publicKey PublicKey, message, sig []byte) bool {
|
|
||||||
return ed25519.Verify(publicKey, message, sig)
|
|
||||||
}
|
|
||||||
|
|
@ -121,11 +121,11 @@ func (d *state) padAndPermute(dsbyte byte) {
|
||||||
copyOut(d, d.buf)
|
copyOut(d, d.buf)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write absorbs more data into the hash's state. It produces an error
|
// Write absorbs more data into the hash's state. It panics if any
|
||||||
// if more data is written to the ShakeHash after writing
|
// output has already been read.
|
||||||
func (d *state) Write(p []byte) (written int, err error) {
|
func (d *state) Write(p []byte) (written int, err error) {
|
||||||
if d.state != spongeAbsorbing {
|
if d.state != spongeAbsorbing {
|
||||||
panic("sha3: write to sponge after read")
|
panic("sha3: Write after Read")
|
||||||
}
|
}
|
||||||
if d.buf == nil {
|
if d.buf == nil {
|
||||||
d.buf = d.storage.asBytes()[:0]
|
d.buf = d.storage.asBytes()[:0]
|
||||||
|
|
@ -182,12 +182,16 @@ func (d *state) Read(out []byte) (n int, err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sum applies padding to the hash state and then squeezes out the desired
|
// Sum applies padding to the hash state and then squeezes out the desired
|
||||||
// number of output bytes.
|
// number of output bytes. It panics if any output has already been read.
|
||||||
func (d *state) Sum(in []byte) []byte {
|
func (d *state) Sum(in []byte) []byte {
|
||||||
|
if d.state != spongeAbsorbing {
|
||||||
|
panic("sha3: Sum after Read")
|
||||||
|
}
|
||||||
|
|
||||||
// Make a copy of the original hash so that caller can keep writing
|
// Make a copy of the original hash so that caller can keep writing
|
||||||
// and summing.
|
// and summing.
|
||||||
dup := d.clone()
|
dup := d.clone()
|
||||||
hash := make([]byte, dup.outputLen)
|
hash := make([]byte, dup.outputLen, 64) // explicit cap to allow stack allocation
|
||||||
dup.Read(hash)
|
dup.Read(hash)
|
||||||
return append(in, hash...)
|
return append(in, hash...)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ type asmState struct {
|
||||||
buf []byte // care must be taken to ensure cap(buf) is a multiple of rate
|
buf []byte // care must be taken to ensure cap(buf) is a multiple of rate
|
||||||
rate int // equivalent to block size
|
rate int // equivalent to block size
|
||||||
storage [3072]byte // underlying storage for buf
|
storage [3072]byte // underlying storage for buf
|
||||||
outputLen int // output length if fixed, 0 if not
|
outputLen int // output length for full security
|
||||||
function code // KIMD/KLMD function code
|
function code // KIMD/KLMD function code
|
||||||
state spongeDirection // whether the sponge is absorbing or squeezing
|
state spongeDirection // whether the sponge is absorbing or squeezing
|
||||||
}
|
}
|
||||||
|
|
@ -72,8 +72,10 @@ func newAsmState(function code) *asmState {
|
||||||
s.outputLen = 64
|
s.outputLen = 64
|
||||||
case shake_128:
|
case shake_128:
|
||||||
s.rate = 168
|
s.rate = 168
|
||||||
|
s.outputLen = 32
|
||||||
case shake_256:
|
case shake_256:
|
||||||
s.rate = 136
|
s.rate = 136
|
||||||
|
s.outputLen = 64
|
||||||
default:
|
default:
|
||||||
panic("sha3: unrecognized function code")
|
panic("sha3: unrecognized function code")
|
||||||
}
|
}
|
||||||
|
|
@ -108,7 +110,7 @@ func (s *asmState) resetBuf() {
|
||||||
// It never returns an error.
|
// It never returns an error.
|
||||||
func (s *asmState) Write(b []byte) (int, error) {
|
func (s *asmState) Write(b []byte) (int, error) {
|
||||||
if s.state != spongeAbsorbing {
|
if s.state != spongeAbsorbing {
|
||||||
panic("sha3: write to sponge after read")
|
panic("sha3: Write after Read")
|
||||||
}
|
}
|
||||||
length := len(b)
|
length := len(b)
|
||||||
for len(b) > 0 {
|
for len(b) > 0 {
|
||||||
|
|
@ -192,8 +194,8 @@ func (s *asmState) Read(out []byte) (n int, err error) {
|
||||||
// Sum appends the current hash to b and returns the resulting slice.
|
// Sum appends the current hash to b and returns the resulting slice.
|
||||||
// It does not change the underlying hash state.
|
// It does not change the underlying hash state.
|
||||||
func (s *asmState) Sum(b []byte) []byte {
|
func (s *asmState) Sum(b []byte) []byte {
|
||||||
if s.outputLen == 0 {
|
if s.state != spongeAbsorbing {
|
||||||
panic("sha3: cannot call Sum on SHAKE functions")
|
panic("sha3: Sum after Read")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copy the state to preserve the original.
|
// Copy the state to preserve the original.
|
||||||
|
|
|
||||||
|
|
@ -17,26 +17,25 @@ package sha3
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
|
"hash"
|
||||||
"io"
|
"io"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ShakeHash defines the interface to hash functions that
|
// ShakeHash defines the interface to hash functions that support
|
||||||
// support arbitrary-length output.
|
// arbitrary-length output. When used as a plain [hash.Hash], it
|
||||||
|
// produces minimum-length outputs that provide full-strength generic
|
||||||
|
// security.
|
||||||
type ShakeHash interface {
|
type ShakeHash interface {
|
||||||
// Write absorbs more data into the hash's state. It panics if input is
|
hash.Hash
|
||||||
// written to it after output has been read from it.
|
|
||||||
io.Writer
|
|
||||||
|
|
||||||
// Read reads more output from the hash; reading affects the hash's
|
// Read reads more output from the hash; reading affects the hash's
|
||||||
// state. (ShakeHash.Read is thus very different from Hash.Sum)
|
// state. (ShakeHash.Read is thus very different from Hash.Sum)
|
||||||
// It never returns an error.
|
// It never returns an error, but subsequent calls to Write or Sum
|
||||||
|
// will panic.
|
||||||
io.Reader
|
io.Reader
|
||||||
|
|
||||||
// Clone returns a copy of the ShakeHash in its current state.
|
// Clone returns a copy of the ShakeHash in its current state.
|
||||||
Clone() ShakeHash
|
Clone() ShakeHash
|
||||||
|
|
||||||
// Reset resets the ShakeHash to its initial state.
|
|
||||||
Reset()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// cSHAKE specific context
|
// cSHAKE specific context
|
||||||
|
|
@ -81,8 +80,8 @@ func leftEncode(value uint64) []byte {
|
||||||
return b[i-1:]
|
return b[i-1:]
|
||||||
}
|
}
|
||||||
|
|
||||||
func newCShake(N, S []byte, rate int, dsbyte byte) ShakeHash {
|
func newCShake(N, S []byte, rate, outputLen int, dsbyte byte) ShakeHash {
|
||||||
c := cshakeState{state: &state{rate: rate, dsbyte: dsbyte}}
|
c := cshakeState{state: &state{rate: rate, outputLen: outputLen, dsbyte: dsbyte}}
|
||||||
|
|
||||||
// leftEncode returns max 9 bytes
|
// leftEncode returns max 9 bytes
|
||||||
c.initBlock = make([]byte, 0, 9*2+len(N)+len(S))
|
c.initBlock = make([]byte, 0, 9*2+len(N)+len(S))
|
||||||
|
|
@ -119,7 +118,7 @@ func NewShake128() ShakeHash {
|
||||||
if h := newShake128Asm(); h != nil {
|
if h := newShake128Asm(); h != nil {
|
||||||
return h
|
return h
|
||||||
}
|
}
|
||||||
return &state{rate: rate128, dsbyte: dsbyteShake}
|
return &state{rate: rate128, outputLen: 32, dsbyte: dsbyteShake}
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewShake256 creates a new SHAKE256 variable-output-length ShakeHash.
|
// NewShake256 creates a new SHAKE256 variable-output-length ShakeHash.
|
||||||
|
|
@ -129,7 +128,7 @@ func NewShake256() ShakeHash {
|
||||||
if h := newShake256Asm(); h != nil {
|
if h := newShake256Asm(); h != nil {
|
||||||
return h
|
return h
|
||||||
}
|
}
|
||||||
return &state{rate: rate256, dsbyte: dsbyteShake}
|
return &state{rate: rate256, outputLen: 64, dsbyte: dsbyteShake}
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewCShake128 creates a new instance of cSHAKE128 variable-output-length ShakeHash,
|
// NewCShake128 creates a new instance of cSHAKE128 variable-output-length ShakeHash,
|
||||||
|
|
@ -142,7 +141,7 @@ func NewCShake128(N, S []byte) ShakeHash {
|
||||||
if len(N) == 0 && len(S) == 0 {
|
if len(N) == 0 && len(S) == 0 {
|
||||||
return NewShake128()
|
return NewShake128()
|
||||||
}
|
}
|
||||||
return newCShake(N, S, rate128, dsbyteCShake)
|
return newCShake(N, S, rate128, 32, dsbyteCShake)
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewCShake256 creates a new instance of cSHAKE256 variable-output-length ShakeHash,
|
// NewCShake256 creates a new instance of cSHAKE256 variable-output-length ShakeHash,
|
||||||
|
|
@ -155,7 +154,7 @@ func NewCShake256(N, S []byte) ShakeHash {
|
||||||
if len(N) == 0 && len(S) == 0 {
|
if len(N) == 0 && len(S) == 0 {
|
||||||
return NewShake256()
|
return NewShake256()
|
||||||
}
|
}
|
||||||
return newCShake(N, S, rate256, dsbyteCShake)
|
return newCShake(N, S, rate256, 64, dsbyteCShake)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ShakeSum128 writes an arbitrary-length digest of data into hash.
|
// ShakeSum128 writes an arbitrary-length digest of data into hash.
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"crypto/dsa"
|
"crypto/dsa"
|
||||||
"crypto/ecdsa"
|
"crypto/ecdsa"
|
||||||
|
"crypto/ed25519"
|
||||||
"crypto/elliptic"
|
"crypto/elliptic"
|
||||||
"crypto/rsa"
|
"crypto/rsa"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
|
|
@ -26,7 +27,6 @@ import (
|
||||||
"math/big"
|
"math/big"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"golang.org/x/crypto/ed25519"
|
|
||||||
"golang.org/x/crypto/ssh"
|
"golang.org/x/crypto/ssh"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ package agent
|
||||||
import (
|
import (
|
||||||
"crypto/dsa"
|
"crypto/dsa"
|
||||||
"crypto/ecdsa"
|
"crypto/ecdsa"
|
||||||
|
"crypto/ed25519"
|
||||||
"crypto/elliptic"
|
"crypto/elliptic"
|
||||||
"crypto/rsa"
|
"crypto/rsa"
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
|
|
@ -16,7 +17,6 @@ import (
|
||||||
"log"
|
"log"
|
||||||
"math/big"
|
"math/big"
|
||||||
|
|
||||||
"golang.org/x/crypto/ed25519"
|
|
||||||
"golang.org/x/crypto/ssh"
|
"golang.org/x/crypto/ssh"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,8 +16,9 @@ import (
|
||||||
|
|
||||||
// Certificate algorithm names from [PROTOCOL.certkeys]. These values can appear
|
// Certificate algorithm names from [PROTOCOL.certkeys]. These values can appear
|
||||||
// in Certificate.Type, PublicKey.Type, and ClientConfig.HostKeyAlgorithms.
|
// in Certificate.Type, PublicKey.Type, and ClientConfig.HostKeyAlgorithms.
|
||||||
// Unlike key algorithm names, these are not passed to AlgorithmSigner and don't
|
// Unlike key algorithm names, these are not passed to AlgorithmSigner nor
|
||||||
// appear in the Signature.Format field.
|
// returned by MultiAlgorithmSigner and don't appear in the Signature.Format
|
||||||
|
// field.
|
||||||
const (
|
const (
|
||||||
CertAlgoRSAv01 = "ssh-rsa-cert-v01@openssh.com"
|
CertAlgoRSAv01 = "ssh-rsa-cert-v01@openssh.com"
|
||||||
CertAlgoDSAv01 = "ssh-dss-cert-v01@openssh.com"
|
CertAlgoDSAv01 = "ssh-dss-cert-v01@openssh.com"
|
||||||
|
|
@ -255,10 +256,17 @@ func NewCertSigner(cert *Certificate, signer Signer) (Signer, error) {
|
||||||
return nil, errors.New("ssh: signer and cert have different public key")
|
return nil, errors.New("ssh: signer and cert have different public key")
|
||||||
}
|
}
|
||||||
|
|
||||||
if algorithmSigner, ok := signer.(AlgorithmSigner); ok {
|
switch s := signer.(type) {
|
||||||
|
case MultiAlgorithmSigner:
|
||||||
|
return &multiAlgorithmSigner{
|
||||||
|
AlgorithmSigner: &algorithmOpenSSHCertSigner{
|
||||||
|
&openSSHCertSigner{cert, signer}, s},
|
||||||
|
supportedAlgorithms: s.Algorithms(),
|
||||||
|
}, nil
|
||||||
|
case AlgorithmSigner:
|
||||||
return &algorithmOpenSSHCertSigner{
|
return &algorithmOpenSSHCertSigner{
|
||||||
&openSSHCertSigner{cert, signer}, algorithmSigner}, nil
|
&openSSHCertSigner{cert, signer}, s}, nil
|
||||||
} else {
|
default:
|
||||||
return &openSSHCertSigner{cert, signer}, nil
|
return &openSSHCertSigner{cert, signer}, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -432,7 +440,9 @@ func (c *CertChecker) CheckCert(principal string, cert *Certificate) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// SignCert signs the certificate with an authority, setting the Nonce,
|
// SignCert signs the certificate with an authority, setting the Nonce,
|
||||||
// SignatureKey, and Signature fields.
|
// SignatureKey, and Signature fields. If the authority implements the
|
||||||
|
// MultiAlgorithmSigner interface the first algorithm in the list is used. This
|
||||||
|
// is useful if you want to sign with a specific algorithm.
|
||||||
func (c *Certificate) SignCert(rand io.Reader, authority Signer) error {
|
func (c *Certificate) SignCert(rand io.Reader, authority Signer) error {
|
||||||
c.Nonce = make([]byte, 32)
|
c.Nonce = make([]byte, 32)
|
||||||
if _, err := io.ReadFull(rand, c.Nonce); err != nil {
|
if _, err := io.ReadFull(rand, c.Nonce); err != nil {
|
||||||
|
|
@ -440,8 +450,20 @@ func (c *Certificate) SignCert(rand io.Reader, authority Signer) error {
|
||||||
}
|
}
|
||||||
c.SignatureKey = authority.PublicKey()
|
c.SignatureKey = authority.PublicKey()
|
||||||
|
|
||||||
// Default to KeyAlgoRSASHA512 for ssh-rsa signers.
|
if v, ok := authority.(MultiAlgorithmSigner); ok {
|
||||||
if v, ok := authority.(AlgorithmSigner); ok && v.PublicKey().Type() == KeyAlgoRSA {
|
if len(v.Algorithms()) == 0 {
|
||||||
|
return errors.New("the provided authority has no signature algorithm")
|
||||||
|
}
|
||||||
|
// Use the first algorithm in the list.
|
||||||
|
sig, err := v.SignWithAlgorithm(rand, c.bytesForSigning(), v.Algorithms()[0])
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
c.Signature = sig
|
||||||
|
return nil
|
||||||
|
} else if v, ok := authority.(AlgorithmSigner); ok && v.PublicKey().Type() == KeyAlgoRSA {
|
||||||
|
// Default to KeyAlgoRSASHA512 for ssh-rsa signers.
|
||||||
|
// TODO: consider using KeyAlgoRSASHA256 as default.
|
||||||
sig, err := v.SignWithAlgorithm(rand, c.bytesForSigning(), KeyAlgoRSASHA512)
|
sig, err := v.SignWithAlgorithm(rand, c.bytesForSigning(), KeyAlgoRSASHA512)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,9 @@ func (c *connection) clientAuthenticate(config *ClientConfig) error {
|
||||||
for auth := AuthMethod(new(noneAuth)); auth != nil; {
|
for auth := AuthMethod(new(noneAuth)); auth != nil; {
|
||||||
ok, methods, err := auth.auth(sessionID, config.User, c.transport, config.Rand, extensions)
|
ok, methods, err := auth.auth(sessionID, config.User, c.transport, config.Rand, extensions)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
// We return the error later if there is no other method left to
|
||||||
|
// try.
|
||||||
|
ok = authFailure
|
||||||
}
|
}
|
||||||
if ok == authSuccess {
|
if ok == authSuccess {
|
||||||
// success
|
// success
|
||||||
|
|
@ -101,6 +103,12 @@ func (c *connection) clientAuthenticate(config *ClientConfig) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if auth == nil && err != nil {
|
||||||
|
// We have an error and there are no other authentication methods to
|
||||||
|
// try, so we return it.
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return fmt.Errorf("ssh: unable to authenticate, attempted methods %v, no supported methods remain", tried)
|
return fmt.Errorf("ssh: unable to authenticate, attempted methods %v, no supported methods remain", tried)
|
||||||
}
|
}
|
||||||
|
|
@ -217,21 +225,45 @@ func (cb publicKeyCallback) method() string {
|
||||||
return "publickey"
|
return "publickey"
|
||||||
}
|
}
|
||||||
|
|
||||||
func pickSignatureAlgorithm(signer Signer, extensions map[string][]byte) (as AlgorithmSigner, algo string) {
|
func pickSignatureAlgorithm(signer Signer, extensions map[string][]byte) (MultiAlgorithmSigner, string, error) {
|
||||||
|
var as MultiAlgorithmSigner
|
||||||
keyFormat := signer.PublicKey().Type()
|
keyFormat := signer.PublicKey().Type()
|
||||||
|
|
||||||
// Like in sendKexInit, if the public key implements AlgorithmSigner we
|
// If the signer implements MultiAlgorithmSigner we use the algorithms it
|
||||||
// assume it supports all algorithms, otherwise only the key format one.
|
// support, if it implements AlgorithmSigner we assume it supports all
|
||||||
as, ok := signer.(AlgorithmSigner)
|
// algorithms, otherwise only the key format one.
|
||||||
if !ok {
|
switch s := signer.(type) {
|
||||||
return algorithmSignerWrapper{signer}, keyFormat
|
case MultiAlgorithmSigner:
|
||||||
|
as = s
|
||||||
|
case AlgorithmSigner:
|
||||||
|
as = &multiAlgorithmSigner{
|
||||||
|
AlgorithmSigner: s,
|
||||||
|
supportedAlgorithms: algorithmsForKeyFormat(underlyingAlgo(keyFormat)),
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
as = &multiAlgorithmSigner{
|
||||||
|
AlgorithmSigner: algorithmSignerWrapper{signer},
|
||||||
|
supportedAlgorithms: []string{underlyingAlgo(keyFormat)},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getFallbackAlgo := func() (string, error) {
|
||||||
|
// Fallback to use if there is no "server-sig-algs" extension or a
|
||||||
|
// common algorithm cannot be found. We use the public key format if the
|
||||||
|
// MultiAlgorithmSigner supports it, otherwise we return an error.
|
||||||
|
if !contains(as.Algorithms(), underlyingAlgo(keyFormat)) {
|
||||||
|
return "", fmt.Errorf("ssh: no common public key signature algorithm, server only supports %q for key type %q, signer only supports %v",
|
||||||
|
underlyingAlgo(keyFormat), keyFormat, as.Algorithms())
|
||||||
|
}
|
||||||
|
return keyFormat, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
extPayload, ok := extensions["server-sig-algs"]
|
extPayload, ok := extensions["server-sig-algs"]
|
||||||
if !ok {
|
if !ok {
|
||||||
// If there is no "server-sig-algs" extension, fall back to the key
|
// If there is no "server-sig-algs" extension use the fallback
|
||||||
// format algorithm.
|
// algorithm.
|
||||||
return as, keyFormat
|
algo, err := getFallbackAlgo()
|
||||||
|
return as, algo, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// The server-sig-algs extension only carries underlying signature
|
// The server-sig-algs extension only carries underlying signature
|
||||||
|
|
@ -245,15 +277,22 @@ func pickSignatureAlgorithm(signer Signer, extensions map[string][]byte) (as Alg
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
keyAlgos := algorithmsForKeyFormat(keyFormat)
|
// Filter algorithms based on those supported by MultiAlgorithmSigner.
|
||||||
|
var keyAlgos []string
|
||||||
|
for _, algo := range algorithmsForKeyFormat(keyFormat) {
|
||||||
|
if contains(as.Algorithms(), underlyingAlgo(algo)) {
|
||||||
|
keyAlgos = append(keyAlgos, algo)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
algo, err := findCommon("public key signature algorithm", keyAlgos, serverAlgos)
|
algo, err := findCommon("public key signature algorithm", keyAlgos, serverAlgos)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// If there is no overlap, try the key anyway with the key format
|
// If there is no overlap, return the fallback algorithm to support
|
||||||
// algorithm, to support servers that fail to list all supported
|
// servers that fail to list all supported algorithms.
|
||||||
// algorithms.
|
algo, err := getFallbackAlgo()
|
||||||
return as, keyFormat
|
return as, algo, err
|
||||||
}
|
}
|
||||||
return as, algo
|
return as, algo, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cb publicKeyCallback) auth(session []byte, user string, c packetConn, rand io.Reader, extensions map[string][]byte) (authResult, []string, error) {
|
func (cb publicKeyCallback) auth(session []byte, user string, c packetConn, rand io.Reader, extensions map[string][]byte) (authResult, []string, error) {
|
||||||
|
|
@ -267,10 +306,17 @@ func (cb publicKeyCallback) auth(session []byte, user string, c packetConn, rand
|
||||||
return authFailure, nil, err
|
return authFailure, nil, err
|
||||||
}
|
}
|
||||||
var methods []string
|
var methods []string
|
||||||
|
var errSigAlgo error
|
||||||
for _, signer := range signers {
|
for _, signer := range signers {
|
||||||
pub := signer.PublicKey()
|
pub := signer.PublicKey()
|
||||||
as, algo := pickSignatureAlgorithm(signer, extensions)
|
as, algo, err := pickSignatureAlgorithm(signer, extensions)
|
||||||
|
if err != nil && errSigAlgo == nil {
|
||||||
|
// If we cannot negotiate a signature algorithm store the first
|
||||||
|
// error so we can return it to provide a more meaningful message if
|
||||||
|
// no other signers work.
|
||||||
|
errSigAlgo = err
|
||||||
|
continue
|
||||||
|
}
|
||||||
ok, err := validateKey(pub, algo, user, c)
|
ok, err := validateKey(pub, algo, user, c)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return authFailure, nil, err
|
return authFailure, nil, err
|
||||||
|
|
@ -317,22 +363,12 @@ func (cb publicKeyCallback) auth(session []byte, user string, c packetConn, rand
|
||||||
// contain the "publickey" method, do not attempt to authenticate with any
|
// contain the "publickey" method, do not attempt to authenticate with any
|
||||||
// other keys. According to RFC 4252 Section 7, the latter can occur when
|
// other keys. According to RFC 4252 Section 7, the latter can occur when
|
||||||
// additional authentication methods are required.
|
// additional authentication methods are required.
|
||||||
if success == authSuccess || !containsMethod(methods, cb.method()) {
|
if success == authSuccess || !contains(methods, cb.method()) {
|
||||||
return success, methods, err
|
return success, methods, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return authFailure, methods, nil
|
return authFailure, methods, errSigAlgo
|
||||||
}
|
|
||||||
|
|
||||||
func containsMethod(methods []string, method string) bool {
|
|
||||||
for _, m := range methods {
|
|
||||||
if m == method {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// validateKey validates the key provided is acceptable to the server.
|
// validateKey validates the key provided is acceptable to the server.
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ others.
|
||||||
|
|
||||||
References:
|
References:
|
||||||
|
|
||||||
|
[PROTOCOL]: https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/PROTOCOL?rev=HEAD
|
||||||
[PROTOCOL.certkeys]: http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/PROTOCOL.certkeys?rev=HEAD
|
[PROTOCOL.certkeys]: http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/PROTOCOL.certkeys?rev=HEAD
|
||||||
[SSH-PARAMETERS]: http://www.iana.org/assignments/ssh-parameters/ssh-parameters.xml#ssh-parameters-1
|
[SSH-PARAMETERS]: http://www.iana.org/assignments/ssh-parameters/ssh-parameters.xml#ssh-parameters-1
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -461,19 +461,24 @@ func (t *handshakeTransport) sendKexInit() error {
|
||||||
isServer := len(t.hostKeys) > 0
|
isServer := len(t.hostKeys) > 0
|
||||||
if isServer {
|
if isServer {
|
||||||
for _, k := range t.hostKeys {
|
for _, k := range t.hostKeys {
|
||||||
// If k is an AlgorithmSigner, presume it supports all signature algorithms
|
// If k is a MultiAlgorithmSigner, we restrict the signature
|
||||||
// associated with the key format. (Ideally AlgorithmSigner would have a
|
// algorithms. If k is a AlgorithmSigner, presume it supports all
|
||||||
// method to advertise supported algorithms, but it doesn't. This means that
|
// signature algorithms associated with the key format. If k is not
|
||||||
// adding support for a new algorithm is a breaking change, as we will
|
// an AlgorithmSigner, we can only assume it only supports the
|
||||||
// immediately negotiate it even if existing implementations don't support
|
// algorithms that matches the key format. (This means that Sign
|
||||||
// it. If that ever happens, we'll have to figure something out.)
|
// can't pick a different default).
|
||||||
// If k is not an AlgorithmSigner, we can only assume it only supports the
|
|
||||||
// algorithms that matches the key format. (This means that Sign can't pick
|
|
||||||
// a different default.)
|
|
||||||
keyFormat := k.PublicKey().Type()
|
keyFormat := k.PublicKey().Type()
|
||||||
if _, ok := k.(AlgorithmSigner); ok {
|
|
||||||
|
switch s := k.(type) {
|
||||||
|
case MultiAlgorithmSigner:
|
||||||
|
for _, algo := range algorithmsForKeyFormat(keyFormat) {
|
||||||
|
if contains(s.Algorithms(), underlyingAlgo(algo)) {
|
||||||
|
msg.ServerHostKeyAlgos = append(msg.ServerHostKeyAlgos, algo)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case AlgorithmSigner:
|
||||||
msg.ServerHostKeyAlgos = append(msg.ServerHostKeyAlgos, algorithmsForKeyFormat(keyFormat)...)
|
msg.ServerHostKeyAlgos = append(msg.ServerHostKeyAlgos, algorithmsForKeyFormat(keyFormat)...)
|
||||||
} else {
|
default:
|
||||||
msg.ServerHostKeyAlgos = append(msg.ServerHostKeyAlgos, keyFormat)
|
msg.ServerHostKeyAlgos = append(msg.ServerHostKeyAlgos, keyFormat)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -642,16 +647,20 @@ func (t *handshakeTransport) enterKeyExchange(otherInitPacket []byte) error {
|
||||||
|
|
||||||
// On the server side, after the first SSH_MSG_NEWKEYS, send a SSH_MSG_EXT_INFO
|
// On the server side, after the first SSH_MSG_NEWKEYS, send a SSH_MSG_EXT_INFO
|
||||||
// message with the server-sig-algs extension if the client supports it. See
|
// message with the server-sig-algs extension if the client supports it. See
|
||||||
// RFC 8308, Sections 2.4 and 3.1.
|
// RFC 8308, Sections 2.4 and 3.1, and [PROTOCOL], Section 1.9.
|
||||||
if !isClient && firstKeyExchange && contains(clientInit.KexAlgos, "ext-info-c") {
|
if !isClient && firstKeyExchange && contains(clientInit.KexAlgos, "ext-info-c") {
|
||||||
extInfo := &extInfoMsg{
|
extInfo := &extInfoMsg{
|
||||||
NumExtensions: 1,
|
NumExtensions: 2,
|
||||||
Payload: make([]byte, 0, 4+15+4+len(supportedPubKeyAuthAlgosList)),
|
Payload: make([]byte, 0, 4+15+4+len(supportedPubKeyAuthAlgosList)+4+16+4+1),
|
||||||
}
|
}
|
||||||
extInfo.Payload = appendInt(extInfo.Payload, len("server-sig-algs"))
|
extInfo.Payload = appendInt(extInfo.Payload, len("server-sig-algs"))
|
||||||
extInfo.Payload = append(extInfo.Payload, "server-sig-algs"...)
|
extInfo.Payload = append(extInfo.Payload, "server-sig-algs"...)
|
||||||
extInfo.Payload = appendInt(extInfo.Payload, len(supportedPubKeyAuthAlgosList))
|
extInfo.Payload = appendInt(extInfo.Payload, len(supportedPubKeyAuthAlgosList))
|
||||||
extInfo.Payload = append(extInfo.Payload, supportedPubKeyAuthAlgosList...)
|
extInfo.Payload = append(extInfo.Payload, supportedPubKeyAuthAlgosList...)
|
||||||
|
extInfo.Payload = appendInt(extInfo.Payload, len("ping@openssh.com"))
|
||||||
|
extInfo.Payload = append(extInfo.Payload, "ping@openssh.com"...)
|
||||||
|
extInfo.Payload = appendInt(extInfo.Payload, 1)
|
||||||
|
extInfo.Payload = append(extInfo.Payload, "0"...)
|
||||||
if err := t.conn.writePacket(Marshal(extInfo)); err != nil {
|
if err := t.conn.writePacket(Marshal(extInfo)); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
@ -685,9 +694,16 @@ func (a algorithmSignerWrapper) SignWithAlgorithm(rand io.Reader, data []byte, a
|
||||||
|
|
||||||
func pickHostKey(hostKeys []Signer, algo string) AlgorithmSigner {
|
func pickHostKey(hostKeys []Signer, algo string) AlgorithmSigner {
|
||||||
for _, k := range hostKeys {
|
for _, k := range hostKeys {
|
||||||
|
if s, ok := k.(MultiAlgorithmSigner); ok {
|
||||||
|
if !contains(s.Algorithms(), underlyingAlgo(algo)) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if algo == k.PublicKey().Type() {
|
if algo == k.PublicKey().Type() {
|
||||||
return algorithmSignerWrapper{k}
|
return algorithmSignerWrapper{k}
|
||||||
}
|
}
|
||||||
|
|
||||||
k, ok := k.(AlgorithmSigner)
|
k, ok := k.(AlgorithmSigner)
|
||||||
if !ok {
|
if !ok {
|
||||||
continue
|
continue
|
||||||
|
|
|
||||||
|
|
@ -11,13 +11,16 @@ import (
|
||||||
"crypto/cipher"
|
"crypto/cipher"
|
||||||
"crypto/dsa"
|
"crypto/dsa"
|
||||||
"crypto/ecdsa"
|
"crypto/ecdsa"
|
||||||
|
"crypto/ed25519"
|
||||||
"crypto/elliptic"
|
"crypto/elliptic"
|
||||||
"crypto/md5"
|
"crypto/md5"
|
||||||
|
"crypto/rand"
|
||||||
"crypto/rsa"
|
"crypto/rsa"
|
||||||
"crypto/sha256"
|
"crypto/sha256"
|
||||||
"crypto/x509"
|
"crypto/x509"
|
||||||
"encoding/asn1"
|
"encoding/asn1"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
|
"encoding/binary"
|
||||||
"encoding/hex"
|
"encoding/hex"
|
||||||
"encoding/pem"
|
"encoding/pem"
|
||||||
"errors"
|
"errors"
|
||||||
|
|
@ -26,7 +29,6 @@ import (
|
||||||
"math/big"
|
"math/big"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"golang.org/x/crypto/ed25519"
|
|
||||||
"golang.org/x/crypto/ssh/internal/bcrypt_pbkdf"
|
"golang.org/x/crypto/ssh/internal/bcrypt_pbkdf"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -295,6 +297,18 @@ func MarshalAuthorizedKey(key PublicKey) []byte {
|
||||||
return b.Bytes()
|
return b.Bytes()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MarshalPrivateKey returns a PEM block with the private key serialized in the
|
||||||
|
// OpenSSH format.
|
||||||
|
func MarshalPrivateKey(key crypto.PrivateKey, comment string) (*pem.Block, error) {
|
||||||
|
return marshalOpenSSHPrivateKey(key, comment, unencryptedOpenSSHMarshaler)
|
||||||
|
}
|
||||||
|
|
||||||
|
// MarshalPrivateKeyWithPassphrase returns a PEM block holding the encrypted
|
||||||
|
// private key serialized in the OpenSSH format.
|
||||||
|
func MarshalPrivateKeyWithPassphrase(key crypto.PrivateKey, comment string, passphrase []byte) (*pem.Block, error) {
|
||||||
|
return marshalOpenSSHPrivateKey(key, comment, passphraseProtectedOpenSSHMarshaler(passphrase))
|
||||||
|
}
|
||||||
|
|
||||||
// PublicKey represents a public key using an unspecified algorithm.
|
// PublicKey represents a public key using an unspecified algorithm.
|
||||||
//
|
//
|
||||||
// Some PublicKeys provided by this package also implement CryptoPublicKey.
|
// Some PublicKeys provided by this package also implement CryptoPublicKey.
|
||||||
|
|
@ -321,7 +335,7 @@ type CryptoPublicKey interface {
|
||||||
|
|
||||||
// A Signer can create signatures that verify against a public key.
|
// A Signer can create signatures that verify against a public key.
|
||||||
//
|
//
|
||||||
// Some Signers provided by this package also implement AlgorithmSigner.
|
// Some Signers provided by this package also implement MultiAlgorithmSigner.
|
||||||
type Signer interface {
|
type Signer interface {
|
||||||
// PublicKey returns the associated PublicKey.
|
// PublicKey returns the associated PublicKey.
|
||||||
PublicKey() PublicKey
|
PublicKey() PublicKey
|
||||||
|
|
@ -336,9 +350,9 @@ type Signer interface {
|
||||||
// An AlgorithmSigner is a Signer that also supports specifying an algorithm to
|
// An AlgorithmSigner is a Signer that also supports specifying an algorithm to
|
||||||
// use for signing.
|
// use for signing.
|
||||||
//
|
//
|
||||||
// An AlgorithmSigner can't advertise the algorithms it supports, so it should
|
// An AlgorithmSigner can't advertise the algorithms it supports, unless it also
|
||||||
// be prepared to be invoked with every algorithm supported by the public key
|
// implements MultiAlgorithmSigner, so it should be prepared to be invoked with
|
||||||
// format.
|
// every algorithm supported by the public key format.
|
||||||
type AlgorithmSigner interface {
|
type AlgorithmSigner interface {
|
||||||
Signer
|
Signer
|
||||||
|
|
||||||
|
|
@ -349,6 +363,75 @@ type AlgorithmSigner interface {
|
||||||
SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error)
|
SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MultiAlgorithmSigner is an AlgorithmSigner that also reports the algorithms
|
||||||
|
// supported by that signer.
|
||||||
|
type MultiAlgorithmSigner interface {
|
||||||
|
AlgorithmSigner
|
||||||
|
|
||||||
|
// Algorithms returns the available algorithms in preference order. The list
|
||||||
|
// must not be empty, and it must not include certificate types.
|
||||||
|
Algorithms() []string
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewSignerWithAlgorithms returns a signer restricted to the specified
|
||||||
|
// algorithms. The algorithms must be set in preference order. The list must not
|
||||||
|
// be empty, and it must not include certificate types. An error is returned if
|
||||||
|
// the specified algorithms are incompatible with the public key type.
|
||||||
|
func NewSignerWithAlgorithms(signer AlgorithmSigner, algorithms []string) (MultiAlgorithmSigner, error) {
|
||||||
|
if len(algorithms) == 0 {
|
||||||
|
return nil, errors.New("ssh: please specify at least one valid signing algorithm")
|
||||||
|
}
|
||||||
|
var signerAlgos []string
|
||||||
|
supportedAlgos := algorithmsForKeyFormat(underlyingAlgo(signer.PublicKey().Type()))
|
||||||
|
if s, ok := signer.(*multiAlgorithmSigner); ok {
|
||||||
|
signerAlgos = s.Algorithms()
|
||||||
|
} else {
|
||||||
|
signerAlgos = supportedAlgos
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, algo := range algorithms {
|
||||||
|
if !contains(supportedAlgos, algo) {
|
||||||
|
return nil, fmt.Errorf("ssh: algorithm %q is not supported for key type %q",
|
||||||
|
algo, signer.PublicKey().Type())
|
||||||
|
}
|
||||||
|
if !contains(signerAlgos, algo) {
|
||||||
|
return nil, fmt.Errorf("ssh: algorithm %q is restricted for the provided signer", algo)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return &multiAlgorithmSigner{
|
||||||
|
AlgorithmSigner: signer,
|
||||||
|
supportedAlgorithms: algorithms,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type multiAlgorithmSigner struct {
|
||||||
|
AlgorithmSigner
|
||||||
|
supportedAlgorithms []string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *multiAlgorithmSigner) Algorithms() []string {
|
||||||
|
return s.supportedAlgorithms
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *multiAlgorithmSigner) isAlgorithmSupported(algorithm string) bool {
|
||||||
|
if algorithm == "" {
|
||||||
|
algorithm = underlyingAlgo(s.PublicKey().Type())
|
||||||
|
}
|
||||||
|
for _, algo := range s.supportedAlgorithms {
|
||||||
|
if algorithm == algo {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *multiAlgorithmSigner) SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) {
|
||||||
|
if !s.isAlgorithmSupported(algorithm) {
|
||||||
|
return nil, fmt.Errorf("ssh: algorithm %q is not supported: %v", algorithm, s.supportedAlgorithms)
|
||||||
|
}
|
||||||
|
return s.AlgorithmSigner.SignWithAlgorithm(rand, data, algorithm)
|
||||||
|
}
|
||||||
|
|
||||||
type rsaPublicKey rsa.PublicKey
|
type rsaPublicKey rsa.PublicKey
|
||||||
|
|
||||||
func (r *rsaPublicKey) Type() string {
|
func (r *rsaPublicKey) Type() string {
|
||||||
|
|
@ -512,6 +595,10 @@ func (k *dsaPrivateKey) Sign(rand io.Reader, data []byte) (*Signature, error) {
|
||||||
return k.SignWithAlgorithm(rand, data, k.PublicKey().Type())
|
return k.SignWithAlgorithm(rand, data, k.PublicKey().Type())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (k *dsaPrivateKey) Algorithms() []string {
|
||||||
|
return []string{k.PublicKey().Type()}
|
||||||
|
}
|
||||||
|
|
||||||
func (k *dsaPrivateKey) SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) {
|
func (k *dsaPrivateKey) SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) {
|
||||||
if algorithm != "" && algorithm != k.PublicKey().Type() {
|
if algorithm != "" && algorithm != k.PublicKey().Type() {
|
||||||
return nil, fmt.Errorf("ssh: unsupported signature algorithm %s", algorithm)
|
return nil, fmt.Errorf("ssh: unsupported signature algorithm %s", algorithm)
|
||||||
|
|
@ -961,13 +1048,16 @@ func (s *wrappedSigner) Sign(rand io.Reader, data []byte) (*Signature, error) {
|
||||||
return s.SignWithAlgorithm(rand, data, s.pubKey.Type())
|
return s.SignWithAlgorithm(rand, data, s.pubKey.Type())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *wrappedSigner) Algorithms() []string {
|
||||||
|
return algorithmsForKeyFormat(s.pubKey.Type())
|
||||||
|
}
|
||||||
|
|
||||||
func (s *wrappedSigner) SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) {
|
func (s *wrappedSigner) SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) {
|
||||||
if algorithm == "" {
|
if algorithm == "" {
|
||||||
algorithm = s.pubKey.Type()
|
algorithm = s.pubKey.Type()
|
||||||
}
|
}
|
||||||
|
|
||||||
supportedAlgos := algorithmsForKeyFormat(s.pubKey.Type())
|
if !contains(s.Algorithms(), algorithm) {
|
||||||
if !contains(supportedAlgos, algorithm) {
|
|
||||||
return nil, fmt.Errorf("ssh: unsupported signature algorithm %q for key format %q", algorithm, s.pubKey.Type())
|
return nil, fmt.Errorf("ssh: unsupported signature algorithm %q for key format %q", algorithm, s.pubKey.Type())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1241,28 +1331,106 @@ func passphraseProtectedOpenSSHKey(passphrase []byte) openSSHDecryptFunc {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func unencryptedOpenSSHMarshaler(privKeyBlock []byte) ([]byte, string, string, string, error) {
|
||||||
|
key := generateOpenSSHPadding(privKeyBlock, 8)
|
||||||
|
return key, "none", "none", "", nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func passphraseProtectedOpenSSHMarshaler(passphrase []byte) openSSHEncryptFunc {
|
||||||
|
return func(privKeyBlock []byte) ([]byte, string, string, string, error) {
|
||||||
|
salt := make([]byte, 16)
|
||||||
|
if _, err := rand.Read(salt); err != nil {
|
||||||
|
return nil, "", "", "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
opts := struct {
|
||||||
|
Salt []byte
|
||||||
|
Rounds uint32
|
||||||
|
}{salt, 16}
|
||||||
|
|
||||||
|
// Derive key to encrypt the private key block.
|
||||||
|
k, err := bcrypt_pbkdf.Key(passphrase, salt, int(opts.Rounds), 32+aes.BlockSize)
|
||||||
|
if err != nil {
|
||||||
|
return nil, "", "", "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add padding matching the block size of AES.
|
||||||
|
keyBlock := generateOpenSSHPadding(privKeyBlock, aes.BlockSize)
|
||||||
|
|
||||||
|
// Encrypt the private key using the derived secret.
|
||||||
|
|
||||||
|
dst := make([]byte, len(keyBlock))
|
||||||
|
key, iv := k[:32], k[32:]
|
||||||
|
block, err := aes.NewCipher(key)
|
||||||
|
if err != nil {
|
||||||
|
return nil, "", "", "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
stream := cipher.NewCTR(block, iv)
|
||||||
|
stream.XORKeyStream(dst, keyBlock)
|
||||||
|
|
||||||
|
return dst, "aes256-ctr", "bcrypt", string(Marshal(opts)), nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const privateKeyAuthMagic = "openssh-key-v1\x00"
|
||||||
|
|
||||||
type openSSHDecryptFunc func(CipherName, KdfName, KdfOpts string, PrivKeyBlock []byte) ([]byte, error)
|
type openSSHDecryptFunc func(CipherName, KdfName, KdfOpts string, PrivKeyBlock []byte) ([]byte, error)
|
||||||
|
type openSSHEncryptFunc func(PrivKeyBlock []byte) (ProtectedKeyBlock []byte, cipherName, kdfName, kdfOptions string, err error)
|
||||||
|
|
||||||
|
type openSSHEncryptedPrivateKey struct {
|
||||||
|
CipherName string
|
||||||
|
KdfName string
|
||||||
|
KdfOpts string
|
||||||
|
NumKeys uint32
|
||||||
|
PubKey []byte
|
||||||
|
PrivKeyBlock []byte
|
||||||
|
}
|
||||||
|
|
||||||
|
type openSSHPrivateKey struct {
|
||||||
|
Check1 uint32
|
||||||
|
Check2 uint32
|
||||||
|
Keytype string
|
||||||
|
Rest []byte `ssh:"rest"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type openSSHRSAPrivateKey struct {
|
||||||
|
N *big.Int
|
||||||
|
E *big.Int
|
||||||
|
D *big.Int
|
||||||
|
Iqmp *big.Int
|
||||||
|
P *big.Int
|
||||||
|
Q *big.Int
|
||||||
|
Comment string
|
||||||
|
Pad []byte `ssh:"rest"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type openSSHEd25519PrivateKey struct {
|
||||||
|
Pub []byte
|
||||||
|
Priv []byte
|
||||||
|
Comment string
|
||||||
|
Pad []byte `ssh:"rest"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type openSSHECDSAPrivateKey struct {
|
||||||
|
Curve string
|
||||||
|
Pub []byte
|
||||||
|
D *big.Int
|
||||||
|
Comment string
|
||||||
|
Pad []byte `ssh:"rest"`
|
||||||
|
}
|
||||||
|
|
||||||
// parseOpenSSHPrivateKey parses an OpenSSH private key, using the decrypt
|
// parseOpenSSHPrivateKey parses an OpenSSH private key, using the decrypt
|
||||||
// function to unwrap the encrypted portion. unencryptedOpenSSHKey can be used
|
// function to unwrap the encrypted portion. unencryptedOpenSSHKey can be used
|
||||||
// as the decrypt function to parse an unencrypted private key. See
|
// as the decrypt function to parse an unencrypted private key. See
|
||||||
// https://github.com/openssh/openssh-portable/blob/master/PROTOCOL.key.
|
// https://github.com/openssh/openssh-portable/blob/master/PROTOCOL.key.
|
||||||
func parseOpenSSHPrivateKey(key []byte, decrypt openSSHDecryptFunc) (crypto.PrivateKey, error) {
|
func parseOpenSSHPrivateKey(key []byte, decrypt openSSHDecryptFunc) (crypto.PrivateKey, error) {
|
||||||
const magic = "openssh-key-v1\x00"
|
if len(key) < len(privateKeyAuthMagic) || string(key[:len(privateKeyAuthMagic)]) != privateKeyAuthMagic {
|
||||||
if len(key) < len(magic) || string(key[:len(magic)]) != magic {
|
|
||||||
return nil, errors.New("ssh: invalid openssh private key format")
|
return nil, errors.New("ssh: invalid openssh private key format")
|
||||||
}
|
}
|
||||||
remaining := key[len(magic):]
|
remaining := key[len(privateKeyAuthMagic):]
|
||||||
|
|
||||||
var w struct {
|
|
||||||
CipherName string
|
|
||||||
KdfName string
|
|
||||||
KdfOpts string
|
|
||||||
NumKeys uint32
|
|
||||||
PubKey []byte
|
|
||||||
PrivKeyBlock []byte
|
|
||||||
}
|
|
||||||
|
|
||||||
|
var w openSSHEncryptedPrivateKey
|
||||||
if err := Unmarshal(remaining, &w); err != nil {
|
if err := Unmarshal(remaining, &w); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
@ -1284,13 +1452,7 @@ func parseOpenSSHPrivateKey(key []byte, decrypt openSSHDecryptFunc) (crypto.Priv
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
pk1 := struct {
|
var pk1 openSSHPrivateKey
|
||||||
Check1 uint32
|
|
||||||
Check2 uint32
|
|
||||||
Keytype string
|
|
||||||
Rest []byte `ssh:"rest"`
|
|
||||||
}{}
|
|
||||||
|
|
||||||
if err := Unmarshal(privKeyBlock, &pk1); err != nil || pk1.Check1 != pk1.Check2 {
|
if err := Unmarshal(privKeyBlock, &pk1); err != nil || pk1.Check1 != pk1.Check2 {
|
||||||
if w.CipherName != "none" {
|
if w.CipherName != "none" {
|
||||||
return nil, x509.IncorrectPasswordError
|
return nil, x509.IncorrectPasswordError
|
||||||
|
|
@ -1300,18 +1462,7 @@ func parseOpenSSHPrivateKey(key []byte, decrypt openSSHDecryptFunc) (crypto.Priv
|
||||||
|
|
||||||
switch pk1.Keytype {
|
switch pk1.Keytype {
|
||||||
case KeyAlgoRSA:
|
case KeyAlgoRSA:
|
||||||
// https://github.com/openssh/openssh-portable/blob/master/sshkey.c#L2760-L2773
|
var key openSSHRSAPrivateKey
|
||||||
key := struct {
|
|
||||||
N *big.Int
|
|
||||||
E *big.Int
|
|
||||||
D *big.Int
|
|
||||||
Iqmp *big.Int
|
|
||||||
P *big.Int
|
|
||||||
Q *big.Int
|
|
||||||
Comment string
|
|
||||||
Pad []byte `ssh:"rest"`
|
|
||||||
}{}
|
|
||||||
|
|
||||||
if err := Unmarshal(pk1.Rest, &key); err != nil {
|
if err := Unmarshal(pk1.Rest, &key); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
@ -1337,13 +1488,7 @@ func parseOpenSSHPrivateKey(key []byte, decrypt openSSHDecryptFunc) (crypto.Priv
|
||||||
|
|
||||||
return pk, nil
|
return pk, nil
|
||||||
case KeyAlgoED25519:
|
case KeyAlgoED25519:
|
||||||
key := struct {
|
var key openSSHEd25519PrivateKey
|
||||||
Pub []byte
|
|
||||||
Priv []byte
|
|
||||||
Comment string
|
|
||||||
Pad []byte `ssh:"rest"`
|
|
||||||
}{}
|
|
||||||
|
|
||||||
if err := Unmarshal(pk1.Rest, &key); err != nil {
|
if err := Unmarshal(pk1.Rest, &key); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
@ -1360,14 +1505,7 @@ func parseOpenSSHPrivateKey(key []byte, decrypt openSSHDecryptFunc) (crypto.Priv
|
||||||
copy(pk, key.Priv)
|
copy(pk, key.Priv)
|
||||||
return &pk, nil
|
return &pk, nil
|
||||||
case KeyAlgoECDSA256, KeyAlgoECDSA384, KeyAlgoECDSA521:
|
case KeyAlgoECDSA256, KeyAlgoECDSA384, KeyAlgoECDSA521:
|
||||||
key := struct {
|
var key openSSHECDSAPrivateKey
|
||||||
Curve string
|
|
||||||
Pub []byte
|
|
||||||
D *big.Int
|
|
||||||
Comment string
|
|
||||||
Pad []byte `ssh:"rest"`
|
|
||||||
}{}
|
|
||||||
|
|
||||||
if err := Unmarshal(pk1.Rest, &key); err != nil {
|
if err := Unmarshal(pk1.Rest, &key); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
@ -1415,6 +1553,131 @@ func parseOpenSSHPrivateKey(key []byte, decrypt openSSHDecryptFunc) (crypto.Priv
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func marshalOpenSSHPrivateKey(key crypto.PrivateKey, comment string, encrypt openSSHEncryptFunc) (*pem.Block, error) {
|
||||||
|
var w openSSHEncryptedPrivateKey
|
||||||
|
var pk1 openSSHPrivateKey
|
||||||
|
|
||||||
|
// Random check bytes.
|
||||||
|
var check uint32
|
||||||
|
if err := binary.Read(rand.Reader, binary.BigEndian, &check); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
pk1.Check1 = check
|
||||||
|
pk1.Check2 = check
|
||||||
|
w.NumKeys = 1
|
||||||
|
|
||||||
|
// Use a []byte directly on ed25519 keys.
|
||||||
|
if k, ok := key.(*ed25519.PrivateKey); ok {
|
||||||
|
key = *k
|
||||||
|
}
|
||||||
|
|
||||||
|
switch k := key.(type) {
|
||||||
|
case *rsa.PrivateKey:
|
||||||
|
E := new(big.Int).SetInt64(int64(k.PublicKey.E))
|
||||||
|
// Marshal public key:
|
||||||
|
// E and N are in reversed order in the public and private key.
|
||||||
|
pubKey := struct {
|
||||||
|
KeyType string
|
||||||
|
E *big.Int
|
||||||
|
N *big.Int
|
||||||
|
}{
|
||||||
|
KeyAlgoRSA,
|
||||||
|
E, k.PublicKey.N,
|
||||||
|
}
|
||||||
|
w.PubKey = Marshal(pubKey)
|
||||||
|
|
||||||
|
// Marshal private key.
|
||||||
|
key := openSSHRSAPrivateKey{
|
||||||
|
N: k.PublicKey.N,
|
||||||
|
E: E,
|
||||||
|
D: k.D,
|
||||||
|
Iqmp: k.Precomputed.Qinv,
|
||||||
|
P: k.Primes[0],
|
||||||
|
Q: k.Primes[1],
|
||||||
|
Comment: comment,
|
||||||
|
}
|
||||||
|
pk1.Keytype = KeyAlgoRSA
|
||||||
|
pk1.Rest = Marshal(key)
|
||||||
|
case ed25519.PrivateKey:
|
||||||
|
pub := make([]byte, ed25519.PublicKeySize)
|
||||||
|
priv := make([]byte, ed25519.PrivateKeySize)
|
||||||
|
copy(pub, k[32:])
|
||||||
|
copy(priv, k)
|
||||||
|
|
||||||
|
// Marshal public key.
|
||||||
|
pubKey := struct {
|
||||||
|
KeyType string
|
||||||
|
Pub []byte
|
||||||
|
}{
|
||||||
|
KeyAlgoED25519, pub,
|
||||||
|
}
|
||||||
|
w.PubKey = Marshal(pubKey)
|
||||||
|
|
||||||
|
// Marshal private key.
|
||||||
|
key := openSSHEd25519PrivateKey{
|
||||||
|
Pub: pub,
|
||||||
|
Priv: priv,
|
||||||
|
Comment: comment,
|
||||||
|
}
|
||||||
|
pk1.Keytype = KeyAlgoED25519
|
||||||
|
pk1.Rest = Marshal(key)
|
||||||
|
case *ecdsa.PrivateKey:
|
||||||
|
var curve, keyType string
|
||||||
|
switch name := k.Curve.Params().Name; name {
|
||||||
|
case "P-256":
|
||||||
|
curve = "nistp256"
|
||||||
|
keyType = KeyAlgoECDSA256
|
||||||
|
case "P-384":
|
||||||
|
curve = "nistp384"
|
||||||
|
keyType = KeyAlgoECDSA384
|
||||||
|
case "P-521":
|
||||||
|
curve = "nistp521"
|
||||||
|
keyType = KeyAlgoECDSA521
|
||||||
|
default:
|
||||||
|
return nil, errors.New("ssh: unhandled elliptic curve " + name)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub := elliptic.Marshal(k.Curve, k.PublicKey.X, k.PublicKey.Y)
|
||||||
|
|
||||||
|
// Marshal public key.
|
||||||
|
pubKey := struct {
|
||||||
|
KeyType string
|
||||||
|
Curve string
|
||||||
|
Pub []byte
|
||||||
|
}{
|
||||||
|
keyType, curve, pub,
|
||||||
|
}
|
||||||
|
w.PubKey = Marshal(pubKey)
|
||||||
|
|
||||||
|
// Marshal private key.
|
||||||
|
key := openSSHECDSAPrivateKey{
|
||||||
|
Curve: curve,
|
||||||
|
Pub: pub,
|
||||||
|
D: k.D,
|
||||||
|
Comment: comment,
|
||||||
|
}
|
||||||
|
pk1.Keytype = keyType
|
||||||
|
pk1.Rest = Marshal(key)
|
||||||
|
default:
|
||||||
|
return nil, fmt.Errorf("ssh: unsupported key type %T", k)
|
||||||
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
// Add padding and encrypt the key if necessary.
|
||||||
|
w.PrivKeyBlock, w.CipherName, w.KdfName, w.KdfOpts, err = encrypt(Marshal(pk1))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
b := Marshal(w)
|
||||||
|
block := &pem.Block{
|
||||||
|
Type: "OPENSSH PRIVATE KEY",
|
||||||
|
Bytes: append([]byte(privateKeyAuthMagic), b...),
|
||||||
|
}
|
||||||
|
return block, nil
|
||||||
|
}
|
||||||
|
|
||||||
func checkOpenSSHKeyPadding(pad []byte) error {
|
func checkOpenSSHKeyPadding(pad []byte) error {
|
||||||
for i, b := range pad {
|
for i, b := range pad {
|
||||||
if int(b) != i+1 {
|
if int(b) != i+1 {
|
||||||
|
|
@ -1424,6 +1687,13 @@ func checkOpenSSHKeyPadding(pad []byte) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func generateOpenSSHPadding(block []byte, blockSize int) []byte {
|
||||||
|
for i, l := 0, len(block); (l+i)%blockSize != 0; i++ {
|
||||||
|
block = append(block, byte(i+1))
|
||||||
|
}
|
||||||
|
return block
|
||||||
|
}
|
||||||
|
|
||||||
// FingerprintLegacyMD5 returns the user presentation of the key's
|
// FingerprintLegacyMD5 returns the user presentation of the key's
|
||||||
// fingerprint as described by RFC 4716 section 4.
|
// fingerprint as described by RFC 4716 section 4.
|
||||||
func FingerprintLegacyMD5(pubKey PublicKey) string {
|
func FingerprintLegacyMD5(pubKey PublicKey) string {
|
||||||
|
|
|
||||||
|
|
@ -349,6 +349,20 @@ type userAuthGSSAPIError struct {
|
||||||
LanguageTag string
|
LanguageTag string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Transport layer OpenSSH extension. See [PROTOCOL], section 1.9
|
||||||
|
const msgPing = 192
|
||||||
|
|
||||||
|
type pingMsg struct {
|
||||||
|
Data string `sshtype:"192"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Transport layer OpenSSH extension. See [PROTOCOL], section 1.9
|
||||||
|
const msgPong = 193
|
||||||
|
|
||||||
|
type pongMsg struct {
|
||||||
|
Data string `sshtype:"193"`
|
||||||
|
}
|
||||||
|
|
||||||
// typeTags returns the possible type bytes for the given reflect.Type, which
|
// typeTags returns the possible type bytes for the given reflect.Type, which
|
||||||
// should be a struct. The possible values are separated by a '|' character.
|
// should be a struct. The possible values are separated by a '|' character.
|
||||||
func typeTags(structType reflect.Type) (tags []byte) {
|
func typeTags(structType reflect.Type) (tags []byte) {
|
||||||
|
|
|
||||||
|
|
@ -231,6 +231,12 @@ func (m *mux) onePacket() error {
|
||||||
return m.handleChannelOpen(packet)
|
return m.handleChannelOpen(packet)
|
||||||
case msgGlobalRequest, msgRequestSuccess, msgRequestFailure:
|
case msgGlobalRequest, msgRequestSuccess, msgRequestFailure:
|
||||||
return m.handleGlobalPacket(packet)
|
return m.handleGlobalPacket(packet)
|
||||||
|
case msgPing:
|
||||||
|
var msg pingMsg
|
||||||
|
if err := Unmarshal(packet, &msg); err != nil {
|
||||||
|
return fmt.Errorf("failed to unmarshal ping@openssh.com message: %w", err)
|
||||||
|
}
|
||||||
|
return m.sendMessage(pongMsg(msg))
|
||||||
}
|
}
|
||||||
|
|
||||||
// assume a channel packet.
|
// assume a channel packet.
|
||||||
|
|
|
||||||
|
|
@ -576,7 +576,16 @@ userAuthLoop:
|
||||||
if !ok || len(payload) > 0 {
|
if !ok || len(payload) > 0 {
|
||||||
return nil, parseError(msgUserAuthRequest)
|
return nil, parseError(msgUserAuthRequest)
|
||||||
}
|
}
|
||||||
|
// Ensure the declared public key algo is compatible with the
|
||||||
|
// decoded one. This check will ensure we don't accept e.g.
|
||||||
|
// ssh-rsa-cert-v01@openssh.com algorithm with ssh-rsa public
|
||||||
|
// key type. The algorithm and public key type must be
|
||||||
|
// consistent: both must be certificate algorithms, or neither.
|
||||||
|
if !contains(algorithmsForKeyFormat(pubKey.Type()), algo) {
|
||||||
|
authErr = fmt.Errorf("ssh: public key type %q not compatible with selected algorithm %q",
|
||||||
|
pubKey.Type(), algo)
|
||||||
|
break
|
||||||
|
}
|
||||||
// Ensure the public key algo and signature algo
|
// Ensure the public key algo and signature algo
|
||||||
// are supported. Compare the private key
|
// are supported. Compare the private key
|
||||||
// algorithm name that corresponds to algo with
|
// algorithm name that corresponds to algo with
|
||||||
|
|
|
||||||
|
|
@ -1892,9 +1892,11 @@ func (st *stream) copyTrailersToHandlerRequest() {
|
||||||
// onReadTimeout is run on its own goroutine (from time.AfterFunc)
|
// onReadTimeout is run on its own goroutine (from time.AfterFunc)
|
||||||
// when the stream's ReadTimeout has fired.
|
// when the stream's ReadTimeout has fired.
|
||||||
func (st *stream) onReadTimeout() {
|
func (st *stream) onReadTimeout() {
|
||||||
// Wrap the ErrDeadlineExceeded to avoid callers depending on us
|
if st.body != nil {
|
||||||
// returning the bare error.
|
// Wrap the ErrDeadlineExceeded to avoid callers depending on us
|
||||||
st.body.CloseWithError(fmt.Errorf("%w", os.ErrDeadlineExceeded))
|
// returning the bare error.
|
||||||
|
st.body.CloseWithError(fmt.Errorf("%w", os.ErrDeadlineExceeded))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// onWriteTimeout is run on its own goroutine (from time.AfterFunc)
|
// onWriteTimeout is run on its own goroutine (from time.AfterFunc)
|
||||||
|
|
@ -2012,9 +2014,7 @@ func (sc *serverConn) processHeaders(f *MetaHeadersFrame) error {
|
||||||
// (in Go 1.8), though. That's a more sane option anyway.
|
// (in Go 1.8), though. That's a more sane option anyway.
|
||||||
if sc.hs.ReadTimeout != 0 {
|
if sc.hs.ReadTimeout != 0 {
|
||||||
sc.conn.SetReadDeadline(time.Time{})
|
sc.conn.SetReadDeadline(time.Time{})
|
||||||
if st.body != nil {
|
st.readDeadline = time.AfterFunc(sc.hs.ReadTimeout, st.onReadTimeout)
|
||||||
st.readDeadline = time.AfterFunc(sc.hs.ReadTimeout, st.onReadTimeout)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
go sc.runHandler(rw, req, handler)
|
go sc.runHandler(rw, req, handler)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,198 @@
|
||||||
|
package oauth2
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"net/http"
|
||||||
|
"net/url"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"golang.org/x/oauth2/internal"
|
||||||
|
)
|
||||||
|
|
||||||
|
// https://datatracker.ietf.org/doc/html/rfc8628#section-3.5
|
||||||
|
const (
|
||||||
|
errAuthorizationPending = "authorization_pending"
|
||||||
|
errSlowDown = "slow_down"
|
||||||
|
errAccessDenied = "access_denied"
|
||||||
|
errExpiredToken = "expired_token"
|
||||||
|
)
|
||||||
|
|
||||||
|
// DeviceAuthResponse describes a successful RFC 8628 Device Authorization Response
|
||||||
|
// https://datatracker.ietf.org/doc/html/rfc8628#section-3.2
|
||||||
|
type DeviceAuthResponse struct {
|
||||||
|
// DeviceCode
|
||||||
|
DeviceCode string `json:"device_code"`
|
||||||
|
// UserCode is the code the user should enter at the verification uri
|
||||||
|
UserCode string `json:"user_code"`
|
||||||
|
// VerificationURI is where user should enter the user code
|
||||||
|
VerificationURI string `json:"verification_uri"`
|
||||||
|
// VerificationURIComplete (if populated) includes the user code in the verification URI. This is typically shown to the user in non-textual form, such as a QR code.
|
||||||
|
VerificationURIComplete string `json:"verification_uri_complete,omitempty"`
|
||||||
|
// Expiry is when the device code and user code expire
|
||||||
|
Expiry time.Time `json:"expires_in,omitempty"`
|
||||||
|
// Interval is the duration in seconds that Poll should wait between requests
|
||||||
|
Interval int64 `json:"interval,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d DeviceAuthResponse) MarshalJSON() ([]byte, error) {
|
||||||
|
type Alias DeviceAuthResponse
|
||||||
|
var expiresIn int64
|
||||||
|
if !d.Expiry.IsZero() {
|
||||||
|
expiresIn = int64(time.Until(d.Expiry).Seconds())
|
||||||
|
}
|
||||||
|
return json.Marshal(&struct {
|
||||||
|
ExpiresIn int64 `json:"expires_in,omitempty"`
|
||||||
|
*Alias
|
||||||
|
}{
|
||||||
|
ExpiresIn: expiresIn,
|
||||||
|
Alias: (*Alias)(&d),
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *DeviceAuthResponse) UnmarshalJSON(data []byte) error {
|
||||||
|
type Alias DeviceAuthResponse
|
||||||
|
aux := &struct {
|
||||||
|
ExpiresIn int64 `json:"expires_in"`
|
||||||
|
// workaround misspelling of verification_uri
|
||||||
|
VerificationURL string `json:"verification_url"`
|
||||||
|
*Alias
|
||||||
|
}{
|
||||||
|
Alias: (*Alias)(c),
|
||||||
|
}
|
||||||
|
if err := json.Unmarshal(data, &aux); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if aux.ExpiresIn != 0 {
|
||||||
|
c.Expiry = time.Now().UTC().Add(time.Second * time.Duration(aux.ExpiresIn))
|
||||||
|
}
|
||||||
|
if c.VerificationURI == "" {
|
||||||
|
c.VerificationURI = aux.VerificationURL
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeviceAuth returns a device auth struct which contains a device code
|
||||||
|
// and authorization information provided for users to enter on another device.
|
||||||
|
func (c *Config) DeviceAuth(ctx context.Context, opts ...AuthCodeOption) (*DeviceAuthResponse, error) {
|
||||||
|
// https://datatracker.ietf.org/doc/html/rfc8628#section-3.1
|
||||||
|
v := url.Values{
|
||||||
|
"client_id": {c.ClientID},
|
||||||
|
}
|
||||||
|
if len(c.Scopes) > 0 {
|
||||||
|
v.Set("scope", strings.Join(c.Scopes, " "))
|
||||||
|
}
|
||||||
|
for _, opt := range opts {
|
||||||
|
opt.setValue(v)
|
||||||
|
}
|
||||||
|
return retrieveDeviceAuth(ctx, c, v)
|
||||||
|
}
|
||||||
|
|
||||||
|
func retrieveDeviceAuth(ctx context.Context, c *Config, v url.Values) (*DeviceAuthResponse, error) {
|
||||||
|
if c.Endpoint.DeviceAuthURL == "" {
|
||||||
|
return nil, errors.New("endpoint missing DeviceAuthURL")
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := http.NewRequest("POST", c.Endpoint.DeviceAuthURL, strings.NewReader(v.Encode()))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
||||||
|
req.Header.Set("Accept", "application/json")
|
||||||
|
|
||||||
|
t := time.Now()
|
||||||
|
r, err := internal.ContextClient(ctx).Do(req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
body, err := io.ReadAll(io.LimitReader(r.Body, 1<<20))
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("oauth2: cannot auth device: %v", err)
|
||||||
|
}
|
||||||
|
if code := r.StatusCode; code < 200 || code > 299 {
|
||||||
|
return nil, &RetrieveError{
|
||||||
|
Response: r,
|
||||||
|
Body: body,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
da := &DeviceAuthResponse{}
|
||||||
|
err = json.Unmarshal(body, &da)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("unmarshal %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if !da.Expiry.IsZero() {
|
||||||
|
// Make a small adjustment to account for time taken by the request
|
||||||
|
da.Expiry = da.Expiry.Add(-time.Since(t))
|
||||||
|
}
|
||||||
|
|
||||||
|
return da, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeviceAccessToken polls the server to exchange a device code for a token.
|
||||||
|
func (c *Config) DeviceAccessToken(ctx context.Context, da *DeviceAuthResponse, opts ...AuthCodeOption) (*Token, error) {
|
||||||
|
if !da.Expiry.IsZero() {
|
||||||
|
var cancel context.CancelFunc
|
||||||
|
ctx, cancel = context.WithDeadline(ctx, da.Expiry)
|
||||||
|
defer cancel()
|
||||||
|
}
|
||||||
|
|
||||||
|
// https://datatracker.ietf.org/doc/html/rfc8628#section-3.4
|
||||||
|
v := url.Values{
|
||||||
|
"client_id": {c.ClientID},
|
||||||
|
"grant_type": {"urn:ietf:params:oauth:grant-type:device_code"},
|
||||||
|
"device_code": {da.DeviceCode},
|
||||||
|
}
|
||||||
|
if len(c.Scopes) > 0 {
|
||||||
|
v.Set("scope", strings.Join(c.Scopes, " "))
|
||||||
|
}
|
||||||
|
for _, opt := range opts {
|
||||||
|
opt.setValue(v)
|
||||||
|
}
|
||||||
|
|
||||||
|
// "If no value is provided, clients MUST use 5 as the default."
|
||||||
|
// https://datatracker.ietf.org/doc/html/rfc8628#section-3.2
|
||||||
|
interval := da.Interval
|
||||||
|
if interval == 0 {
|
||||||
|
interval = 5
|
||||||
|
}
|
||||||
|
|
||||||
|
ticker := time.NewTicker(time.Duration(interval) * time.Second)
|
||||||
|
defer ticker.Stop()
|
||||||
|
for {
|
||||||
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
return nil, ctx.Err()
|
||||||
|
case <-ticker.C:
|
||||||
|
tok, err := retrieveToken(ctx, c, v)
|
||||||
|
if err == nil {
|
||||||
|
return tok, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
e, ok := err.(*RetrieveError)
|
||||||
|
if !ok {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
switch e.ErrorCode {
|
||||||
|
case errSlowDown:
|
||||||
|
// https://datatracker.ietf.org/doc/html/rfc8628#section-3.5
|
||||||
|
// "the interval MUST be increased by 5 seconds for this and all subsequent requests"
|
||||||
|
interval += 5
|
||||||
|
ticker.Reset(time.Duration(interval) * time.Second)
|
||||||
|
case errAuthorizationPending:
|
||||||
|
// Do nothing.
|
||||||
|
case errAccessDenied, errExpiredToken:
|
||||||
|
fallthrough
|
||||||
|
default:
|
||||||
|
return tok, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -19,7 +19,10 @@ import (
|
||||||
"golang.org/x/oauth2/authhandler"
|
"golang.org/x/oauth2/authhandler"
|
||||||
)
|
)
|
||||||
|
|
||||||
const adcSetupURL = "https://cloud.google.com/docs/authentication/external/set-up-adc"
|
const (
|
||||||
|
adcSetupURL = "https://cloud.google.com/docs/authentication/external/set-up-adc"
|
||||||
|
universeDomainDefault = "googleapis.com"
|
||||||
|
)
|
||||||
|
|
||||||
// Credentials holds Google credentials, including "Application Default Credentials".
|
// Credentials holds Google credentials, including "Application Default Credentials".
|
||||||
// For more details, see:
|
// For more details, see:
|
||||||
|
|
@ -37,6 +40,18 @@ type Credentials struct {
|
||||||
// environment and not with a credentials file, e.g. when code is
|
// environment and not with a credentials file, e.g. when code is
|
||||||
// running on Google Cloud Platform.
|
// running on Google Cloud Platform.
|
||||||
JSON []byte
|
JSON []byte
|
||||||
|
|
||||||
|
// universeDomain is the default service domain for a given Cloud universe.
|
||||||
|
universeDomain string
|
||||||
|
}
|
||||||
|
|
||||||
|
// UniverseDomain returns the default service domain for a given Cloud universe.
|
||||||
|
// The default value is "googleapis.com".
|
||||||
|
func (c *Credentials) UniverseDomain() string {
|
||||||
|
if c.universeDomain == "" {
|
||||||
|
return universeDomainDefault
|
||||||
|
}
|
||||||
|
return c.universeDomain
|
||||||
}
|
}
|
||||||
|
|
||||||
// DefaultCredentials is the old name of Credentials.
|
// DefaultCredentials is the old name of Credentials.
|
||||||
|
|
@ -200,15 +215,23 @@ func CredentialsFromJSONWithParams(ctx context.Context, jsonData []byte, params
|
||||||
if err := json.Unmarshal(jsonData, &f); err != nil {
|
if err := json.Unmarshal(jsonData, &f); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
universeDomain := f.UniverseDomain
|
||||||
|
// Authorized user credentials are only supported in the googleapis.com universe.
|
||||||
|
if f.Type == userCredentialsKey {
|
||||||
|
universeDomain = universeDomainDefault
|
||||||
|
}
|
||||||
|
|
||||||
ts, err := f.tokenSource(ctx, params)
|
ts, err := f.tokenSource(ctx, params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
ts = newErrWrappingTokenSource(ts)
|
ts = newErrWrappingTokenSource(ts)
|
||||||
return &Credentials{
|
return &Credentials{
|
||||||
ProjectID: f.ProjectID,
|
ProjectID: f.ProjectID,
|
||||||
TokenSource: ts,
|
TokenSource: ts,
|
||||||
JSON: jsonData,
|
JSON: jsonData,
|
||||||
|
universeDomain: universeDomain,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,14 +16,16 @@ import (
|
||||||
"cloud.google.com/go/compute/metadata"
|
"cloud.google.com/go/compute/metadata"
|
||||||
"golang.org/x/oauth2"
|
"golang.org/x/oauth2"
|
||||||
"golang.org/x/oauth2/google/internal/externalaccount"
|
"golang.org/x/oauth2/google/internal/externalaccount"
|
||||||
|
"golang.org/x/oauth2/google/internal/externalaccountauthorizeduser"
|
||||||
"golang.org/x/oauth2/jwt"
|
"golang.org/x/oauth2/jwt"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Endpoint is Google's OAuth 2.0 default endpoint.
|
// Endpoint is Google's OAuth 2.0 default endpoint.
|
||||||
var Endpoint = oauth2.Endpoint{
|
var Endpoint = oauth2.Endpoint{
|
||||||
AuthURL: "https://accounts.google.com/o/oauth2/auth",
|
AuthURL: "https://accounts.google.com/o/oauth2/auth",
|
||||||
TokenURL: "https://oauth2.googleapis.com/token",
|
TokenURL: "https://oauth2.googleapis.com/token",
|
||||||
AuthStyle: oauth2.AuthStyleInParams,
|
DeviceAuthURL: "https://oauth2.googleapis.com/device/code",
|
||||||
|
AuthStyle: oauth2.AuthStyleInParams,
|
||||||
}
|
}
|
||||||
|
|
||||||
// MTLSTokenURL is Google's OAuth 2.0 default mTLS endpoint.
|
// MTLSTokenURL is Google's OAuth 2.0 default mTLS endpoint.
|
||||||
|
|
@ -95,10 +97,11 @@ func JWTConfigFromJSON(jsonKey []byte, scope ...string) (*jwt.Config, error) {
|
||||||
|
|
||||||
// JSON key file types.
|
// JSON key file types.
|
||||||
const (
|
const (
|
||||||
serviceAccountKey = "service_account"
|
serviceAccountKey = "service_account"
|
||||||
userCredentialsKey = "authorized_user"
|
userCredentialsKey = "authorized_user"
|
||||||
externalAccountKey = "external_account"
|
externalAccountKey = "external_account"
|
||||||
impersonatedServiceAccount = "impersonated_service_account"
|
externalAccountAuthorizedUserKey = "external_account_authorized_user"
|
||||||
|
impersonatedServiceAccount = "impersonated_service_account"
|
||||||
)
|
)
|
||||||
|
|
||||||
// credentialsFile is the unmarshalled representation of a credentials file.
|
// credentialsFile is the unmarshalled representation of a credentials file.
|
||||||
|
|
@ -106,12 +109,13 @@ type credentialsFile struct {
|
||||||
Type string `json:"type"`
|
Type string `json:"type"`
|
||||||
|
|
||||||
// Service Account fields
|
// Service Account fields
|
||||||
ClientEmail string `json:"client_email"`
|
ClientEmail string `json:"client_email"`
|
||||||
PrivateKeyID string `json:"private_key_id"`
|
PrivateKeyID string `json:"private_key_id"`
|
||||||
PrivateKey string `json:"private_key"`
|
PrivateKey string `json:"private_key"`
|
||||||
AuthURL string `json:"auth_uri"`
|
AuthURL string `json:"auth_uri"`
|
||||||
TokenURL string `json:"token_uri"`
|
TokenURL string `json:"token_uri"`
|
||||||
ProjectID string `json:"project_id"`
|
ProjectID string `json:"project_id"`
|
||||||
|
UniverseDomain string `json:"universe_domain"`
|
||||||
|
|
||||||
// User Credential fields
|
// User Credential fields
|
||||||
// (These typically come from gcloud auth.)
|
// (These typically come from gcloud auth.)
|
||||||
|
|
@ -131,6 +135,9 @@ type credentialsFile struct {
|
||||||
QuotaProjectID string `json:"quota_project_id"`
|
QuotaProjectID string `json:"quota_project_id"`
|
||||||
WorkforcePoolUserProject string `json:"workforce_pool_user_project"`
|
WorkforcePoolUserProject string `json:"workforce_pool_user_project"`
|
||||||
|
|
||||||
|
// External Account Authorized User fields
|
||||||
|
RevokeURL string `json:"revoke_url"`
|
||||||
|
|
||||||
// Service account impersonation
|
// Service account impersonation
|
||||||
SourceCredentials *credentialsFile `json:"source_credentials"`
|
SourceCredentials *credentialsFile `json:"source_credentials"`
|
||||||
}
|
}
|
||||||
|
|
@ -199,6 +206,19 @@ func (f *credentialsFile) tokenSource(ctx context.Context, params CredentialsPar
|
||||||
WorkforcePoolUserProject: f.WorkforcePoolUserProject,
|
WorkforcePoolUserProject: f.WorkforcePoolUserProject,
|
||||||
}
|
}
|
||||||
return cfg.TokenSource(ctx)
|
return cfg.TokenSource(ctx)
|
||||||
|
case externalAccountAuthorizedUserKey:
|
||||||
|
cfg := &externalaccountauthorizeduser.Config{
|
||||||
|
Audience: f.Audience,
|
||||||
|
RefreshToken: f.RefreshToken,
|
||||||
|
TokenURL: f.TokenURLExternal,
|
||||||
|
TokenInfoURL: f.TokenInfoURL,
|
||||||
|
ClientID: f.ClientID,
|
||||||
|
ClientSecret: f.ClientSecret,
|
||||||
|
RevokeURL: f.RevokeURL,
|
||||||
|
QuotaProjectID: f.QuotaProjectID,
|
||||||
|
Scopes: params.Scopes,
|
||||||
|
}
|
||||||
|
return cfg.TokenSource(ctx)
|
||||||
case impersonatedServiceAccount:
|
case impersonatedServiceAccount:
|
||||||
if f.ServiceAccountImpersonationURL == "" || f.SourceCredentials == nil {
|
if f.ServiceAccountImpersonationURL == "" || f.SourceCredentials == nil {
|
||||||
return nil, errors.New("missing 'source_credentials' field or 'service_account_impersonation_url' in credentials")
|
return nil, errors.New("missing 'source_credentials' field or 'service_account_impersonation_url' in credentials")
|
||||||
|
|
|
||||||
|
|
@ -274,49 +274,6 @@ type awsRequest struct {
|
||||||
Headers []awsRequestHeader `json:"headers"`
|
Headers []awsRequestHeader `json:"headers"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cs awsCredentialSource) validateMetadataServers() error {
|
|
||||||
if err := cs.validateMetadataServer(cs.RegionURL, "region_url"); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if err := cs.validateMetadataServer(cs.CredVerificationURL, "url"); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return cs.validateMetadataServer(cs.IMDSv2SessionTokenURL, "imdsv2_session_token_url")
|
|
||||||
}
|
|
||||||
|
|
||||||
var validHostnames []string = []string{"169.254.169.254", "fd00:ec2::254"}
|
|
||||||
|
|
||||||
func (cs awsCredentialSource) isValidMetadataServer(metadataUrl string) bool {
|
|
||||||
if metadataUrl == "" {
|
|
||||||
// Zero value means use default, which is valid.
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
u, err := url.Parse(metadataUrl)
|
|
||||||
if err != nil {
|
|
||||||
// Unparseable URL means invalid
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, validHostname := range validHostnames {
|
|
||||||
if u.Hostname() == validHostname {
|
|
||||||
// If it's one of the valid hostnames, everything is good
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// hostname not found in our allowlist, so not valid
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
func (cs awsCredentialSource) validateMetadataServer(metadataUrl, urlName string) error {
|
|
||||||
if !cs.isValidMetadataServer(metadataUrl) {
|
|
||||||
return fmt.Errorf("oauth2/google: invalid hostname %s for %s", metadataUrl, urlName)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (cs awsCredentialSource) doRequest(req *http.Request) (*http.Response, error) {
|
func (cs awsCredentialSource) doRequest(req *http.Request) (*http.Response, error) {
|
||||||
if cs.client == nil {
|
if cs.client == nil {
|
||||||
cs.client = oauth2.NewClient(cs.ctx, nil)
|
cs.client = oauth2.NewClient(cs.ctx, nil)
|
||||||
|
|
@ -339,6 +296,10 @@ func shouldUseMetadataServer() bool {
|
||||||
return !canRetrieveRegionFromEnvironment() || !canRetrieveSecurityCredentialFromEnvironment()
|
return !canRetrieveRegionFromEnvironment() || !canRetrieveSecurityCredentialFromEnvironment()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (cs awsCredentialSource) credentialSourceType() string {
|
||||||
|
return "aws"
|
||||||
|
}
|
||||||
|
|
||||||
func (cs awsCredentialSource) subjectToken() (string, error) {
|
func (cs awsCredentialSource) subjectToken() (string, error) {
|
||||||
if cs.requestSigner == nil {
|
if cs.requestSigner == nil {
|
||||||
headers := make(map[string]string)
|
headers := make(map[string]string)
|
||||||
|
|
|
||||||
|
|
@ -8,13 +8,12 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
|
||||||
"regexp"
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"golang.org/x/oauth2"
|
"golang.org/x/oauth2"
|
||||||
|
"golang.org/x/oauth2/google/internal/stsexchange"
|
||||||
)
|
)
|
||||||
|
|
||||||
// now aliases time.Now for testing
|
// now aliases time.Now for testing
|
||||||
|
|
@ -63,31 +62,10 @@ type Config struct {
|
||||||
WorkforcePoolUserProject string
|
WorkforcePoolUserProject string
|
||||||
}
|
}
|
||||||
|
|
||||||
// Each element consists of a list of patterns. validateURLs checks for matches
|
|
||||||
// that include all elements in a given list, in that order.
|
|
||||||
|
|
||||||
var (
|
var (
|
||||||
validWorkforceAudiencePattern *regexp.Regexp = regexp.MustCompile(`//iam\.googleapis\.com/locations/[^/]+/workforcePools/`)
|
validWorkforceAudiencePattern *regexp.Regexp = regexp.MustCompile(`//iam\.googleapis\.com/locations/[^/]+/workforcePools/`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func validateURL(input string, patterns []*regexp.Regexp, scheme string) bool {
|
|
||||||
parsed, err := url.Parse(input)
|
|
||||||
if err != nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
if !strings.EqualFold(parsed.Scheme, scheme) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
toTest := parsed.Host
|
|
||||||
|
|
||||||
for _, pattern := range patterns {
|
|
||||||
if pattern.MatchString(toTest) {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
func validateWorkforceAudience(input string) bool {
|
func validateWorkforceAudience(input string) bool {
|
||||||
return validWorkforceAudiencePattern.MatchString(input)
|
return validWorkforceAudiencePattern.MatchString(input)
|
||||||
}
|
}
|
||||||
|
|
@ -185,10 +163,6 @@ func (c *Config) parse(ctx context.Context) (baseCredentialSource, error) {
|
||||||
awsCredSource.IMDSv2SessionTokenURL = c.CredentialSource.IMDSv2SessionTokenURL
|
awsCredSource.IMDSv2SessionTokenURL = c.CredentialSource.IMDSv2SessionTokenURL
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := awsCredSource.validateMetadataServers(); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return awsCredSource, nil
|
return awsCredSource, nil
|
||||||
}
|
}
|
||||||
} else if c.CredentialSource.File != "" {
|
} else if c.CredentialSource.File != "" {
|
||||||
|
|
@ -202,6 +176,7 @@ func (c *Config) parse(ctx context.Context) (baseCredentialSource, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
type baseCredentialSource interface {
|
type baseCredentialSource interface {
|
||||||
|
credentialSourceType() string
|
||||||
subjectToken() (string, error)
|
subjectToken() (string, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -211,6 +186,15 @@ type tokenSource struct {
|
||||||
conf *Config
|
conf *Config
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getMetricsHeaderValue(conf *Config, credSource baseCredentialSource) string {
|
||||||
|
return fmt.Sprintf("gl-go/%s auth/%s google-byoid-sdk source/%s sa-impersonation/%t config-lifetime/%t",
|
||||||
|
goVersion(),
|
||||||
|
"unknown",
|
||||||
|
credSource.credentialSourceType(),
|
||||||
|
conf.ServiceAccountImpersonationURL != "",
|
||||||
|
conf.ServiceAccountImpersonationLifetimeSeconds != 0)
|
||||||
|
}
|
||||||
|
|
||||||
// Token allows tokenSource to conform to the oauth2.TokenSource interface.
|
// Token allows tokenSource to conform to the oauth2.TokenSource interface.
|
||||||
func (ts tokenSource) Token() (*oauth2.Token, error) {
|
func (ts tokenSource) Token() (*oauth2.Token, error) {
|
||||||
conf := ts.conf
|
conf := ts.conf
|
||||||
|
|
@ -224,7 +208,7 @@ func (ts tokenSource) Token() (*oauth2.Token, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
stsRequest := stsTokenExchangeRequest{
|
stsRequest := stsexchange.TokenExchangeRequest{
|
||||||
GrantType: "urn:ietf:params:oauth:grant-type:token-exchange",
|
GrantType: "urn:ietf:params:oauth:grant-type:token-exchange",
|
||||||
Audience: conf.Audience,
|
Audience: conf.Audience,
|
||||||
Scope: conf.Scopes,
|
Scope: conf.Scopes,
|
||||||
|
|
@ -234,7 +218,8 @@ func (ts tokenSource) Token() (*oauth2.Token, error) {
|
||||||
}
|
}
|
||||||
header := make(http.Header)
|
header := make(http.Header)
|
||||||
header.Add("Content-Type", "application/x-www-form-urlencoded")
|
header.Add("Content-Type", "application/x-www-form-urlencoded")
|
||||||
clientAuth := clientAuthentication{
|
header.Add("x-goog-api-client", getMetricsHeaderValue(conf, credSource))
|
||||||
|
clientAuth := stsexchange.ClientAuthentication{
|
||||||
AuthStyle: oauth2.AuthStyleInHeader,
|
AuthStyle: oauth2.AuthStyleInHeader,
|
||||||
ClientID: conf.ClientID,
|
ClientID: conf.ClientID,
|
||||||
ClientSecret: conf.ClientSecret,
|
ClientSecret: conf.ClientSecret,
|
||||||
|
|
@ -247,7 +232,7 @@ func (ts tokenSource) Token() (*oauth2.Token, error) {
|
||||||
"userProject": conf.WorkforcePoolUserProject,
|
"userProject": conf.WorkforcePoolUserProject,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stsResp, err := exchangeToken(ts.ctx, conf.TokenURL, &stsRequest, clientAuth, header, options)
|
stsResp, err := stsexchange.ExchangeToken(ts.ctx, conf.TokenURL, &stsRequest, clientAuth, header, options)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
4
vendor/golang.org/x/oauth2/google/internal/externalaccount/executablecredsource.go
generated
vendored
4
vendor/golang.org/x/oauth2/google/internal/externalaccount/executablecredsource.go
generated
vendored
|
|
@ -233,6 +233,10 @@ func (cs executableCredentialSource) parseSubjectTokenFromSource(response []byte
|
||||||
return "", tokenTypeError(source)
|
return "", tokenTypeError(source)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (cs executableCredentialSource) credentialSourceType() string {
|
||||||
|
return "executable"
|
||||||
|
}
|
||||||
|
|
||||||
func (cs executableCredentialSource) subjectToken() (string, error) {
|
func (cs executableCredentialSource) subjectToken() (string, error) {
|
||||||
if token, err := cs.getTokenFromOutputFile(); token != "" || err != nil {
|
if token, err := cs.getTokenFromOutputFile(); token != "" || err != nil {
|
||||||
return token, err
|
return token, err
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,10 @@ type fileCredentialSource struct {
|
||||||
Format format
|
Format format
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (cs fileCredentialSource) credentialSourceType() string {
|
||||||
|
return "file"
|
||||||
|
}
|
||||||
|
|
||||||
func (cs fileCredentialSource) subjectToken() (string, error) {
|
func (cs fileCredentialSource) subjectToken() (string, error) {
|
||||||
tokenFile, err := os.Open(cs.File)
|
tokenFile, err := os.Open(cs.File)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
||||||
64
vendor/golang.org/x/oauth2/google/internal/externalaccount/header.go
generated
vendored
Normal file
64
vendor/golang.org/x/oauth2/google/internal/externalaccount/header.go
generated
vendored
Normal file
|
|
@ -0,0 +1,64 @@
|
||||||
|
// Copyright 2023 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 externalaccount
|
||||||
|
|
||||||
|
import (
|
||||||
|
"runtime"
|
||||||
|
"strings"
|
||||||
|
"unicode"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
// version is a package internal global variable for testing purposes.
|
||||||
|
version = runtime.Version
|
||||||
|
)
|
||||||
|
|
||||||
|
// versionUnknown is only used when the runtime version cannot be determined.
|
||||||
|
const versionUnknown = "UNKNOWN"
|
||||||
|
|
||||||
|
// goVersion returns a Go runtime version derived from the runtime environment
|
||||||
|
// that is modified to be suitable for reporting in a header, meaning it has no
|
||||||
|
// whitespace. If it is unable to determine the Go runtime version, it returns
|
||||||
|
// versionUnknown.
|
||||||
|
func goVersion() string {
|
||||||
|
const develPrefix = "devel +"
|
||||||
|
|
||||||
|
s := version()
|
||||||
|
if strings.HasPrefix(s, develPrefix) {
|
||||||
|
s = s[len(develPrefix):]
|
||||||
|
if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
|
||||||
|
s = s[:p]
|
||||||
|
}
|
||||||
|
return s
|
||||||
|
} else if p := strings.IndexFunc(s, unicode.IsSpace); p >= 0 {
|
||||||
|
s = s[:p]
|
||||||
|
}
|
||||||
|
|
||||||
|
notSemverRune := func(r rune) bool {
|
||||||
|
return !strings.ContainsRune("0123456789.", r)
|
||||||
|
}
|
||||||
|
|
||||||
|
if strings.HasPrefix(s, "go1") {
|
||||||
|
s = s[2:]
|
||||||
|
var prerelease string
|
||||||
|
if p := strings.IndexFunc(s, notSemverRune); p >= 0 {
|
||||||
|
s, prerelease = s[:p], s[p:]
|
||||||
|
}
|
||||||
|
if strings.HasSuffix(s, ".") {
|
||||||
|
s += "0"
|
||||||
|
} else if strings.Count(s, ".") < 2 {
|
||||||
|
s += ".0"
|
||||||
|
}
|
||||||
|
if prerelease != "" {
|
||||||
|
// Some release candidates already have a dash in them.
|
||||||
|
if !strings.HasPrefix(prerelease, "-") {
|
||||||
|
prerelease = "-" + prerelease
|
||||||
|
}
|
||||||
|
s += prerelease
|
||||||
|
}
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
return "UNKNOWN"
|
||||||
|
}
|
||||||
|
|
@ -23,6 +23,10 @@ type urlCredentialSource struct {
|
||||||
ctx context.Context
|
ctx context.Context
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (cs urlCredentialSource) credentialSourceType() string {
|
||||||
|
return "url"
|
||||||
|
}
|
||||||
|
|
||||||
func (cs urlCredentialSource) subjectToken() (string, error) {
|
func (cs urlCredentialSource) subjectToken() (string, error) {
|
||||||
client := oauth2.NewClient(cs.ctx, nil)
|
client := oauth2.NewClient(cs.ctx, nil)
|
||||||
req, err := http.NewRequest("GET", cs.URL, nil)
|
req, err := http.NewRequest("GET", cs.URL, nil)
|
||||||
|
|
|
||||||
114
vendor/golang.org/x/oauth2/google/internal/externalaccountauthorizeduser/externalaccountauthorizeduser.go
generated
vendored
Normal file
114
vendor/golang.org/x/oauth2/google/internal/externalaccountauthorizeduser/externalaccountauthorizeduser.go
generated
vendored
Normal file
|
|
@ -0,0 +1,114 @@
|
||||||
|
// Copyright 2023 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 externalaccountauthorizeduser
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"errors"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"golang.org/x/oauth2"
|
||||||
|
"golang.org/x/oauth2/google/internal/stsexchange"
|
||||||
|
)
|
||||||
|
|
||||||
|
// now aliases time.Now for testing.
|
||||||
|
var now = func() time.Time {
|
||||||
|
return time.Now().UTC()
|
||||||
|
}
|
||||||
|
|
||||||
|
var tokenValid = func(token oauth2.Token) bool {
|
||||||
|
return token.Valid()
|
||||||
|
}
|
||||||
|
|
||||||
|
type Config struct {
|
||||||
|
// Audience is the Secure Token Service (STS) audience which contains the resource name for the workforce pool and
|
||||||
|
// the provider identifier in that pool.
|
||||||
|
Audience string
|
||||||
|
// RefreshToken is the optional OAuth 2.0 refresh token. If specified, credentials can be refreshed.
|
||||||
|
RefreshToken string
|
||||||
|
// TokenURL is the optional STS token exchange endpoint for refresh. Must be specified for refresh, can be left as
|
||||||
|
// None if the token can not be refreshed.
|
||||||
|
TokenURL string
|
||||||
|
// TokenInfoURL is the optional STS endpoint URL for token introspection.
|
||||||
|
TokenInfoURL string
|
||||||
|
// ClientID is only required in conjunction with ClientSecret, as described above.
|
||||||
|
ClientID string
|
||||||
|
// ClientSecret is currently only required if token_info endpoint also needs to be called with the generated GCP
|
||||||
|
// access token. When provided, STS will be called with additional basic authentication using client_id as username
|
||||||
|
// and client_secret as password.
|
||||||
|
ClientSecret string
|
||||||
|
// Token is the OAuth2.0 access token. Can be nil if refresh information is provided.
|
||||||
|
Token string
|
||||||
|
// Expiry is the optional expiration datetime of the OAuth 2.0 access token.
|
||||||
|
Expiry time.Time
|
||||||
|
// RevokeURL is the optional STS endpoint URL for revoking tokens.
|
||||||
|
RevokeURL string
|
||||||
|
// QuotaProjectID is the optional project ID used for quota and billing. This project may be different from the
|
||||||
|
// project used to create the credentials.
|
||||||
|
QuotaProjectID string
|
||||||
|
Scopes []string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Config) canRefresh() bool {
|
||||||
|
return c.ClientID != "" && c.ClientSecret != "" && c.RefreshToken != "" && c.TokenURL != ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Config) TokenSource(ctx context.Context) (oauth2.TokenSource, error) {
|
||||||
|
var token oauth2.Token
|
||||||
|
if c.Token != "" && !c.Expiry.IsZero() {
|
||||||
|
token = oauth2.Token{
|
||||||
|
AccessToken: c.Token,
|
||||||
|
Expiry: c.Expiry,
|
||||||
|
TokenType: "Bearer",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !tokenValid(token) && !c.canRefresh() {
|
||||||
|
return nil, errors.New("oauth2/google: Token should be created with fields to make it valid (`token` and `expiry`), or fields to allow it to refresh (`refresh_token`, `token_url`, `client_id`, `client_secret`).")
|
||||||
|
}
|
||||||
|
|
||||||
|
ts := tokenSource{
|
||||||
|
ctx: ctx,
|
||||||
|
conf: c,
|
||||||
|
}
|
||||||
|
|
||||||
|
return oauth2.ReuseTokenSource(&token, ts), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type tokenSource struct {
|
||||||
|
ctx context.Context
|
||||||
|
conf *Config
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ts tokenSource) Token() (*oauth2.Token, error) {
|
||||||
|
conf := ts.conf
|
||||||
|
if !conf.canRefresh() {
|
||||||
|
return nil, errors.New("oauth2/google: The credentials do not contain the necessary fields need to refresh the access token. You must specify refresh_token, token_url, client_id, and client_secret.")
|
||||||
|
}
|
||||||
|
|
||||||
|
clientAuth := stsexchange.ClientAuthentication{
|
||||||
|
AuthStyle: oauth2.AuthStyleInHeader,
|
||||||
|
ClientID: conf.ClientID,
|
||||||
|
ClientSecret: conf.ClientSecret,
|
||||||
|
}
|
||||||
|
|
||||||
|
stsResponse, err := stsexchange.RefreshAccessToken(ts.ctx, conf.TokenURL, conf.RefreshToken, clientAuth, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if stsResponse.ExpiresIn < 0 {
|
||||||
|
return nil, errors.New("oauth2/google: got invalid expiry from security token service")
|
||||||
|
}
|
||||||
|
|
||||||
|
if stsResponse.RefreshToken != "" {
|
||||||
|
conf.RefreshToken = stsResponse.RefreshToken
|
||||||
|
}
|
||||||
|
|
||||||
|
token := &oauth2.Token{
|
||||||
|
AccessToken: stsResponse.AccessToken,
|
||||||
|
Expiry: now().Add(time.Duration(stsResponse.ExpiresIn) * time.Second),
|
||||||
|
TokenType: "Bearer",
|
||||||
|
}
|
||||||
|
return token, nil
|
||||||
|
}
|
||||||
|
|
@ -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.
|
||||||
|
|
||||||
package externalaccount
|
package stsexchange
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
|
|
@ -12,8 +12,8 @@ import (
|
||||||
"golang.org/x/oauth2"
|
"golang.org/x/oauth2"
|
||||||
)
|
)
|
||||||
|
|
||||||
// clientAuthentication represents an OAuth client ID and secret and the mechanism for passing these credentials as stated in rfc6749#2.3.1.
|
// ClientAuthentication represents an OAuth client ID and secret and the mechanism for passing these credentials as stated in rfc6749#2.3.1.
|
||||||
type clientAuthentication struct {
|
type ClientAuthentication struct {
|
||||||
// AuthStyle can be either basic or request-body
|
// AuthStyle can be either basic or request-body
|
||||||
AuthStyle oauth2.AuthStyle
|
AuthStyle oauth2.AuthStyle
|
||||||
ClientID string
|
ClientID string
|
||||||
|
|
@ -23,7 +23,7 @@ type clientAuthentication struct {
|
||||||
// InjectAuthentication is used to add authentication to a Secure Token Service exchange
|
// InjectAuthentication is used to add authentication to a Secure Token Service exchange
|
||||||
// request. It modifies either the passed url.Values or http.Header depending on the desired
|
// request. It modifies either the passed url.Values or http.Header depending on the desired
|
||||||
// authentication format.
|
// authentication format.
|
||||||
func (c *clientAuthentication) InjectAuthentication(values url.Values, headers http.Header) {
|
func (c *ClientAuthentication) InjectAuthentication(values url.Values, headers http.Header) {
|
||||||
if c.ClientID == "" || c.ClientSecret == "" || values == nil || headers == nil {
|
if c.ClientID == "" || c.ClientSecret == "" || values == nil || headers == nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
@ -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.
|
||||||
|
|
||||||
package externalaccount
|
package stsexchange
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
@ -18,14 +18,17 @@ import (
|
||||||
"golang.org/x/oauth2"
|
"golang.org/x/oauth2"
|
||||||
)
|
)
|
||||||
|
|
||||||
// exchangeToken performs an oauth2 token exchange with the provided endpoint.
|
func defaultHeader() http.Header {
|
||||||
|
header := make(http.Header)
|
||||||
|
header.Add("Content-Type", "application/x-www-form-urlencoded")
|
||||||
|
return header
|
||||||
|
}
|
||||||
|
|
||||||
|
// ExchangeToken performs an oauth2 token exchange with the provided endpoint.
|
||||||
// The first 4 fields are all mandatory. headers can be used to pass additional
|
// The first 4 fields are all mandatory. headers can be used to pass additional
|
||||||
// headers beyond the bare minimum required by the token exchange. options can
|
// headers beyond the bare minimum required by the token exchange. options can
|
||||||
// be used to pass additional JSON-structured options to the remote server.
|
// be used to pass additional JSON-structured options to the remote server.
|
||||||
func exchangeToken(ctx context.Context, endpoint string, request *stsTokenExchangeRequest, authentication clientAuthentication, headers http.Header, options map[string]interface{}) (*stsTokenExchangeResponse, error) {
|
func ExchangeToken(ctx context.Context, endpoint string, request *TokenExchangeRequest, authentication ClientAuthentication, headers http.Header, options map[string]interface{}) (*Response, error) {
|
||||||
|
|
||||||
client := oauth2.NewClient(ctx, nil)
|
|
||||||
|
|
||||||
data := url.Values{}
|
data := url.Values{}
|
||||||
data.Set("audience", request.Audience)
|
data.Set("audience", request.Audience)
|
||||||
data.Set("grant_type", "urn:ietf:params:oauth:grant-type:token-exchange")
|
data.Set("grant_type", "urn:ietf:params:oauth:grant-type:token-exchange")
|
||||||
|
|
@ -41,13 +44,28 @@ func exchangeToken(ctx context.Context, endpoint string, request *stsTokenExchan
|
||||||
data.Set("options", string(opts))
|
data.Set("options", string(opts))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return makeRequest(ctx, endpoint, data, authentication, headers)
|
||||||
|
}
|
||||||
|
|
||||||
|
func RefreshAccessToken(ctx context.Context, endpoint string, refreshToken string, authentication ClientAuthentication, headers http.Header) (*Response, error) {
|
||||||
|
data := url.Values{}
|
||||||
|
data.Set("grant_type", "refresh_token")
|
||||||
|
data.Set("refresh_token", refreshToken)
|
||||||
|
|
||||||
|
return makeRequest(ctx, endpoint, data, authentication, headers)
|
||||||
|
}
|
||||||
|
|
||||||
|
func makeRequest(ctx context.Context, endpoint string, data url.Values, authentication ClientAuthentication, headers http.Header) (*Response, error) {
|
||||||
|
if headers == nil {
|
||||||
|
headers = defaultHeader()
|
||||||
|
}
|
||||||
|
client := oauth2.NewClient(ctx, nil)
|
||||||
authentication.InjectAuthentication(data, headers)
|
authentication.InjectAuthentication(data, headers)
|
||||||
encodedData := data.Encode()
|
encodedData := data.Encode()
|
||||||
|
|
||||||
req, err := http.NewRequest("POST", endpoint, strings.NewReader(encodedData))
|
req, err := http.NewRequest("POST", endpoint, strings.NewReader(encodedData))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("oauth2/google: failed to properly build http request: %v", err)
|
return nil, fmt.Errorf("oauth2/google: failed to properly build http request: %v", err)
|
||||||
|
|
||||||
}
|
}
|
||||||
req = req.WithContext(ctx)
|
req = req.WithContext(ctx)
|
||||||
for key, list := range headers {
|
for key, list := range headers {
|
||||||
|
|
@ -71,7 +89,7 @@ func exchangeToken(ctx context.Context, endpoint string, request *stsTokenExchan
|
||||||
if c := resp.StatusCode; c < 200 || c > 299 {
|
if c := resp.StatusCode; c < 200 || c > 299 {
|
||||||
return nil, fmt.Errorf("oauth2/google: status code %d: %s", c, body)
|
return nil, fmt.Errorf("oauth2/google: status code %d: %s", c, body)
|
||||||
}
|
}
|
||||||
var stsResp stsTokenExchangeResponse
|
var stsResp Response
|
||||||
err = json.Unmarshal(body, &stsResp)
|
err = json.Unmarshal(body, &stsResp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("oauth2/google: failed to unmarshal response body from Secure Token Server: %v", err)
|
return nil, fmt.Errorf("oauth2/google: failed to unmarshal response body from Secure Token Server: %v", err)
|
||||||
|
|
@ -81,8 +99,8 @@ func exchangeToken(ctx context.Context, endpoint string, request *stsTokenExchan
|
||||||
return &stsResp, nil
|
return &stsResp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// stsTokenExchangeRequest contains fields necessary to make an oauth2 token exchange.
|
// TokenExchangeRequest contains fields necessary to make an oauth2 token exchange.
|
||||||
type stsTokenExchangeRequest struct {
|
type TokenExchangeRequest struct {
|
||||||
ActingParty struct {
|
ActingParty struct {
|
||||||
ActorToken string
|
ActorToken string
|
||||||
ActorTokenType string
|
ActorTokenType string
|
||||||
|
|
@ -96,8 +114,8 @@ type stsTokenExchangeRequest struct {
|
||||||
SubjectTokenType string
|
SubjectTokenType string
|
||||||
}
|
}
|
||||||
|
|
||||||
// stsTokenExchangeResponse is used to decode the remote server response during an oauth2 token exchange.
|
// Response is used to decode the remote server response during an oauth2 token exchange.
|
||||||
type stsTokenExchangeResponse struct {
|
type Response struct {
|
||||||
AccessToken string `json:"access_token"`
|
AccessToken string `json:"access_token"`
|
||||||
IssuedTokenType string `json:"issued_token_type"`
|
IssuedTokenType string `json:"issued_token_type"`
|
||||||
TokenType string `json:"token_type"`
|
TokenType string `json:"token_type"`
|
||||||
|
|
@ -75,8 +75,9 @@ type TokenSource interface {
|
||||||
// Endpoint represents an OAuth 2.0 provider's authorization and token
|
// Endpoint represents an OAuth 2.0 provider's authorization and token
|
||||||
// endpoint URLs.
|
// endpoint URLs.
|
||||||
type Endpoint struct {
|
type Endpoint struct {
|
||||||
AuthURL string
|
AuthURL string
|
||||||
TokenURL string
|
DeviceAuthURL string
|
||||||
|
TokenURL string
|
||||||
|
|
||||||
// AuthStyle optionally specifies how the endpoint wants the
|
// AuthStyle optionally specifies how the endpoint wants the
|
||||||
// client ID & client secret sent. The zero value means to
|
// client ID & client secret sent. The zero value means to
|
||||||
|
|
@ -143,15 +144,19 @@ func SetAuthURLParam(key, value string) AuthCodeOption {
|
||||||
// AuthCodeURL returns a URL to OAuth 2.0 provider's consent page
|
// AuthCodeURL returns a URL to OAuth 2.0 provider's consent page
|
||||||
// that asks for permissions for the required scopes explicitly.
|
// that asks for permissions for the required scopes explicitly.
|
||||||
//
|
//
|
||||||
// State is a token to protect the user from CSRF attacks. You must
|
// State is an opaque value used by the client to maintain state between the
|
||||||
// always provide a non-empty string and validate that it matches the
|
// request and callback. The authorization server includes this value when
|
||||||
// state query parameter on your redirect callback.
|
// redirecting the user agent back to the client.
|
||||||
// See http://tools.ietf.org/html/rfc6749#section-10.12 for more info.
|
|
||||||
//
|
//
|
||||||
// Opts may include AccessTypeOnline or AccessTypeOffline, as well
|
// Opts may include AccessTypeOnline or AccessTypeOffline, as well
|
||||||
// as ApprovalForce.
|
// as ApprovalForce.
|
||||||
// It can also be used to pass the PKCE challenge.
|
//
|
||||||
// See https://www.oauth.com/oauth2-servers/pkce/ for more info.
|
// To protect against CSRF attacks, opts should include a PKCE challenge
|
||||||
|
// (S256ChallengeOption). Not all servers support PKCE. An alternative is to
|
||||||
|
// generate a random state parameter and verify it after exchange.
|
||||||
|
// See https://datatracker.ietf.org/doc/html/rfc6749#section-10.12 (predating
|
||||||
|
// PKCE), https://www.oauth.com/oauth2-servers/pkce/ and
|
||||||
|
// https://www.ietf.org/archive/id/draft-ietf-oauth-v2-1-09.html#name-cross-site-request-forgery (describing both approaches)
|
||||||
func (c *Config) AuthCodeURL(state string, opts ...AuthCodeOption) string {
|
func (c *Config) AuthCodeURL(state string, opts ...AuthCodeOption) string {
|
||||||
var buf bytes.Buffer
|
var buf bytes.Buffer
|
||||||
buf.WriteString(c.Endpoint.AuthURL)
|
buf.WriteString(c.Endpoint.AuthURL)
|
||||||
|
|
@ -166,7 +171,6 @@ func (c *Config) AuthCodeURL(state string, opts ...AuthCodeOption) string {
|
||||||
v.Set("scope", strings.Join(c.Scopes, " "))
|
v.Set("scope", strings.Join(c.Scopes, " "))
|
||||||
}
|
}
|
||||||
if state != "" {
|
if state != "" {
|
||||||
// TODO(light): Docs say never to omit state; don't allow empty.
|
|
||||||
v.Set("state", state)
|
v.Set("state", state)
|
||||||
}
|
}
|
||||||
for _, opt := range opts {
|
for _, opt := range opts {
|
||||||
|
|
@ -211,10 +215,11 @@ func (c *Config) PasswordCredentialsToken(ctx context.Context, username, passwor
|
||||||
// The provided context optionally controls which HTTP client is used. See the HTTPClient variable.
|
// The provided context optionally controls which HTTP client is used. See the HTTPClient variable.
|
||||||
//
|
//
|
||||||
// The code will be in the *http.Request.FormValue("code"). Before
|
// The code will be in the *http.Request.FormValue("code"). Before
|
||||||
// calling Exchange, be sure to validate FormValue("state").
|
// calling Exchange, be sure to validate FormValue("state") if you are
|
||||||
|
// using it to protect against CSRF attacks.
|
||||||
//
|
//
|
||||||
// Opts may include the PKCE verifier code if previously used in AuthCodeURL.
|
// If using PKCE to protect against CSRF attacks, opts should include a
|
||||||
// See https://www.oauth.com/oauth2-servers/pkce/ for more info.
|
// VerifierOption.
|
||||||
func (c *Config) Exchange(ctx context.Context, code string, opts ...AuthCodeOption) (*Token, error) {
|
func (c *Config) Exchange(ctx context.Context, code string, opts ...AuthCodeOption) (*Token, error) {
|
||||||
v := url.Values{
|
v := url.Values{
|
||||||
"grant_type": {"authorization_code"},
|
"grant_type": {"authorization_code"},
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,68 @@
|
||||||
|
// Copyright 2023 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 oauth2
|
||||||
|
|
||||||
|
import (
|
||||||
|
"crypto/rand"
|
||||||
|
"crypto/sha256"
|
||||||
|
"encoding/base64"
|
||||||
|
"net/url"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
codeChallengeKey = "code_challenge"
|
||||||
|
codeChallengeMethodKey = "code_challenge_method"
|
||||||
|
codeVerifierKey = "code_verifier"
|
||||||
|
)
|
||||||
|
|
||||||
|
// GenerateVerifier generates a PKCE code verifier with 32 octets of randomness.
|
||||||
|
// This follows recommendations in RFC 7636.
|
||||||
|
//
|
||||||
|
// A fresh verifier should be generated for each authorization.
|
||||||
|
// S256ChallengeOption(verifier) should then be passed to Config.AuthCodeURL
|
||||||
|
// (or Config.DeviceAccess) and VerifierOption(verifier) to Config.Exchange
|
||||||
|
// (or Config.DeviceAccessToken).
|
||||||
|
func GenerateVerifier() string {
|
||||||
|
// "RECOMMENDED that the output of a suitable random number generator be
|
||||||
|
// used to create a 32-octet sequence. The octet sequence is then
|
||||||
|
// base64url-encoded to produce a 43-octet URL-safe string to use as the
|
||||||
|
// code verifier."
|
||||||
|
// https://datatracker.ietf.org/doc/html/rfc7636#section-4.1
|
||||||
|
data := make([]byte, 32)
|
||||||
|
if _, err := rand.Read(data); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
return base64.RawURLEncoding.EncodeToString(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
// VerifierOption returns a PKCE code verifier AuthCodeOption. It should be
|
||||||
|
// passed to Config.Exchange or Config.DeviceAccessToken only.
|
||||||
|
func VerifierOption(verifier string) AuthCodeOption {
|
||||||
|
return setParam{k: codeVerifierKey, v: verifier}
|
||||||
|
}
|
||||||
|
|
||||||
|
// S256ChallengeFromVerifier returns a PKCE code challenge derived from verifier with method S256.
|
||||||
|
//
|
||||||
|
// Prefer to use S256ChallengeOption where possible.
|
||||||
|
func S256ChallengeFromVerifier(verifier string) string {
|
||||||
|
sha := sha256.Sum256([]byte(verifier))
|
||||||
|
return base64.RawURLEncoding.EncodeToString(sha[:])
|
||||||
|
}
|
||||||
|
|
||||||
|
// S256ChallengeOption derives a PKCE code challenge derived from verifier with
|
||||||
|
// method S256. It should be passed to Config.AuthCodeURL or Config.DeviceAccess
|
||||||
|
// only.
|
||||||
|
func S256ChallengeOption(verifier string) AuthCodeOption {
|
||||||
|
return challengeOption{
|
||||||
|
challenge_method: "S256",
|
||||||
|
challenge: S256ChallengeFromVerifier(verifier),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type challengeOption struct{ challenge_method, challenge string }
|
||||||
|
|
||||||
|
func (p challengeOption) setValue(m url.Values) {
|
||||||
|
m.Set(codeChallengeMethodKey, p.challenge_method)
|
||||||
|
m.Set(codeChallengeKey, p.challenge)
|
||||||
|
}
|
||||||
|
|
@ -7,6 +7,6 @@
|
||||||
|
|
||||||
package cpu
|
package cpu
|
||||||
|
|
||||||
const cacheLineSize = 32
|
const cacheLineSize = 64
|
||||||
|
|
||||||
func initOptions() {}
|
func initOptions() {}
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
package cpu
|
package cpu
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"io/ioutil"
|
"os"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
@ -39,7 +39,7 @@ func readHWCAP() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
buf, err := ioutil.ReadFile(procAuxv)
|
buf, err := os.ReadFile(procAuxv)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// e.g. on android /proc/self/auxv is not accessible, so silently
|
// e.g. on android /proc/self/auxv is not accessible, so silently
|
||||||
// ignore the error and leave Initialized = false. On some
|
// ignore the error and leave Initialized = false. On some
|
||||||
|
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
||||||
// Copyright 2020 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 unsafeheader contains header declarations for the Go runtime's
|
|
||||||
// slice and string implementations.
|
|
||||||
//
|
|
||||||
// This package allows x/sys to use types equivalent to
|
|
||||||
// reflect.SliceHeader and reflect.StringHeader without introducing
|
|
||||||
// a dependency on the (relatively heavy) "reflect" package.
|
|
||||||
package unsafeheader
|
|
||||||
|
|
||||||
import (
|
|
||||||
"unsafe"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Slice is the runtime representation of a slice.
|
|
||||||
// It cannot be used safely or portably and its representation may change in a later release.
|
|
||||||
type Slice struct {
|
|
||||||
Data unsafe.Pointer
|
|
||||||
Len int
|
|
||||||
Cap int
|
|
||||||
}
|
|
||||||
|
|
||||||
// String is the runtime representation of a string.
|
|
||||||
// It cannot be used safely or portably and its representation may change in a later release.
|
|
||||||
type String struct {
|
|
||||||
Data unsafe.Pointer
|
|
||||||
Len int
|
|
||||||
}
|
|
||||||
|
|
@ -7,12 +7,6 @@
|
||||||
|
|
||||||
package unix
|
package unix
|
||||||
|
|
||||||
import "unsafe"
|
|
||||||
|
|
||||||
func ptrace(request int, pid int, addr uintptr, data uintptr) error {
|
func ptrace(request int, pid int, addr uintptr, data uintptr) error {
|
||||||
return ptrace1(request, pid, addr, data)
|
return ptrace1(request, pid, addr, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
func ptracePtr(request int, pid int, addr uintptr, data unsafe.Pointer) error {
|
|
||||||
return ptrace1Ptr(request, pid, addr, data)
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -7,12 +7,6 @@
|
||||||
|
|
||||||
package unix
|
package unix
|
||||||
|
|
||||||
import "unsafe"
|
|
||||||
|
|
||||||
func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
|
func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
|
||||||
return ENOTSUP
|
return ENOTSUP
|
||||||
}
|
}
|
||||||
|
|
||||||
func ptracePtr(request int, pid int, addr uintptr, data unsafe.Pointer) (err error) {
|
|
||||||
return ENOTSUP
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -487,8 +487,6 @@ func Fsync(fd int) error {
|
||||||
//sys Unlinkat(dirfd int, path string, flags int) (err error)
|
//sys Unlinkat(dirfd int, path string, flags int) (err error)
|
||||||
//sys Ustat(dev int, ubuf *Ustat_t) (err error)
|
//sys Ustat(dev int, ubuf *Ustat_t) (err error)
|
||||||
//sys write(fd int, p []byte) (n int, err error)
|
//sys write(fd int, p []byte) (n int, err error)
|
||||||
//sys readlen(fd int, p *byte, np int) (n int, err error) = read
|
|
||||||
//sys writelen(fd int, p *byte, np int) (n int, err error) = write
|
|
||||||
|
|
||||||
//sys Dup2(oldfd int, newfd int) (err error)
|
//sys Dup2(oldfd int, newfd int) (err error)
|
||||||
//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = posix_fadvise64
|
//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = posix_fadvise64
|
||||||
|
|
|
||||||
|
|
@ -644,189 +644,3 @@ func SysctlKinfoProcSlice(name string, args ...int) ([]KinfoProc, error) {
|
||||||
//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 readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ
|
|
||||||
//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Unimplemented
|
|
||||||
*/
|
|
||||||
// Profil
|
|
||||||
// Sigaction
|
|
||||||
// Sigprocmask
|
|
||||||
// Getlogin
|
|
||||||
// Sigpending
|
|
||||||
// Sigaltstack
|
|
||||||
// Ioctl
|
|
||||||
// Reboot
|
|
||||||
// Execve
|
|
||||||
// Vfork
|
|
||||||
// Sbrk
|
|
||||||
// Sstk
|
|
||||||
// Ovadvise
|
|
||||||
// Mincore
|
|
||||||
// Setitimer
|
|
||||||
// Swapon
|
|
||||||
// Select
|
|
||||||
// Sigsuspend
|
|
||||||
// Readv
|
|
||||||
// Writev
|
|
||||||
// Nfssvc
|
|
||||||
// Getfh
|
|
||||||
// Quotactl
|
|
||||||
// Csops
|
|
||||||
// Waitid
|
|
||||||
// Add_profil
|
|
||||||
// Kdebug_trace
|
|
||||||
// Sigreturn
|
|
||||||
// Atsocket
|
|
||||||
// Kqueue_from_portset_np
|
|
||||||
// Kqueue_portset
|
|
||||||
// Getattrlist
|
|
||||||
// Getdirentriesattr
|
|
||||||
// Searchfs
|
|
||||||
// Delete
|
|
||||||
// Copyfile
|
|
||||||
// Watchevent
|
|
||||||
// Waitevent
|
|
||||||
// Modwatch
|
|
||||||
// Fsctl
|
|
||||||
// Initgroups
|
|
||||||
// Posix_spawn
|
|
||||||
// Nfsclnt
|
|
||||||
// Fhopen
|
|
||||||
// Minherit
|
|
||||||
// Semsys
|
|
||||||
// Msgsys
|
|
||||||
// Shmsys
|
|
||||||
// Semctl
|
|
||||||
// Semget
|
|
||||||
// Semop
|
|
||||||
// Msgctl
|
|
||||||
// Msgget
|
|
||||||
// Msgsnd
|
|
||||||
// Msgrcv
|
|
||||||
// Shm_open
|
|
||||||
// Shm_unlink
|
|
||||||
// Sem_open
|
|
||||||
// Sem_close
|
|
||||||
// Sem_unlink
|
|
||||||
// Sem_wait
|
|
||||||
// Sem_trywait
|
|
||||||
// Sem_post
|
|
||||||
// Sem_getvalue
|
|
||||||
// Sem_init
|
|
||||||
// Sem_destroy
|
|
||||||
// Open_extended
|
|
||||||
// Umask_extended
|
|
||||||
// Stat_extended
|
|
||||||
// Lstat_extended
|
|
||||||
// Fstat_extended
|
|
||||||
// Chmod_extended
|
|
||||||
// Fchmod_extended
|
|
||||||
// Access_extended
|
|
||||||
// Settid
|
|
||||||
// Gettid
|
|
||||||
// Setsgroups
|
|
||||||
// Getsgroups
|
|
||||||
// Setwgroups
|
|
||||||
// Getwgroups
|
|
||||||
// Mkfifo_extended
|
|
||||||
// Mkdir_extended
|
|
||||||
// Identitysvc
|
|
||||||
// Shared_region_check_np
|
|
||||||
// Shared_region_map_np
|
|
||||||
// __pthread_mutex_destroy
|
|
||||||
// __pthread_mutex_init
|
|
||||||
// __pthread_mutex_lock
|
|
||||||
// __pthread_mutex_trylock
|
|
||||||
// __pthread_mutex_unlock
|
|
||||||
// __pthread_cond_init
|
|
||||||
// __pthread_cond_destroy
|
|
||||||
// __pthread_cond_broadcast
|
|
||||||
// __pthread_cond_signal
|
|
||||||
// Setsid_with_pid
|
|
||||||
// __pthread_cond_timedwait
|
|
||||||
// Aio_fsync
|
|
||||||
// Aio_return
|
|
||||||
// Aio_suspend
|
|
||||||
// Aio_cancel
|
|
||||||
// Aio_error
|
|
||||||
// Aio_read
|
|
||||||
// Aio_write
|
|
||||||
// Lio_listio
|
|
||||||
// __pthread_cond_wait
|
|
||||||
// Iopolicysys
|
|
||||||
// __pthread_kill
|
|
||||||
// __pthread_sigmask
|
|
||||||
// __sigwait
|
|
||||||
// __disable_threadsignal
|
|
||||||
// __pthread_markcancel
|
|
||||||
// __pthread_canceled
|
|
||||||
// __semwait_signal
|
|
||||||
// Proc_info
|
|
||||||
// sendfile
|
|
||||||
// Stat64_extended
|
|
||||||
// Lstat64_extended
|
|
||||||
// Fstat64_extended
|
|
||||||
// __pthread_chdir
|
|
||||||
// __pthread_fchdir
|
|
||||||
// Audit
|
|
||||||
// Auditon
|
|
||||||
// Getauid
|
|
||||||
// Setauid
|
|
||||||
// Getaudit
|
|
||||||
// Setaudit
|
|
||||||
// Getaudit_addr
|
|
||||||
// Setaudit_addr
|
|
||||||
// Auditctl
|
|
||||||
// Bsdthread_create
|
|
||||||
// Bsdthread_terminate
|
|
||||||
// Stack_snapshot
|
|
||||||
// Bsdthread_register
|
|
||||||
// Workq_open
|
|
||||||
// Workq_ops
|
|
||||||
// __mac_execve
|
|
||||||
// __mac_syscall
|
|
||||||
// __mac_get_file
|
|
||||||
// __mac_set_file
|
|
||||||
// __mac_get_link
|
|
||||||
// __mac_set_link
|
|
||||||
// __mac_get_proc
|
|
||||||
// __mac_set_proc
|
|
||||||
// __mac_get_fd
|
|
||||||
// __mac_set_fd
|
|
||||||
// __mac_get_pid
|
|
||||||
// __mac_get_lcid
|
|
||||||
// __mac_get_lctx
|
|
||||||
// __mac_set_lctx
|
|
||||||
// Setlcid
|
|
||||||
// Read_nocancel
|
|
||||||
// Write_nocancel
|
|
||||||
// Open_nocancel
|
|
||||||
// Close_nocancel
|
|
||||||
// Wait4_nocancel
|
|
||||||
// Recvmsg_nocancel
|
|
||||||
// Sendmsg_nocancel
|
|
||||||
// Recvfrom_nocancel
|
|
||||||
// Accept_nocancel
|
|
||||||
// Fcntl_nocancel
|
|
||||||
// Select_nocancel
|
|
||||||
// Fsync_nocancel
|
|
||||||
// Connect_nocancel
|
|
||||||
// Sigsuspend_nocancel
|
|
||||||
// Readv_nocancel
|
|
||||||
// Writev_nocancel
|
|
||||||
// Sendto_nocancel
|
|
||||||
// Pread_nocancel
|
|
||||||
// Pwrite_nocancel
|
|
||||||
// Waitid_nocancel
|
|
||||||
// Poll_nocancel
|
|
||||||
// Msgsnd_nocancel
|
|
||||||
// Msgrcv_nocancel
|
|
||||||
// Sem_wait_nocancel
|
|
||||||
// Aio_suspend_nocancel
|
|
||||||
// __sigwait_nocancel
|
|
||||||
// __semwait_signal_nocancel
|
|
||||||
// __mac_mount
|
|
||||||
// __mac_get_mount
|
|
||||||
// __mac_getfsstat
|
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,5 @@ func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr,
|
||||||
//sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64
|
//sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64
|
||||||
//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
|
//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64
|
||||||
//sys ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) = SYS_ptrace
|
//sys ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) = SYS_ptrace
|
||||||
//sys ptrace1Ptr(request int, pid int, addr unsafe.Pointer, data uintptr) (err error) = SYS_ptrace
|
|
||||||
//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
|
//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64
|
||||||
//sys Statfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64
|
//sys Statfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,5 @@ func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr,
|
||||||
//sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT
|
//sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT
|
||||||
//sys Lstat(path string, stat *Stat_t) (err error)
|
//sys Lstat(path string, stat *Stat_t) (err error)
|
||||||
//sys ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) = SYS_ptrace
|
//sys ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) = SYS_ptrace
|
||||||
//sys ptrace1Ptr(request int, pid int, addr unsafe.Pointer, data uintptr) (err error) = SYS_ptrace
|
|
||||||
//sys Stat(path string, stat *Stat_t) (err error)
|
//sys Stat(path string, stat *Stat_t) (err error)
|
||||||
//sys Statfs(path string, stat *Statfs_t) (err error)
|
//sys Statfs(path string, stat *Statfs_t) (err error)
|
||||||
|
|
|
||||||
|
|
@ -343,203 +343,5 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
|
||||||
//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 readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ
|
|
||||||
//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE
|
|
||||||
//sys accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error)
|
//sys accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error)
|
||||||
//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)
|
//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)
|
||||||
|
|
||||||
/*
|
|
||||||
* Unimplemented
|
|
||||||
* TODO(jsing): Update this list for DragonFly.
|
|
||||||
*/
|
|
||||||
// Profil
|
|
||||||
// Sigaction
|
|
||||||
// Sigprocmask
|
|
||||||
// Getlogin
|
|
||||||
// Sigpending
|
|
||||||
// Sigaltstack
|
|
||||||
// Reboot
|
|
||||||
// Execve
|
|
||||||
// Vfork
|
|
||||||
// Sbrk
|
|
||||||
// Sstk
|
|
||||||
// Ovadvise
|
|
||||||
// Mincore
|
|
||||||
// Setitimer
|
|
||||||
// Swapon
|
|
||||||
// Select
|
|
||||||
// Sigsuspend
|
|
||||||
// Readv
|
|
||||||
// Writev
|
|
||||||
// Nfssvc
|
|
||||||
// Getfh
|
|
||||||
// Quotactl
|
|
||||||
// Mount
|
|
||||||
// Csops
|
|
||||||
// Waitid
|
|
||||||
// Add_profil
|
|
||||||
// Kdebug_trace
|
|
||||||
// Sigreturn
|
|
||||||
// Atsocket
|
|
||||||
// Kqueue_from_portset_np
|
|
||||||
// Kqueue_portset
|
|
||||||
// Getattrlist
|
|
||||||
// Setattrlist
|
|
||||||
// Getdirentriesattr
|
|
||||||
// Searchfs
|
|
||||||
// Delete
|
|
||||||
// Copyfile
|
|
||||||
// Watchevent
|
|
||||||
// Waitevent
|
|
||||||
// Modwatch
|
|
||||||
// Getxattr
|
|
||||||
// Fgetxattr
|
|
||||||
// Setxattr
|
|
||||||
// Fsetxattr
|
|
||||||
// Removexattr
|
|
||||||
// Fremovexattr
|
|
||||||
// Listxattr
|
|
||||||
// Flistxattr
|
|
||||||
// Fsctl
|
|
||||||
// Initgroups
|
|
||||||
// Posix_spawn
|
|
||||||
// Nfsclnt
|
|
||||||
// Fhopen
|
|
||||||
// Minherit
|
|
||||||
// Semsys
|
|
||||||
// Msgsys
|
|
||||||
// Shmsys
|
|
||||||
// Semctl
|
|
||||||
// Semget
|
|
||||||
// Semop
|
|
||||||
// Msgctl
|
|
||||||
// Msgget
|
|
||||||
// Msgsnd
|
|
||||||
// Msgrcv
|
|
||||||
// Shmat
|
|
||||||
// Shmctl
|
|
||||||
// Shmdt
|
|
||||||
// Shmget
|
|
||||||
// Shm_open
|
|
||||||
// Shm_unlink
|
|
||||||
// Sem_open
|
|
||||||
// Sem_close
|
|
||||||
// Sem_unlink
|
|
||||||
// Sem_wait
|
|
||||||
// Sem_trywait
|
|
||||||
// Sem_post
|
|
||||||
// Sem_getvalue
|
|
||||||
// Sem_init
|
|
||||||
// Sem_destroy
|
|
||||||
// Open_extended
|
|
||||||
// Umask_extended
|
|
||||||
// Stat_extended
|
|
||||||
// Lstat_extended
|
|
||||||
// Fstat_extended
|
|
||||||
// Chmod_extended
|
|
||||||
// Fchmod_extended
|
|
||||||
// Access_extended
|
|
||||||
// Settid
|
|
||||||
// Gettid
|
|
||||||
// Setsgroups
|
|
||||||
// Getsgroups
|
|
||||||
// Setwgroups
|
|
||||||
// Getwgroups
|
|
||||||
// Mkfifo_extended
|
|
||||||
// Mkdir_extended
|
|
||||||
// Identitysvc
|
|
||||||
// Shared_region_check_np
|
|
||||||
// Shared_region_map_np
|
|
||||||
// __pthread_mutex_destroy
|
|
||||||
// __pthread_mutex_init
|
|
||||||
// __pthread_mutex_lock
|
|
||||||
// __pthread_mutex_trylock
|
|
||||||
// __pthread_mutex_unlock
|
|
||||||
// __pthread_cond_init
|
|
||||||
// __pthread_cond_destroy
|
|
||||||
// __pthread_cond_broadcast
|
|
||||||
// __pthread_cond_signal
|
|
||||||
// Setsid_with_pid
|
|
||||||
// __pthread_cond_timedwait
|
|
||||||
// Aio_fsync
|
|
||||||
// Aio_return
|
|
||||||
// Aio_suspend
|
|
||||||
// Aio_cancel
|
|
||||||
// Aio_error
|
|
||||||
// Aio_read
|
|
||||||
// Aio_write
|
|
||||||
// Lio_listio
|
|
||||||
// __pthread_cond_wait
|
|
||||||
// Iopolicysys
|
|
||||||
// __pthread_kill
|
|
||||||
// __pthread_sigmask
|
|
||||||
// __sigwait
|
|
||||||
// __disable_threadsignal
|
|
||||||
// __pthread_markcancel
|
|
||||||
// __pthread_canceled
|
|
||||||
// __semwait_signal
|
|
||||||
// Proc_info
|
|
||||||
// Stat64_extended
|
|
||||||
// Lstat64_extended
|
|
||||||
// Fstat64_extended
|
|
||||||
// __pthread_chdir
|
|
||||||
// __pthread_fchdir
|
|
||||||
// Audit
|
|
||||||
// Auditon
|
|
||||||
// Getauid
|
|
||||||
// Setauid
|
|
||||||
// Getaudit
|
|
||||||
// Setaudit
|
|
||||||
// Getaudit_addr
|
|
||||||
// Setaudit_addr
|
|
||||||
// Auditctl
|
|
||||||
// Bsdthread_create
|
|
||||||
// Bsdthread_terminate
|
|
||||||
// Stack_snapshot
|
|
||||||
// Bsdthread_register
|
|
||||||
// Workq_open
|
|
||||||
// Workq_ops
|
|
||||||
// __mac_execve
|
|
||||||
// __mac_syscall
|
|
||||||
// __mac_get_file
|
|
||||||
// __mac_set_file
|
|
||||||
// __mac_get_link
|
|
||||||
// __mac_set_link
|
|
||||||
// __mac_get_proc
|
|
||||||
// __mac_set_proc
|
|
||||||
// __mac_get_fd
|
|
||||||
// __mac_set_fd
|
|
||||||
// __mac_get_pid
|
|
||||||
// __mac_get_lcid
|
|
||||||
// __mac_get_lctx
|
|
||||||
// __mac_set_lctx
|
|
||||||
// Setlcid
|
|
||||||
// Read_nocancel
|
|
||||||
// Write_nocancel
|
|
||||||
// Open_nocancel
|
|
||||||
// Close_nocancel
|
|
||||||
// Wait4_nocancel
|
|
||||||
// Recvmsg_nocancel
|
|
||||||
// Sendmsg_nocancel
|
|
||||||
// Recvfrom_nocancel
|
|
||||||
// Accept_nocancel
|
|
||||||
// Fcntl_nocancel
|
|
||||||
// Select_nocancel
|
|
||||||
// Fsync_nocancel
|
|
||||||
// Connect_nocancel
|
|
||||||
// Sigsuspend_nocancel
|
|
||||||
// Readv_nocancel
|
|
||||||
// Writev_nocancel
|
|
||||||
// Sendto_nocancel
|
|
||||||
// Pread_nocancel
|
|
||||||
// Pwrite_nocancel
|
|
||||||
// Waitid_nocancel
|
|
||||||
// Msgsnd_nocancel
|
|
||||||
// Msgrcv_nocancel
|
|
||||||
// Sem_wait_nocancel
|
|
||||||
// Aio_suspend_nocancel
|
|
||||||
// __sigwait_nocancel
|
|
||||||
// __semwait_signal_nocancel
|
|
||||||
// __mac_mount
|
|
||||||
// __mac_get_mount
|
|
||||||
// __mac_getfsstat
|
|
||||||
|
|
|
||||||
|
|
@ -449,197 +449,5 @@ func Dup3(oldfd, newfd, flags int) error {
|
||||||
//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 readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ
|
|
||||||
//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE
|
|
||||||
//sys accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error)
|
//sys accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error)
|
||||||
//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)
|
//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)
|
||||||
|
|
||||||
/*
|
|
||||||
* Unimplemented
|
|
||||||
*/
|
|
||||||
// Profil
|
|
||||||
// Sigaction
|
|
||||||
// Sigprocmask
|
|
||||||
// Getlogin
|
|
||||||
// Sigpending
|
|
||||||
// Sigaltstack
|
|
||||||
// Ioctl
|
|
||||||
// Reboot
|
|
||||||
// Execve
|
|
||||||
// Vfork
|
|
||||||
// Sbrk
|
|
||||||
// Sstk
|
|
||||||
// Ovadvise
|
|
||||||
// Mincore
|
|
||||||
// Setitimer
|
|
||||||
// Swapon
|
|
||||||
// Select
|
|
||||||
// Sigsuspend
|
|
||||||
// Readv
|
|
||||||
// Writev
|
|
||||||
// Nfssvc
|
|
||||||
// Getfh
|
|
||||||
// Quotactl
|
|
||||||
// Mount
|
|
||||||
// Csops
|
|
||||||
// Waitid
|
|
||||||
// Add_profil
|
|
||||||
// Kdebug_trace
|
|
||||||
// Sigreturn
|
|
||||||
// Atsocket
|
|
||||||
// Kqueue_from_portset_np
|
|
||||||
// Kqueue_portset
|
|
||||||
// Getattrlist
|
|
||||||
// Setattrlist
|
|
||||||
// Getdents
|
|
||||||
// Getdirentriesattr
|
|
||||||
// Searchfs
|
|
||||||
// Delete
|
|
||||||
// Copyfile
|
|
||||||
// Watchevent
|
|
||||||
// Waitevent
|
|
||||||
// Modwatch
|
|
||||||
// Fsctl
|
|
||||||
// Initgroups
|
|
||||||
// Posix_spawn
|
|
||||||
// Nfsclnt
|
|
||||||
// Fhopen
|
|
||||||
// Minherit
|
|
||||||
// Semsys
|
|
||||||
// Msgsys
|
|
||||||
// Shmsys
|
|
||||||
// Semctl
|
|
||||||
// Semget
|
|
||||||
// Semop
|
|
||||||
// Msgctl
|
|
||||||
// Msgget
|
|
||||||
// Msgsnd
|
|
||||||
// Msgrcv
|
|
||||||
// Shmat
|
|
||||||
// Shmctl
|
|
||||||
// Shmdt
|
|
||||||
// Shmget
|
|
||||||
// Shm_open
|
|
||||||
// Shm_unlink
|
|
||||||
// Sem_open
|
|
||||||
// Sem_close
|
|
||||||
// Sem_unlink
|
|
||||||
// Sem_wait
|
|
||||||
// Sem_trywait
|
|
||||||
// Sem_post
|
|
||||||
// Sem_getvalue
|
|
||||||
// Sem_init
|
|
||||||
// Sem_destroy
|
|
||||||
// Open_extended
|
|
||||||
// Umask_extended
|
|
||||||
// Stat_extended
|
|
||||||
// Lstat_extended
|
|
||||||
// Fstat_extended
|
|
||||||
// Chmod_extended
|
|
||||||
// Fchmod_extended
|
|
||||||
// Access_extended
|
|
||||||
// Settid
|
|
||||||
// Gettid
|
|
||||||
// Setsgroups
|
|
||||||
// Getsgroups
|
|
||||||
// Setwgroups
|
|
||||||
// Getwgroups
|
|
||||||
// Mkfifo_extended
|
|
||||||
// Mkdir_extended
|
|
||||||
// Identitysvc
|
|
||||||
// Shared_region_check_np
|
|
||||||
// Shared_region_map_np
|
|
||||||
// __pthread_mutex_destroy
|
|
||||||
// __pthread_mutex_init
|
|
||||||
// __pthread_mutex_lock
|
|
||||||
// __pthread_mutex_trylock
|
|
||||||
// __pthread_mutex_unlock
|
|
||||||
// __pthread_cond_init
|
|
||||||
// __pthread_cond_destroy
|
|
||||||
// __pthread_cond_broadcast
|
|
||||||
// __pthread_cond_signal
|
|
||||||
// Setsid_with_pid
|
|
||||||
// __pthread_cond_timedwait
|
|
||||||
// Aio_fsync
|
|
||||||
// Aio_return
|
|
||||||
// Aio_suspend
|
|
||||||
// Aio_cancel
|
|
||||||
// Aio_error
|
|
||||||
// Aio_read
|
|
||||||
// Aio_write
|
|
||||||
// Lio_listio
|
|
||||||
// __pthread_cond_wait
|
|
||||||
// Iopolicysys
|
|
||||||
// __pthread_kill
|
|
||||||
// __pthread_sigmask
|
|
||||||
// __sigwait
|
|
||||||
// __disable_threadsignal
|
|
||||||
// __pthread_markcancel
|
|
||||||
// __pthread_canceled
|
|
||||||
// __semwait_signal
|
|
||||||
// Proc_info
|
|
||||||
// Stat64_extended
|
|
||||||
// Lstat64_extended
|
|
||||||
// Fstat64_extended
|
|
||||||
// __pthread_chdir
|
|
||||||
// __pthread_fchdir
|
|
||||||
// Audit
|
|
||||||
// Auditon
|
|
||||||
// Getauid
|
|
||||||
// Setauid
|
|
||||||
// Getaudit
|
|
||||||
// Setaudit
|
|
||||||
// Getaudit_addr
|
|
||||||
// Setaudit_addr
|
|
||||||
// Auditctl
|
|
||||||
// Bsdthread_create
|
|
||||||
// Bsdthread_terminate
|
|
||||||
// Stack_snapshot
|
|
||||||
// Bsdthread_register
|
|
||||||
// Workq_open
|
|
||||||
// Workq_ops
|
|
||||||
// __mac_execve
|
|
||||||
// __mac_syscall
|
|
||||||
// __mac_get_file
|
|
||||||
// __mac_set_file
|
|
||||||
// __mac_get_link
|
|
||||||
// __mac_set_link
|
|
||||||
// __mac_get_proc
|
|
||||||
// __mac_set_proc
|
|
||||||
// __mac_get_fd
|
|
||||||
// __mac_set_fd
|
|
||||||
// __mac_get_pid
|
|
||||||
// __mac_get_lcid
|
|
||||||
// __mac_get_lctx
|
|
||||||
// __mac_set_lctx
|
|
||||||
// Setlcid
|
|
||||||
// Read_nocancel
|
|
||||||
// Write_nocancel
|
|
||||||
// Open_nocancel
|
|
||||||
// Close_nocancel
|
|
||||||
// Wait4_nocancel
|
|
||||||
// Recvmsg_nocancel
|
|
||||||
// Sendmsg_nocancel
|
|
||||||
// Recvfrom_nocancel
|
|
||||||
// Accept_nocancel
|
|
||||||
// Fcntl_nocancel
|
|
||||||
// Select_nocancel
|
|
||||||
// Fsync_nocancel
|
|
||||||
// Connect_nocancel
|
|
||||||
// Sigsuspend_nocancel
|
|
||||||
// Readv_nocancel
|
|
||||||
// Writev_nocancel
|
|
||||||
// Sendto_nocancel
|
|
||||||
// Pread_nocancel
|
|
||||||
// Pwrite_nocancel
|
|
||||||
// Waitid_nocancel
|
|
||||||
// Poll_nocancel
|
|
||||||
// Msgsnd_nocancel
|
|
||||||
// Msgrcv_nocancel
|
|
||||||
// Sem_wait_nocancel
|
|
||||||
// Aio_suspend_nocancel
|
|
||||||
// __sigwait_nocancel
|
|
||||||
// __semwait_signal_nocancel
|
|
||||||
// __mac_mount
|
|
||||||
// __mac_get_mount
|
|
||||||
// __mac_getfsstat
|
|
||||||
|
|
|
||||||
|
|
@ -693,10 +693,10 @@ type SockaddrALG struct {
|
||||||
|
|
||||||
func (sa *SockaddrALG) sockaddr() (unsafe.Pointer, _Socklen, error) {
|
func (sa *SockaddrALG) sockaddr() (unsafe.Pointer, _Socklen, error) {
|
||||||
// Leave room for NUL byte terminator.
|
// Leave room for NUL byte terminator.
|
||||||
if len(sa.Type) > 13 {
|
if len(sa.Type) > len(sa.raw.Type)-1 {
|
||||||
return nil, 0, EINVAL
|
return nil, 0, EINVAL
|
||||||
}
|
}
|
||||||
if len(sa.Name) > 63 {
|
if len(sa.Name) > len(sa.raw.Name)-1 {
|
||||||
return nil, 0, EINVAL
|
return nil, 0, EINVAL
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -704,17 +704,8 @@ func (sa *SockaddrALG) sockaddr() (unsafe.Pointer, _Socklen, error) {
|
||||||
sa.raw.Feat = sa.Feature
|
sa.raw.Feat = sa.Feature
|
||||||
sa.raw.Mask = sa.Mask
|
sa.raw.Mask = sa.Mask
|
||||||
|
|
||||||
typ, err := ByteSliceFromString(sa.Type)
|
copy(sa.raw.Type[:], sa.Type)
|
||||||
if err != nil {
|
copy(sa.raw.Name[:], sa.Name)
|
||||||
return nil, 0, err
|
|
||||||
}
|
|
||||||
name, err := ByteSliceFromString(sa.Name)
|
|
||||||
if err != nil {
|
|
||||||
return nil, 0, err
|
|
||||||
}
|
|
||||||
|
|
||||||
copy(sa.raw.Type[:], typ)
|
|
||||||
copy(sa.raw.Name[:], name)
|
|
||||||
|
|
||||||
return unsafe.Pointer(&sa.raw), SizeofSockaddrALG, nil
|
return unsafe.Pointer(&sa.raw), SizeofSockaddrALG, nil
|
||||||
}
|
}
|
||||||
|
|
@ -1988,8 +1979,6 @@ func Signalfd(fd int, sigmask *Sigset_t, flags int) (newfd int, err error) {
|
||||||
//sys Unshare(flags int) (err error)
|
//sys Unshare(flags int) (err error)
|
||||||
//sys write(fd int, p []byte) (n int, err error)
|
//sys write(fd int, p []byte) (n int, err error)
|
||||||
//sys exitThread(code int) (err error) = SYS_EXIT
|
//sys exitThread(code int) (err error) = SYS_EXIT
|
||||||
//sys readlen(fd int, p *byte, np int) (n int, err error) = SYS_READ
|
|
||||||
//sys writelen(fd int, p *byte, np int) (n int, err error) = SYS_WRITE
|
|
||||||
//sys readv(fd int, iovs []Iovec) (n int, err error) = SYS_READV
|
//sys readv(fd int, iovs []Iovec) (n int, err error) = SYS_READV
|
||||||
//sys writev(fd int, iovs []Iovec) (n int, err error) = SYS_WRITEV
|
//sys writev(fd int, iovs []Iovec) (n int, err error) = SYS_WRITEV
|
||||||
//sys preadv(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) = SYS_PREADV
|
//sys preadv(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) = SYS_PREADV
|
||||||
|
|
@ -2493,99 +2482,3 @@ func SchedGetAttr(pid int, flags uint) (*SchedAttr, error) {
|
||||||
}
|
}
|
||||||
return attr, nil
|
return attr, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Unimplemented
|
|
||||||
*/
|
|
||||||
// AfsSyscall
|
|
||||||
// ArchPrctl
|
|
||||||
// Brk
|
|
||||||
// ClockNanosleep
|
|
||||||
// ClockSettime
|
|
||||||
// Clone
|
|
||||||
// EpollCtlOld
|
|
||||||
// EpollPwait
|
|
||||||
// EpollWaitOld
|
|
||||||
// Execve
|
|
||||||
// Fork
|
|
||||||
// Futex
|
|
||||||
// GetKernelSyms
|
|
||||||
// GetMempolicy
|
|
||||||
// GetRobustList
|
|
||||||
// GetThreadArea
|
|
||||||
// Getpmsg
|
|
||||||
// IoCancel
|
|
||||||
// IoDestroy
|
|
||||||
// IoGetevents
|
|
||||||
// IoSetup
|
|
||||||
// IoSubmit
|
|
||||||
// IoprioGet
|
|
||||||
// IoprioSet
|
|
||||||
// KexecLoad
|
|
||||||
// LookupDcookie
|
|
||||||
// Mbind
|
|
||||||
// MigratePages
|
|
||||||
// Mincore
|
|
||||||
// ModifyLdt
|
|
||||||
// Mount
|
|
||||||
// MovePages
|
|
||||||
// MqGetsetattr
|
|
||||||
// MqNotify
|
|
||||||
// MqOpen
|
|
||||||
// MqTimedreceive
|
|
||||||
// MqTimedsend
|
|
||||||
// MqUnlink
|
|
||||||
// Msgctl
|
|
||||||
// Msgget
|
|
||||||
// Msgrcv
|
|
||||||
// Msgsnd
|
|
||||||
// Nfsservctl
|
|
||||||
// Personality
|
|
||||||
// Pselect6
|
|
||||||
// Ptrace
|
|
||||||
// Putpmsg
|
|
||||||
// Quotactl
|
|
||||||
// Readahead
|
|
||||||
// Readv
|
|
||||||
// RemapFilePages
|
|
||||||
// RestartSyscall
|
|
||||||
// RtSigaction
|
|
||||||
// RtSigpending
|
|
||||||
// RtSigqueueinfo
|
|
||||||
// RtSigreturn
|
|
||||||
// RtSigsuspend
|
|
||||||
// RtSigtimedwait
|
|
||||||
// SchedGetPriorityMax
|
|
||||||
// SchedGetPriorityMin
|
|
||||||
// SchedGetparam
|
|
||||||
// SchedGetscheduler
|
|
||||||
// SchedRrGetInterval
|
|
||||||
// SchedSetparam
|
|
||||||
// SchedYield
|
|
||||||
// Security
|
|
||||||
// Semctl
|
|
||||||
// Semget
|
|
||||||
// Semop
|
|
||||||
// Semtimedop
|
|
||||||
// SetMempolicy
|
|
||||||
// SetRobustList
|
|
||||||
// SetThreadArea
|
|
||||||
// SetTidAddress
|
|
||||||
// Sigaltstack
|
|
||||||
// Swapoff
|
|
||||||
// Swapon
|
|
||||||
// Sysfs
|
|
||||||
// TimerCreate
|
|
||||||
// TimerDelete
|
|
||||||
// TimerGetoverrun
|
|
||||||
// TimerGettime
|
|
||||||
// TimerSettime
|
|
||||||
// Tkill (obsolete)
|
|
||||||
// Tuxcall
|
|
||||||
// Umount2
|
|
||||||
// Uselib
|
|
||||||
// Utimensat
|
|
||||||
// Vfork
|
|
||||||
// Vhangup
|
|
||||||
// Vserver
|
|
||||||
// _Sysctl
|
|
||||||
|
|
|
||||||
|
|
@ -356,8 +356,6 @@ func Statvfs(path string, buf *Statvfs_t) (err error) {
|
||||||
//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 readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ
|
|
||||||
//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE
|
|
||||||
//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)
|
//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
@ -371,262 +369,3 @@ const (
|
||||||
func mremap(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (uintptr, error) {
|
func mremap(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (uintptr, error) {
|
||||||
return mremapNetBSD(oldaddr, oldlength, newaddr, newlength, flags)
|
return mremapNetBSD(oldaddr, oldlength, newaddr, newlength, flags)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Unimplemented
|
|
||||||
*/
|
|
||||||
// ____semctl13
|
|
||||||
// __clone
|
|
||||||
// __fhopen40
|
|
||||||
// __fhstat40
|
|
||||||
// __fhstatvfs140
|
|
||||||
// __fstat30
|
|
||||||
// __getcwd
|
|
||||||
// __getfh30
|
|
||||||
// __getlogin
|
|
||||||
// __lstat30
|
|
||||||
// __mount50
|
|
||||||
// __msgctl13
|
|
||||||
// __msync13
|
|
||||||
// __ntp_gettime30
|
|
||||||
// __posix_chown
|
|
||||||
// __posix_fchown
|
|
||||||
// __posix_lchown
|
|
||||||
// __posix_rename
|
|
||||||
// __setlogin
|
|
||||||
// __shmctl13
|
|
||||||
// __sigaction_sigtramp
|
|
||||||
// __sigaltstack14
|
|
||||||
// __sigpending14
|
|
||||||
// __sigprocmask14
|
|
||||||
// __sigsuspend14
|
|
||||||
// __sigtimedwait
|
|
||||||
// __stat30
|
|
||||||
// __syscall
|
|
||||||
// __vfork14
|
|
||||||
// _ksem_close
|
|
||||||
// _ksem_destroy
|
|
||||||
// _ksem_getvalue
|
|
||||||
// _ksem_init
|
|
||||||
// _ksem_open
|
|
||||||
// _ksem_post
|
|
||||||
// _ksem_trywait
|
|
||||||
// _ksem_unlink
|
|
||||||
// _ksem_wait
|
|
||||||
// _lwp_continue
|
|
||||||
// _lwp_create
|
|
||||||
// _lwp_ctl
|
|
||||||
// _lwp_detach
|
|
||||||
// _lwp_exit
|
|
||||||
// _lwp_getname
|
|
||||||
// _lwp_getprivate
|
|
||||||
// _lwp_kill
|
|
||||||
// _lwp_park
|
|
||||||
// _lwp_self
|
|
||||||
// _lwp_setname
|
|
||||||
// _lwp_setprivate
|
|
||||||
// _lwp_suspend
|
|
||||||
// _lwp_unpark
|
|
||||||
// _lwp_unpark_all
|
|
||||||
// _lwp_wait
|
|
||||||
// _lwp_wakeup
|
|
||||||
// _pset_bind
|
|
||||||
// _sched_getaffinity
|
|
||||||
// _sched_getparam
|
|
||||||
// _sched_setaffinity
|
|
||||||
// _sched_setparam
|
|
||||||
// acct
|
|
||||||
// aio_cancel
|
|
||||||
// aio_error
|
|
||||||
// aio_fsync
|
|
||||||
// aio_read
|
|
||||||
// aio_return
|
|
||||||
// aio_suspend
|
|
||||||
// aio_write
|
|
||||||
// break
|
|
||||||
// clock_getres
|
|
||||||
// clock_gettime
|
|
||||||
// clock_settime
|
|
||||||
// compat_09_ogetdomainname
|
|
||||||
// compat_09_osetdomainname
|
|
||||||
// compat_09_ouname
|
|
||||||
// compat_10_omsgsys
|
|
||||||
// compat_10_osemsys
|
|
||||||
// compat_10_oshmsys
|
|
||||||
// compat_12_fstat12
|
|
||||||
// compat_12_getdirentries
|
|
||||||
// compat_12_lstat12
|
|
||||||
// compat_12_msync
|
|
||||||
// compat_12_oreboot
|
|
||||||
// compat_12_oswapon
|
|
||||||
// compat_12_stat12
|
|
||||||
// compat_13_sigaction13
|
|
||||||
// compat_13_sigaltstack13
|
|
||||||
// compat_13_sigpending13
|
|
||||||
// compat_13_sigprocmask13
|
|
||||||
// compat_13_sigreturn13
|
|
||||||
// compat_13_sigsuspend13
|
|
||||||
// compat_14___semctl
|
|
||||||
// compat_14_msgctl
|
|
||||||
// compat_14_shmctl
|
|
||||||
// compat_16___sigaction14
|
|
||||||
// compat_16___sigreturn14
|
|
||||||
// compat_20_fhstatfs
|
|
||||||
// compat_20_fstatfs
|
|
||||||
// compat_20_getfsstat
|
|
||||||
// compat_20_statfs
|
|
||||||
// compat_30___fhstat30
|
|
||||||
// compat_30___fstat13
|
|
||||||
// compat_30___lstat13
|
|
||||||
// compat_30___stat13
|
|
||||||
// compat_30_fhopen
|
|
||||||
// compat_30_fhstat
|
|
||||||
// compat_30_fhstatvfs1
|
|
||||||
// compat_30_getdents
|
|
||||||
// compat_30_getfh
|
|
||||||
// compat_30_ntp_gettime
|
|
||||||
// compat_30_socket
|
|
||||||
// compat_40_mount
|
|
||||||
// compat_43_fstat43
|
|
||||||
// compat_43_lstat43
|
|
||||||
// compat_43_oaccept
|
|
||||||
// compat_43_ocreat
|
|
||||||
// compat_43_oftruncate
|
|
||||||
// compat_43_ogetdirentries
|
|
||||||
// compat_43_ogetdtablesize
|
|
||||||
// compat_43_ogethostid
|
|
||||||
// compat_43_ogethostname
|
|
||||||
// compat_43_ogetkerninfo
|
|
||||||
// compat_43_ogetpagesize
|
|
||||||
// compat_43_ogetpeername
|
|
||||||
// compat_43_ogetrlimit
|
|
||||||
// compat_43_ogetsockname
|
|
||||||
// compat_43_okillpg
|
|
||||||
// compat_43_olseek
|
|
||||||
// compat_43_ommap
|
|
||||||
// compat_43_oquota
|
|
||||||
// compat_43_orecv
|
|
||||||
// compat_43_orecvfrom
|
|
||||||
// compat_43_orecvmsg
|
|
||||||
// compat_43_osend
|
|
||||||
// compat_43_osendmsg
|
|
||||||
// compat_43_osethostid
|
|
||||||
// compat_43_osethostname
|
|
||||||
// compat_43_osigblock
|
|
||||||
// compat_43_osigsetmask
|
|
||||||
// compat_43_osigstack
|
|
||||||
// compat_43_osigvec
|
|
||||||
// compat_43_otruncate
|
|
||||||
// compat_43_owait
|
|
||||||
// compat_43_stat43
|
|
||||||
// execve
|
|
||||||
// extattr_delete_fd
|
|
||||||
// extattr_delete_file
|
|
||||||
// extattr_delete_link
|
|
||||||
// extattr_get_fd
|
|
||||||
// extattr_get_file
|
|
||||||
// extattr_get_link
|
|
||||||
// extattr_list_fd
|
|
||||||
// extattr_list_file
|
|
||||||
// extattr_list_link
|
|
||||||
// extattr_set_fd
|
|
||||||
// extattr_set_file
|
|
||||||
// extattr_set_link
|
|
||||||
// extattrctl
|
|
||||||
// fchroot
|
|
||||||
// fdatasync
|
|
||||||
// fgetxattr
|
|
||||||
// fktrace
|
|
||||||
// flistxattr
|
|
||||||
// fork
|
|
||||||
// fremovexattr
|
|
||||||
// fsetxattr
|
|
||||||
// fstatvfs1
|
|
||||||
// fsync_range
|
|
||||||
// getcontext
|
|
||||||
// getitimer
|
|
||||||
// getvfsstat
|
|
||||||
// getxattr
|
|
||||||
// ktrace
|
|
||||||
// lchflags
|
|
||||||
// lchmod
|
|
||||||
// lfs_bmapv
|
|
||||||
// lfs_markv
|
|
||||||
// lfs_segclean
|
|
||||||
// lfs_segwait
|
|
||||||
// lgetxattr
|
|
||||||
// lio_listio
|
|
||||||
// listxattr
|
|
||||||
// llistxattr
|
|
||||||
// lremovexattr
|
|
||||||
// lseek
|
|
||||||
// lsetxattr
|
|
||||||
// lutimes
|
|
||||||
// madvise
|
|
||||||
// mincore
|
|
||||||
// minherit
|
|
||||||
// modctl
|
|
||||||
// mq_close
|
|
||||||
// mq_getattr
|
|
||||||
// mq_notify
|
|
||||||
// mq_open
|
|
||||||
// mq_receive
|
|
||||||
// mq_send
|
|
||||||
// mq_setattr
|
|
||||||
// mq_timedreceive
|
|
||||||
// mq_timedsend
|
|
||||||
// mq_unlink
|
|
||||||
// msgget
|
|
||||||
// msgrcv
|
|
||||||
// msgsnd
|
|
||||||
// nfssvc
|
|
||||||
// ntp_adjtime
|
|
||||||
// pmc_control
|
|
||||||
// pmc_get_info
|
|
||||||
// pollts
|
|
||||||
// preadv
|
|
||||||
// profil
|
|
||||||
// pselect
|
|
||||||
// pset_assign
|
|
||||||
// pset_create
|
|
||||||
// pset_destroy
|
|
||||||
// ptrace
|
|
||||||
// pwritev
|
|
||||||
// quotactl
|
|
||||||
// rasctl
|
|
||||||
// readv
|
|
||||||
// reboot
|
|
||||||
// removexattr
|
|
||||||
// sa_enable
|
|
||||||
// sa_preempt
|
|
||||||
// sa_register
|
|
||||||
// sa_setconcurrency
|
|
||||||
// sa_stacks
|
|
||||||
// sa_yield
|
|
||||||
// sbrk
|
|
||||||
// sched_yield
|
|
||||||
// semconfig
|
|
||||||
// semget
|
|
||||||
// semop
|
|
||||||
// setcontext
|
|
||||||
// setitimer
|
|
||||||
// setxattr
|
|
||||||
// shmat
|
|
||||||
// shmdt
|
|
||||||
// shmget
|
|
||||||
// sstk
|
|
||||||
// statvfs1
|
|
||||||
// swapctl
|
|
||||||
// sysarch
|
|
||||||
// syscall
|
|
||||||
// timer_create
|
|
||||||
// timer_delete
|
|
||||||
// timer_getoverrun
|
|
||||||
// timer_gettime
|
|
||||||
// timer_settime
|
|
||||||
// undelete
|
|
||||||
// utrace
|
|
||||||
// uuidgen
|
|
||||||
// vadvise
|
|
||||||
// vfork
|
|
||||||
// writev
|
|
||||||
|
|
|
||||||
|
|
@ -326,78 +326,4 @@ func Uname(uname *Utsname) error {
|
||||||
//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 readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ
|
|
||||||
//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE
|
|
||||||
//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)
|
//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)
|
||||||
|
|
||||||
/*
|
|
||||||
* Unimplemented
|
|
||||||
*/
|
|
||||||
// __getcwd
|
|
||||||
// __semctl
|
|
||||||
// __syscall
|
|
||||||
// __sysctl
|
|
||||||
// adjfreq
|
|
||||||
// break
|
|
||||||
// clock_getres
|
|
||||||
// clock_gettime
|
|
||||||
// clock_settime
|
|
||||||
// closefrom
|
|
||||||
// execve
|
|
||||||
// fhopen
|
|
||||||
// fhstat
|
|
||||||
// fhstatfs
|
|
||||||
// fork
|
|
||||||
// futimens
|
|
||||||
// getfh
|
|
||||||
// getgid
|
|
||||||
// getitimer
|
|
||||||
// getlogin
|
|
||||||
// getthrid
|
|
||||||
// ktrace
|
|
||||||
// lfs_bmapv
|
|
||||||
// lfs_markv
|
|
||||||
// lfs_segclean
|
|
||||||
// lfs_segwait
|
|
||||||
// mincore
|
|
||||||
// minherit
|
|
||||||
// mount
|
|
||||||
// mquery
|
|
||||||
// msgctl
|
|
||||||
// msgget
|
|
||||||
// msgrcv
|
|
||||||
// msgsnd
|
|
||||||
// nfssvc
|
|
||||||
// nnpfspioctl
|
|
||||||
// preadv
|
|
||||||
// profil
|
|
||||||
// pwritev
|
|
||||||
// quotactl
|
|
||||||
// readv
|
|
||||||
// reboot
|
|
||||||
// renameat
|
|
||||||
// rfork
|
|
||||||
// sched_yield
|
|
||||||
// semget
|
|
||||||
// semop
|
|
||||||
// setgroups
|
|
||||||
// setitimer
|
|
||||||
// setsockopt
|
|
||||||
// shmat
|
|
||||||
// shmctl
|
|
||||||
// shmdt
|
|
||||||
// shmget
|
|
||||||
// sigaction
|
|
||||||
// sigaltstack
|
|
||||||
// sigpending
|
|
||||||
// sigprocmask
|
|
||||||
// sigreturn
|
|
||||||
// sigsuspend
|
|
||||||
// sysarch
|
|
||||||
// syscall
|
|
||||||
// threxit
|
|
||||||
// thrsigdivert
|
|
||||||
// thrsleep
|
|
||||||
// thrwakeup
|
|
||||||
// vfork
|
|
||||||
// writev
|
|
||||||
|
|
|
||||||
|
|
@ -698,24 +698,6 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
|
||||||
//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) = libsocket.setsockopt
|
//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) = libsocket.setsockopt
|
||||||
//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) = libsocket.recvfrom
|
//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) = libsocket.recvfrom
|
||||||
|
|
||||||
func readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procread)), 3, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf), 0, 0, 0)
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = e1
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwrite)), 3, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf), 0, 0, 0)
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = e1
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Event Ports
|
// Event Ports
|
||||||
|
|
||||||
type fileObjCookie struct {
|
type fileObjCookie struct {
|
||||||
|
|
|
||||||
|
|
@ -192,7 +192,6 @@ func (cmsg *Cmsghdr) SetLen(length int) {
|
||||||
|
|
||||||
//sys fcntl(fd int, cmd int, arg int) (val int, err error)
|
//sys fcntl(fd int, cmd int, arg int) (val int, err error)
|
||||||
//sys read(fd int, p []byte) (n int, err error)
|
//sys read(fd int, p []byte) (n int, err error)
|
||||||
//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ
|
|
||||||
//sys write(fd int, p []byte) (n int, err error)
|
//sys write(fd int, p []byte) (n int, err error)
|
||||||
|
|
||||||
//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) = SYS___ACCEPT_A
|
//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) = SYS___ACCEPT_A
|
||||||
|
|
|
||||||
|
|
@ -2421,6 +2421,15 @@ const (
|
||||||
PR_PAC_GET_ENABLED_KEYS = 0x3d
|
PR_PAC_GET_ENABLED_KEYS = 0x3d
|
||||||
PR_PAC_RESET_KEYS = 0x36
|
PR_PAC_RESET_KEYS = 0x36
|
||||||
PR_PAC_SET_ENABLED_KEYS = 0x3c
|
PR_PAC_SET_ENABLED_KEYS = 0x3c
|
||||||
|
PR_RISCV_V_GET_CONTROL = 0x46
|
||||||
|
PR_RISCV_V_SET_CONTROL = 0x45
|
||||||
|
PR_RISCV_V_VSTATE_CTRL_CUR_MASK = 0x3
|
||||||
|
PR_RISCV_V_VSTATE_CTRL_DEFAULT = 0x0
|
||||||
|
PR_RISCV_V_VSTATE_CTRL_INHERIT = 0x10
|
||||||
|
PR_RISCV_V_VSTATE_CTRL_MASK = 0x1f
|
||||||
|
PR_RISCV_V_VSTATE_CTRL_NEXT_MASK = 0xc
|
||||||
|
PR_RISCV_V_VSTATE_CTRL_OFF = 0x1
|
||||||
|
PR_RISCV_V_VSTATE_CTRL_ON = 0x2
|
||||||
PR_SCHED_CORE = 0x3e
|
PR_SCHED_CORE = 0x3e
|
||||||
PR_SCHED_CORE_CREATE = 0x1
|
PR_SCHED_CORE_CREATE = 0x1
|
||||||
PR_SCHED_CORE_GET = 0x0
|
PR_SCHED_CORE_GET = 0x0
|
||||||
|
|
|
||||||
|
|
@ -326,10 +326,12 @@ const (
|
||||||
SO_NOFCS = 0x2b
|
SO_NOFCS = 0x2b
|
||||||
SO_OOBINLINE = 0xa
|
SO_OOBINLINE = 0xa
|
||||||
SO_PASSCRED = 0x10
|
SO_PASSCRED = 0x10
|
||||||
|
SO_PASSPIDFD = 0x4c
|
||||||
SO_PASSSEC = 0x22
|
SO_PASSSEC = 0x22
|
||||||
SO_PEEK_OFF = 0x2a
|
SO_PEEK_OFF = 0x2a
|
||||||
SO_PEERCRED = 0x11
|
SO_PEERCRED = 0x11
|
||||||
SO_PEERGROUPS = 0x3b
|
SO_PEERGROUPS = 0x3b
|
||||||
|
SO_PEERPIDFD = 0x4d
|
||||||
SO_PEERSEC = 0x1f
|
SO_PEERSEC = 0x1f
|
||||||
SO_PREFER_BUSY_POLL = 0x45
|
SO_PREFER_BUSY_POLL = 0x45
|
||||||
SO_PROTOCOL = 0x26
|
SO_PROTOCOL = 0x26
|
||||||
|
|
|
||||||
|
|
@ -327,10 +327,12 @@ const (
|
||||||
SO_NOFCS = 0x2b
|
SO_NOFCS = 0x2b
|
||||||
SO_OOBINLINE = 0xa
|
SO_OOBINLINE = 0xa
|
||||||
SO_PASSCRED = 0x10
|
SO_PASSCRED = 0x10
|
||||||
|
SO_PASSPIDFD = 0x4c
|
||||||
SO_PASSSEC = 0x22
|
SO_PASSSEC = 0x22
|
||||||
SO_PEEK_OFF = 0x2a
|
SO_PEEK_OFF = 0x2a
|
||||||
SO_PEERCRED = 0x11
|
SO_PEERCRED = 0x11
|
||||||
SO_PEERGROUPS = 0x3b
|
SO_PEERGROUPS = 0x3b
|
||||||
|
SO_PEERPIDFD = 0x4d
|
||||||
SO_PEERSEC = 0x1f
|
SO_PEERSEC = 0x1f
|
||||||
SO_PREFER_BUSY_POLL = 0x45
|
SO_PREFER_BUSY_POLL = 0x45
|
||||||
SO_PROTOCOL = 0x26
|
SO_PROTOCOL = 0x26
|
||||||
|
|
|
||||||
|
|
@ -333,10 +333,12 @@ const (
|
||||||
SO_NOFCS = 0x2b
|
SO_NOFCS = 0x2b
|
||||||
SO_OOBINLINE = 0xa
|
SO_OOBINLINE = 0xa
|
||||||
SO_PASSCRED = 0x10
|
SO_PASSCRED = 0x10
|
||||||
|
SO_PASSPIDFD = 0x4c
|
||||||
SO_PASSSEC = 0x22
|
SO_PASSSEC = 0x22
|
||||||
SO_PEEK_OFF = 0x2a
|
SO_PEEK_OFF = 0x2a
|
||||||
SO_PEERCRED = 0x11
|
SO_PEERCRED = 0x11
|
||||||
SO_PEERGROUPS = 0x3b
|
SO_PEERGROUPS = 0x3b
|
||||||
|
SO_PEERPIDFD = 0x4d
|
||||||
SO_PEERSEC = 0x1f
|
SO_PEERSEC = 0x1f
|
||||||
SO_PREFER_BUSY_POLL = 0x45
|
SO_PREFER_BUSY_POLL = 0x45
|
||||||
SO_PROTOCOL = 0x26
|
SO_PROTOCOL = 0x26
|
||||||
|
|
|
||||||
|
|
@ -323,10 +323,12 @@ const (
|
||||||
SO_NOFCS = 0x2b
|
SO_NOFCS = 0x2b
|
||||||
SO_OOBINLINE = 0xa
|
SO_OOBINLINE = 0xa
|
||||||
SO_PASSCRED = 0x10
|
SO_PASSCRED = 0x10
|
||||||
|
SO_PASSPIDFD = 0x4c
|
||||||
SO_PASSSEC = 0x22
|
SO_PASSSEC = 0x22
|
||||||
SO_PEEK_OFF = 0x2a
|
SO_PEEK_OFF = 0x2a
|
||||||
SO_PEERCRED = 0x11
|
SO_PEERCRED = 0x11
|
||||||
SO_PEERGROUPS = 0x3b
|
SO_PEERGROUPS = 0x3b
|
||||||
|
SO_PEERPIDFD = 0x4d
|
||||||
SO_PEERSEC = 0x1f
|
SO_PEERSEC = 0x1f
|
||||||
SO_PREFER_BUSY_POLL = 0x45
|
SO_PREFER_BUSY_POLL = 0x45
|
||||||
SO_PROTOCOL = 0x26
|
SO_PROTOCOL = 0x26
|
||||||
|
|
|
||||||
|
|
@ -118,6 +118,8 @@ const (
|
||||||
IUCLC = 0x200
|
IUCLC = 0x200
|
||||||
IXOFF = 0x1000
|
IXOFF = 0x1000
|
||||||
IXON = 0x400
|
IXON = 0x400
|
||||||
|
LASX_CTX_MAGIC = 0x41535801
|
||||||
|
LSX_CTX_MAGIC = 0x53580001
|
||||||
MAP_ANON = 0x20
|
MAP_ANON = 0x20
|
||||||
MAP_ANONYMOUS = 0x20
|
MAP_ANONYMOUS = 0x20
|
||||||
MAP_DENYWRITE = 0x800
|
MAP_DENYWRITE = 0x800
|
||||||
|
|
@ -317,10 +319,12 @@ const (
|
||||||
SO_NOFCS = 0x2b
|
SO_NOFCS = 0x2b
|
||||||
SO_OOBINLINE = 0xa
|
SO_OOBINLINE = 0xa
|
||||||
SO_PASSCRED = 0x10
|
SO_PASSCRED = 0x10
|
||||||
|
SO_PASSPIDFD = 0x4c
|
||||||
SO_PASSSEC = 0x22
|
SO_PASSSEC = 0x22
|
||||||
SO_PEEK_OFF = 0x2a
|
SO_PEEK_OFF = 0x2a
|
||||||
SO_PEERCRED = 0x11
|
SO_PEERCRED = 0x11
|
||||||
SO_PEERGROUPS = 0x3b
|
SO_PEERGROUPS = 0x3b
|
||||||
|
SO_PEERPIDFD = 0x4d
|
||||||
SO_PEERSEC = 0x1f
|
SO_PEERSEC = 0x1f
|
||||||
SO_PREFER_BUSY_POLL = 0x45
|
SO_PREFER_BUSY_POLL = 0x45
|
||||||
SO_PROTOCOL = 0x26
|
SO_PROTOCOL = 0x26
|
||||||
|
|
|
||||||
|
|
@ -326,10 +326,12 @@ const (
|
||||||
SO_NOFCS = 0x2b
|
SO_NOFCS = 0x2b
|
||||||
SO_OOBINLINE = 0x100
|
SO_OOBINLINE = 0x100
|
||||||
SO_PASSCRED = 0x11
|
SO_PASSCRED = 0x11
|
||||||
|
SO_PASSPIDFD = 0x4c
|
||||||
SO_PASSSEC = 0x22
|
SO_PASSSEC = 0x22
|
||||||
SO_PEEK_OFF = 0x2a
|
SO_PEEK_OFF = 0x2a
|
||||||
SO_PEERCRED = 0x12
|
SO_PEERCRED = 0x12
|
||||||
SO_PEERGROUPS = 0x3b
|
SO_PEERGROUPS = 0x3b
|
||||||
|
SO_PEERPIDFD = 0x4d
|
||||||
SO_PEERSEC = 0x1e
|
SO_PEERSEC = 0x1e
|
||||||
SO_PREFER_BUSY_POLL = 0x45
|
SO_PREFER_BUSY_POLL = 0x45
|
||||||
SO_PROTOCOL = 0x1028
|
SO_PROTOCOL = 0x1028
|
||||||
|
|
|
||||||
|
|
@ -326,10 +326,12 @@ const (
|
||||||
SO_NOFCS = 0x2b
|
SO_NOFCS = 0x2b
|
||||||
SO_OOBINLINE = 0x100
|
SO_OOBINLINE = 0x100
|
||||||
SO_PASSCRED = 0x11
|
SO_PASSCRED = 0x11
|
||||||
|
SO_PASSPIDFD = 0x4c
|
||||||
SO_PASSSEC = 0x22
|
SO_PASSSEC = 0x22
|
||||||
SO_PEEK_OFF = 0x2a
|
SO_PEEK_OFF = 0x2a
|
||||||
SO_PEERCRED = 0x12
|
SO_PEERCRED = 0x12
|
||||||
SO_PEERGROUPS = 0x3b
|
SO_PEERGROUPS = 0x3b
|
||||||
|
SO_PEERPIDFD = 0x4d
|
||||||
SO_PEERSEC = 0x1e
|
SO_PEERSEC = 0x1e
|
||||||
SO_PREFER_BUSY_POLL = 0x45
|
SO_PREFER_BUSY_POLL = 0x45
|
||||||
SO_PROTOCOL = 0x1028
|
SO_PROTOCOL = 0x1028
|
||||||
|
|
|
||||||
|
|
@ -326,10 +326,12 @@ const (
|
||||||
SO_NOFCS = 0x2b
|
SO_NOFCS = 0x2b
|
||||||
SO_OOBINLINE = 0x100
|
SO_OOBINLINE = 0x100
|
||||||
SO_PASSCRED = 0x11
|
SO_PASSCRED = 0x11
|
||||||
|
SO_PASSPIDFD = 0x4c
|
||||||
SO_PASSSEC = 0x22
|
SO_PASSSEC = 0x22
|
||||||
SO_PEEK_OFF = 0x2a
|
SO_PEEK_OFF = 0x2a
|
||||||
SO_PEERCRED = 0x12
|
SO_PEERCRED = 0x12
|
||||||
SO_PEERGROUPS = 0x3b
|
SO_PEERGROUPS = 0x3b
|
||||||
|
SO_PEERPIDFD = 0x4d
|
||||||
SO_PEERSEC = 0x1e
|
SO_PEERSEC = 0x1e
|
||||||
SO_PREFER_BUSY_POLL = 0x45
|
SO_PREFER_BUSY_POLL = 0x45
|
||||||
SO_PROTOCOL = 0x1028
|
SO_PROTOCOL = 0x1028
|
||||||
|
|
|
||||||
|
|
@ -326,10 +326,12 @@ const (
|
||||||
SO_NOFCS = 0x2b
|
SO_NOFCS = 0x2b
|
||||||
SO_OOBINLINE = 0x100
|
SO_OOBINLINE = 0x100
|
||||||
SO_PASSCRED = 0x11
|
SO_PASSCRED = 0x11
|
||||||
|
SO_PASSPIDFD = 0x4c
|
||||||
SO_PASSSEC = 0x22
|
SO_PASSSEC = 0x22
|
||||||
SO_PEEK_OFF = 0x2a
|
SO_PEEK_OFF = 0x2a
|
||||||
SO_PEERCRED = 0x12
|
SO_PEERCRED = 0x12
|
||||||
SO_PEERGROUPS = 0x3b
|
SO_PEERGROUPS = 0x3b
|
||||||
|
SO_PEERPIDFD = 0x4d
|
||||||
SO_PEERSEC = 0x1e
|
SO_PEERSEC = 0x1e
|
||||||
SO_PREFER_BUSY_POLL = 0x45
|
SO_PREFER_BUSY_POLL = 0x45
|
||||||
SO_PROTOCOL = 0x1028
|
SO_PROTOCOL = 0x1028
|
||||||
|
|
|
||||||
|
|
@ -381,10 +381,12 @@ const (
|
||||||
SO_NOFCS = 0x2b
|
SO_NOFCS = 0x2b
|
||||||
SO_OOBINLINE = 0xa
|
SO_OOBINLINE = 0xa
|
||||||
SO_PASSCRED = 0x14
|
SO_PASSCRED = 0x14
|
||||||
|
SO_PASSPIDFD = 0x4c
|
||||||
SO_PASSSEC = 0x22
|
SO_PASSSEC = 0x22
|
||||||
SO_PEEK_OFF = 0x2a
|
SO_PEEK_OFF = 0x2a
|
||||||
SO_PEERCRED = 0x15
|
SO_PEERCRED = 0x15
|
||||||
SO_PEERGROUPS = 0x3b
|
SO_PEERGROUPS = 0x3b
|
||||||
|
SO_PEERPIDFD = 0x4d
|
||||||
SO_PEERSEC = 0x1f
|
SO_PEERSEC = 0x1f
|
||||||
SO_PREFER_BUSY_POLL = 0x45
|
SO_PREFER_BUSY_POLL = 0x45
|
||||||
SO_PROTOCOL = 0x26
|
SO_PROTOCOL = 0x26
|
||||||
|
|
|
||||||
|
|
@ -385,10 +385,12 @@ const (
|
||||||
SO_NOFCS = 0x2b
|
SO_NOFCS = 0x2b
|
||||||
SO_OOBINLINE = 0xa
|
SO_OOBINLINE = 0xa
|
||||||
SO_PASSCRED = 0x14
|
SO_PASSCRED = 0x14
|
||||||
|
SO_PASSPIDFD = 0x4c
|
||||||
SO_PASSSEC = 0x22
|
SO_PASSSEC = 0x22
|
||||||
SO_PEEK_OFF = 0x2a
|
SO_PEEK_OFF = 0x2a
|
||||||
SO_PEERCRED = 0x15
|
SO_PEERCRED = 0x15
|
||||||
SO_PEERGROUPS = 0x3b
|
SO_PEERGROUPS = 0x3b
|
||||||
|
SO_PEERPIDFD = 0x4d
|
||||||
SO_PEERSEC = 0x1f
|
SO_PEERSEC = 0x1f
|
||||||
SO_PREFER_BUSY_POLL = 0x45
|
SO_PREFER_BUSY_POLL = 0x45
|
||||||
SO_PROTOCOL = 0x26
|
SO_PROTOCOL = 0x26
|
||||||
|
|
|
||||||
|
|
@ -385,10 +385,12 @@ const (
|
||||||
SO_NOFCS = 0x2b
|
SO_NOFCS = 0x2b
|
||||||
SO_OOBINLINE = 0xa
|
SO_OOBINLINE = 0xa
|
||||||
SO_PASSCRED = 0x14
|
SO_PASSCRED = 0x14
|
||||||
|
SO_PASSPIDFD = 0x4c
|
||||||
SO_PASSSEC = 0x22
|
SO_PASSSEC = 0x22
|
||||||
SO_PEEK_OFF = 0x2a
|
SO_PEEK_OFF = 0x2a
|
||||||
SO_PEERCRED = 0x15
|
SO_PEERCRED = 0x15
|
||||||
SO_PEERGROUPS = 0x3b
|
SO_PEERGROUPS = 0x3b
|
||||||
|
SO_PEERPIDFD = 0x4d
|
||||||
SO_PEERSEC = 0x1f
|
SO_PEERSEC = 0x1f
|
||||||
SO_PREFER_BUSY_POLL = 0x45
|
SO_PREFER_BUSY_POLL = 0x45
|
||||||
SO_PROTOCOL = 0x26
|
SO_PROTOCOL = 0x26
|
||||||
|
|
|
||||||
|
|
@ -314,10 +314,12 @@ const (
|
||||||
SO_NOFCS = 0x2b
|
SO_NOFCS = 0x2b
|
||||||
SO_OOBINLINE = 0xa
|
SO_OOBINLINE = 0xa
|
||||||
SO_PASSCRED = 0x10
|
SO_PASSCRED = 0x10
|
||||||
|
SO_PASSPIDFD = 0x4c
|
||||||
SO_PASSSEC = 0x22
|
SO_PASSSEC = 0x22
|
||||||
SO_PEEK_OFF = 0x2a
|
SO_PEEK_OFF = 0x2a
|
||||||
SO_PEERCRED = 0x11
|
SO_PEERCRED = 0x11
|
||||||
SO_PEERGROUPS = 0x3b
|
SO_PEERGROUPS = 0x3b
|
||||||
|
SO_PEERPIDFD = 0x4d
|
||||||
SO_PEERSEC = 0x1f
|
SO_PEERSEC = 0x1f
|
||||||
SO_PREFER_BUSY_POLL = 0x45
|
SO_PREFER_BUSY_POLL = 0x45
|
||||||
SO_PROTOCOL = 0x26
|
SO_PROTOCOL = 0x26
|
||||||
|
|
|
||||||
|
|
@ -389,10 +389,12 @@ const (
|
||||||
SO_NOFCS = 0x2b
|
SO_NOFCS = 0x2b
|
||||||
SO_OOBINLINE = 0xa
|
SO_OOBINLINE = 0xa
|
||||||
SO_PASSCRED = 0x10
|
SO_PASSCRED = 0x10
|
||||||
|
SO_PASSPIDFD = 0x4c
|
||||||
SO_PASSSEC = 0x22
|
SO_PASSSEC = 0x22
|
||||||
SO_PEEK_OFF = 0x2a
|
SO_PEEK_OFF = 0x2a
|
||||||
SO_PEERCRED = 0x11
|
SO_PEERCRED = 0x11
|
||||||
SO_PEERGROUPS = 0x3b
|
SO_PEERGROUPS = 0x3b
|
||||||
|
SO_PEERPIDFD = 0x4d
|
||||||
SO_PEERSEC = 0x1f
|
SO_PEERSEC = 0x1f
|
||||||
SO_PREFER_BUSY_POLL = 0x45
|
SO_PREFER_BUSY_POLL = 0x45
|
||||||
SO_PROTOCOL = 0x26
|
SO_PROTOCOL = 0x26
|
||||||
|
|
|
||||||
|
|
@ -428,10 +428,12 @@ const (
|
||||||
SO_NOFCS = 0x27
|
SO_NOFCS = 0x27
|
||||||
SO_OOBINLINE = 0x100
|
SO_OOBINLINE = 0x100
|
||||||
SO_PASSCRED = 0x2
|
SO_PASSCRED = 0x2
|
||||||
|
SO_PASSPIDFD = 0x55
|
||||||
SO_PASSSEC = 0x1f
|
SO_PASSSEC = 0x1f
|
||||||
SO_PEEK_OFF = 0x26
|
SO_PEEK_OFF = 0x26
|
||||||
SO_PEERCRED = 0x40
|
SO_PEERCRED = 0x40
|
||||||
SO_PEERGROUPS = 0x3d
|
SO_PEERGROUPS = 0x3d
|
||||||
|
SO_PEERPIDFD = 0x56
|
||||||
SO_PEERSEC = 0x1e
|
SO_PEERSEC = 0x1e
|
||||||
SO_PREFER_BUSY_POLL = 0x48
|
SO_PREFER_BUSY_POLL = 0x48
|
||||||
SO_PROTOCOL = 0x1028
|
SO_PROTOCOL = 0x1028
|
||||||
|
|
|
||||||
|
|
@ -817,28 +817,6 @@ func write(fd int, p []byte) (n int, err error) {
|
||||||
|
|
||||||
// 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 readlen(fd int, p *byte, np int) (n int, err error) {
|
|
||||||
r0, er := C.read(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(p))), C.size_t(np))
|
|
||||||
n = int(r0)
|
|
||||||
if r0 == -1 && er != nil {
|
|
||||||
err = er
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func writelen(fd int, p *byte, np int) (n int, err error) {
|
|
||||||
r0, er := C.write(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(p))), C.size_t(np))
|
|
||||||
n = int(r0)
|
|
||||||
if r0 == -1 && er != nil {
|
|
||||||
err = er
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func Dup2(oldfd int, newfd int) (err error) {
|
func Dup2(oldfd int, newfd int) (err error) {
|
||||||
r0, er := C.dup2(C.int(oldfd), C.int(newfd))
|
r0, er := C.dup2(C.int(oldfd), C.int(newfd))
|
||||||
if r0 == -1 && er != nil {
|
if r0 == -1 && er != nil {
|
||||||
|
|
|
||||||
|
|
@ -762,28 +762,6 @@ func write(fd int, p []byte) (n int, err error) {
|
||||||
|
|
||||||
// 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 readlen(fd int, p *byte, np int) (n int, err error) {
|
|
||||||
r0, e1 := callread(fd, uintptr(unsafe.Pointer(p)), np)
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func writelen(fd int, p *byte, np int) (n int, err error) {
|
|
||||||
r0, e1 := callwrite(fd, uintptr(unsafe.Pointer(p)), np)
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func Dup2(oldfd int, newfd int) (err error) {
|
func Dup2(oldfd int, newfd int) (err error) {
|
||||||
_, e1 := calldup2(oldfd, newfd)
|
_, e1 := calldup2(oldfd, newfd)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
|
|
||||||
|
|
@ -725,6 +725,12 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var libc_ioctl_trampoline_addr uintptr
|
||||||
|
|
||||||
|
//go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib"
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {
|
func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {
|
||||||
_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))
|
_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
|
@ -733,10 +739,6 @@ func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var libc_ioctl_trampoline_addr uintptr
|
|
||||||
|
|
||||||
//go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib"
|
|
||||||
|
|
||||||
// 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 sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
||||||
|
|
@ -2410,28 +2412,6 @@ 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// 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 {
|
||||||
|
|
@ -2521,14 +2501,6 @@ func ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func ptrace1Ptr(request int, pid int, addr uintptr, data unsafe.Pointer) (err error) {
|
|
||||||
_, _, e1 := syscall_syscall6(libc_ptrace_trampoline_addr, uintptr(request), uintptr(pid), addr, uintptr(data), 0, 0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
var libc_ptrace_trampoline_addr uintptr
|
var libc_ptrace_trampoline_addr uintptr
|
||||||
|
|
||||||
//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib"
|
//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib"
|
||||||
|
|
|
||||||
|
|
@ -5,703 +5,586 @@
|
||||||
|
|
||||||
TEXT libc_fdopendir_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fdopendir_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fdopendir(SB)
|
JMP libc_fdopendir(SB)
|
||||||
|
|
||||||
GLOBL ·libc_fdopendir_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fdopendir_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_fdopendir_trampoline_addr(SB)/8, $libc_fdopendir_trampoline<>(SB)
|
DATA ·libc_fdopendir_trampoline_addr(SB)/8, $libc_fdopendir_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getgroups(SB)
|
JMP libc_getgroups(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)
|
DATA ·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_setgroups(SB)
|
JMP libc_setgroups(SB)
|
||||||
|
|
||||||
GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)
|
DATA ·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_wait4(SB)
|
JMP libc_wait4(SB)
|
||||||
|
|
||||||
GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)
|
DATA ·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_accept(SB)
|
JMP libc_accept(SB)
|
||||||
|
|
||||||
GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)
|
DATA ·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_bind(SB)
|
JMP libc_bind(SB)
|
||||||
|
|
||||||
GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)
|
DATA ·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_connect(SB)
|
JMP libc_connect(SB)
|
||||||
|
|
||||||
GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)
|
DATA ·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_socket(SB)
|
JMP libc_socket(SB)
|
||||||
|
|
||||||
GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)
|
DATA ·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getsockopt(SB)
|
JMP libc_getsockopt(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)
|
DATA ·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_setsockopt(SB)
|
JMP libc_setsockopt(SB)
|
||||||
|
|
||||||
GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)
|
DATA ·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getpeername(SB)
|
JMP libc_getpeername(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)
|
DATA ·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getsockname(SB)
|
JMP libc_getsockname(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)
|
DATA ·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_shutdown(SB)
|
JMP libc_shutdown(SB)
|
||||||
|
|
||||||
GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)
|
DATA ·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_socketpair(SB)
|
JMP libc_socketpair(SB)
|
||||||
|
|
||||||
GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)
|
DATA ·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_recvfrom(SB)
|
JMP libc_recvfrom(SB)
|
||||||
|
|
||||||
GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)
|
DATA ·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_sendto(SB)
|
JMP libc_sendto(SB)
|
||||||
|
|
||||||
GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)
|
DATA ·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_recvmsg(SB)
|
JMP libc_recvmsg(SB)
|
||||||
|
|
||||||
GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)
|
DATA ·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_sendmsg(SB)
|
JMP libc_sendmsg(SB)
|
||||||
|
|
||||||
GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)
|
DATA ·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_kevent(SB)
|
JMP libc_kevent(SB)
|
||||||
|
|
||||||
GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)
|
DATA ·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_utimes(SB)
|
JMP libc_utimes(SB)
|
||||||
|
|
||||||
GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)
|
DATA ·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_futimes(SB)
|
JMP libc_futimes(SB)
|
||||||
|
|
||||||
GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)
|
DATA ·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_poll(SB)
|
JMP libc_poll(SB)
|
||||||
|
|
||||||
GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)
|
DATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_madvise(SB)
|
JMP libc_madvise(SB)
|
||||||
|
|
||||||
GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)
|
DATA ·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_mlock(SB)
|
JMP libc_mlock(SB)
|
||||||
|
|
||||||
GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)
|
DATA ·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_mlockall(SB)
|
JMP libc_mlockall(SB)
|
||||||
|
|
||||||
GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)
|
DATA ·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_mprotect(SB)
|
JMP libc_mprotect(SB)
|
||||||
|
|
||||||
GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)
|
DATA ·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_msync(SB)
|
JMP libc_msync(SB)
|
||||||
|
|
||||||
GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)
|
DATA ·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_munlock(SB)
|
JMP libc_munlock(SB)
|
||||||
|
|
||||||
GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)
|
DATA ·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_munlockall(SB)
|
JMP libc_munlockall(SB)
|
||||||
|
|
||||||
GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)
|
DATA ·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_closedir_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_closedir_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_closedir(SB)
|
JMP libc_closedir(SB)
|
||||||
|
|
||||||
GLOBL ·libc_closedir_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_closedir_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_closedir_trampoline_addr(SB)/8, $libc_closedir_trampoline<>(SB)
|
DATA ·libc_closedir_trampoline_addr(SB)/8, $libc_closedir_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_readdir_r_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_readdir_r_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_readdir_r(SB)
|
JMP libc_readdir_r(SB)
|
||||||
|
|
||||||
GLOBL ·libc_readdir_r_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_readdir_r_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_readdir_r_trampoline_addr(SB)/8, $libc_readdir_r_trampoline<>(SB)
|
DATA ·libc_readdir_r_trampoline_addr(SB)/8, $libc_readdir_r_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_pipe_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_pipe_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_pipe(SB)
|
JMP libc_pipe(SB)
|
||||||
|
|
||||||
GLOBL ·libc_pipe_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_pipe_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_pipe_trampoline_addr(SB)/8, $libc_pipe_trampoline<>(SB)
|
DATA ·libc_pipe_trampoline_addr(SB)/8, $libc_pipe_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getxattr_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getxattr_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getxattr(SB)
|
JMP libc_getxattr(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getxattr_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getxattr_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getxattr_trampoline_addr(SB)/8, $libc_getxattr_trampoline<>(SB)
|
DATA ·libc_getxattr_trampoline_addr(SB)/8, $libc_getxattr_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_fgetxattr_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fgetxattr_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fgetxattr(SB)
|
JMP libc_fgetxattr(SB)
|
||||||
|
|
||||||
GLOBL ·libc_fgetxattr_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fgetxattr_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_fgetxattr_trampoline_addr(SB)/8, $libc_fgetxattr_trampoline<>(SB)
|
DATA ·libc_fgetxattr_trampoline_addr(SB)/8, $libc_fgetxattr_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_setxattr_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_setxattr_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_setxattr(SB)
|
JMP libc_setxattr(SB)
|
||||||
|
|
||||||
GLOBL ·libc_setxattr_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_setxattr_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_setxattr_trampoline_addr(SB)/8, $libc_setxattr_trampoline<>(SB)
|
DATA ·libc_setxattr_trampoline_addr(SB)/8, $libc_setxattr_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_fsetxattr_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fsetxattr_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fsetxattr(SB)
|
JMP libc_fsetxattr(SB)
|
||||||
|
|
||||||
GLOBL ·libc_fsetxattr_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fsetxattr_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_fsetxattr_trampoline_addr(SB)/8, $libc_fsetxattr_trampoline<>(SB)
|
DATA ·libc_fsetxattr_trampoline_addr(SB)/8, $libc_fsetxattr_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_removexattr_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_removexattr_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_removexattr(SB)
|
JMP libc_removexattr(SB)
|
||||||
|
|
||||||
GLOBL ·libc_removexattr_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_removexattr_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_removexattr_trampoline_addr(SB)/8, $libc_removexattr_trampoline<>(SB)
|
DATA ·libc_removexattr_trampoline_addr(SB)/8, $libc_removexattr_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_fremovexattr_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fremovexattr_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fremovexattr(SB)
|
JMP libc_fremovexattr(SB)
|
||||||
|
|
||||||
GLOBL ·libc_fremovexattr_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fremovexattr_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_fremovexattr_trampoline_addr(SB)/8, $libc_fremovexattr_trampoline<>(SB)
|
DATA ·libc_fremovexattr_trampoline_addr(SB)/8, $libc_fremovexattr_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_listxattr_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_listxattr_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_listxattr(SB)
|
JMP libc_listxattr(SB)
|
||||||
|
|
||||||
GLOBL ·libc_listxattr_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_listxattr_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_listxattr_trampoline_addr(SB)/8, $libc_listxattr_trampoline<>(SB)
|
DATA ·libc_listxattr_trampoline_addr(SB)/8, $libc_listxattr_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_flistxattr_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_flistxattr_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_flistxattr(SB)
|
JMP libc_flistxattr(SB)
|
||||||
|
|
||||||
GLOBL ·libc_flistxattr_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_flistxattr_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_flistxattr_trampoline_addr(SB)/8, $libc_flistxattr_trampoline<>(SB)
|
DATA ·libc_flistxattr_trampoline_addr(SB)/8, $libc_flistxattr_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_utimensat(SB)
|
JMP libc_utimensat(SB)
|
||||||
|
|
||||||
GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)
|
DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fcntl(SB)
|
JMP libc_fcntl(SB)
|
||||||
|
|
||||||
GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)
|
DATA ·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_kill(SB)
|
JMP libc_kill(SB)
|
||||||
|
|
||||||
GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)
|
DATA ·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_ioctl(SB)
|
JMP libc_ioctl(SB)
|
||||||
|
|
||||||
GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)
|
DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_sysctl(SB)
|
JMP libc_sysctl(SB)
|
||||||
|
|
||||||
GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)
|
DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_sendfile_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_sendfile_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_sendfile(SB)
|
JMP libc_sendfile(SB)
|
||||||
|
|
||||||
GLOBL ·libc_sendfile_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_sendfile_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_sendfile_trampoline_addr(SB)/8, $libc_sendfile_trampoline<>(SB)
|
DATA ·libc_sendfile_trampoline_addr(SB)/8, $libc_sendfile_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_shmat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_shmat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_shmat(SB)
|
JMP libc_shmat(SB)
|
||||||
|
|
||||||
GLOBL ·libc_shmat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_shmat_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_shmat_trampoline_addr(SB)/8, $libc_shmat_trampoline<>(SB)
|
DATA ·libc_shmat_trampoline_addr(SB)/8, $libc_shmat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_shmctl_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_shmctl_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_shmctl(SB)
|
JMP libc_shmctl(SB)
|
||||||
|
|
||||||
GLOBL ·libc_shmctl_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_shmctl_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_shmctl_trampoline_addr(SB)/8, $libc_shmctl_trampoline<>(SB)
|
DATA ·libc_shmctl_trampoline_addr(SB)/8, $libc_shmctl_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_shmdt_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_shmdt_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_shmdt(SB)
|
JMP libc_shmdt(SB)
|
||||||
|
|
||||||
GLOBL ·libc_shmdt_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_shmdt_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_shmdt_trampoline_addr(SB)/8, $libc_shmdt_trampoline<>(SB)
|
DATA ·libc_shmdt_trampoline_addr(SB)/8, $libc_shmdt_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_shmget_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_shmget_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_shmget(SB)
|
JMP libc_shmget(SB)
|
||||||
|
|
||||||
GLOBL ·libc_shmget_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_shmget_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_shmget_trampoline_addr(SB)/8, $libc_shmget_trampoline<>(SB)
|
DATA ·libc_shmget_trampoline_addr(SB)/8, $libc_shmget_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_access(SB)
|
JMP libc_access(SB)
|
||||||
|
|
||||||
GLOBL ·libc_access_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_access_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)
|
DATA ·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_adjtime(SB)
|
JMP libc_adjtime(SB)
|
||||||
|
|
||||||
GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)
|
DATA ·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_chdir(SB)
|
JMP libc_chdir(SB)
|
||||||
|
|
||||||
GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)
|
DATA ·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_chflags(SB)
|
JMP libc_chflags(SB)
|
||||||
|
|
||||||
GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)
|
DATA ·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_chmod(SB)
|
JMP libc_chmod(SB)
|
||||||
|
|
||||||
GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)
|
DATA ·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_chown(SB)
|
JMP libc_chown(SB)
|
||||||
|
|
||||||
GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)
|
DATA ·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_chroot(SB)
|
JMP libc_chroot(SB)
|
||||||
|
|
||||||
GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)
|
DATA ·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_clock_gettime(SB)
|
JMP libc_clock_gettime(SB)
|
||||||
|
|
||||||
GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)
|
DATA ·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_close(SB)
|
JMP libc_close(SB)
|
||||||
|
|
||||||
GLOBL ·libc_close_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_close_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)
|
DATA ·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_clonefile_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_clonefile_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_clonefile(SB)
|
JMP libc_clonefile(SB)
|
||||||
|
|
||||||
GLOBL ·libc_clonefile_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_clonefile_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_clonefile_trampoline_addr(SB)/8, $libc_clonefile_trampoline<>(SB)
|
DATA ·libc_clonefile_trampoline_addr(SB)/8, $libc_clonefile_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_clonefileat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_clonefileat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_clonefileat(SB)
|
JMP libc_clonefileat(SB)
|
||||||
|
|
||||||
GLOBL ·libc_clonefileat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_clonefileat_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_clonefileat_trampoline_addr(SB)/8, $libc_clonefileat_trampoline<>(SB)
|
DATA ·libc_clonefileat_trampoline_addr(SB)/8, $libc_clonefileat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_dup(SB)
|
JMP libc_dup(SB)
|
||||||
|
|
||||||
GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)
|
DATA ·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_dup2(SB)
|
JMP libc_dup2(SB)
|
||||||
|
|
||||||
GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)
|
DATA ·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_exchangedata_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_exchangedata_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_exchangedata(SB)
|
JMP libc_exchangedata(SB)
|
||||||
|
|
||||||
GLOBL ·libc_exchangedata_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_exchangedata_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_exchangedata_trampoline_addr(SB)/8, $libc_exchangedata_trampoline<>(SB)
|
DATA ·libc_exchangedata_trampoline_addr(SB)/8, $libc_exchangedata_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_exit(SB)
|
JMP libc_exit(SB)
|
||||||
|
|
||||||
GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)
|
DATA ·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_faccessat(SB)
|
JMP libc_faccessat(SB)
|
||||||
|
|
||||||
GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)
|
DATA ·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fchdir(SB)
|
JMP libc_fchdir(SB)
|
||||||
|
|
||||||
GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)
|
DATA ·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fchflags(SB)
|
JMP libc_fchflags(SB)
|
||||||
|
|
||||||
GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)
|
DATA ·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fchmod(SB)
|
JMP libc_fchmod(SB)
|
||||||
|
|
||||||
GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)
|
DATA ·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fchmodat(SB)
|
JMP libc_fchmodat(SB)
|
||||||
|
|
||||||
GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)
|
DATA ·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fchown(SB)
|
JMP libc_fchown(SB)
|
||||||
|
|
||||||
GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)
|
DATA ·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fchownat(SB)
|
JMP libc_fchownat(SB)
|
||||||
|
|
||||||
GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)
|
DATA ·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_fclonefileat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fclonefileat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fclonefileat(SB)
|
JMP libc_fclonefileat(SB)
|
||||||
|
|
||||||
GLOBL ·libc_fclonefileat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fclonefileat_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_fclonefileat_trampoline_addr(SB)/8, $libc_fclonefileat_trampoline<>(SB)
|
DATA ·libc_fclonefileat_trampoline_addr(SB)/8, $libc_fclonefileat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_flock(SB)
|
JMP libc_flock(SB)
|
||||||
|
|
||||||
GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)
|
DATA ·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fpathconf(SB)
|
JMP libc_fpathconf(SB)
|
||||||
|
|
||||||
GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)
|
DATA ·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fsync(SB)
|
JMP libc_fsync(SB)
|
||||||
|
|
||||||
GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)
|
DATA ·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_ftruncate(SB)
|
JMP libc_ftruncate(SB)
|
||||||
|
|
||||||
GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)
|
DATA ·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getcwd(SB)
|
JMP libc_getcwd(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)
|
DATA ·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getdtablesize_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getdtablesize_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getdtablesize(SB)
|
JMP libc_getdtablesize(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getdtablesize_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getdtablesize_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getdtablesize_trampoline_addr(SB)/8, $libc_getdtablesize_trampoline<>(SB)
|
DATA ·libc_getdtablesize_trampoline_addr(SB)/8, $libc_getdtablesize_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getegid(SB)
|
JMP libc_getegid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)
|
DATA ·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_geteuid(SB)
|
JMP libc_geteuid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)
|
DATA ·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getgid(SB)
|
JMP libc_getgid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)
|
DATA ·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getpgid(SB)
|
JMP libc_getpgid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)
|
DATA ·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getpgrp(SB)
|
JMP libc_getpgrp(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)
|
DATA ·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getpid(SB)
|
JMP libc_getpid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)
|
DATA ·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getppid(SB)
|
JMP libc_getppid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)
|
DATA ·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getpriority(SB)
|
JMP libc_getpriority(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)
|
DATA ·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getrlimit(SB)
|
JMP libc_getrlimit(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)
|
DATA ·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getrusage(SB)
|
JMP libc_getrusage(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)
|
DATA ·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getsid(SB)
|
JMP libc_getsid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)
|
DATA ·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_gettimeofday(SB)
|
JMP libc_gettimeofday(SB)
|
||||||
|
|
||||||
GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)
|
DATA ·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getuid(SB)
|
JMP libc_getuid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)
|
DATA ·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_issetugid(SB)
|
JMP libc_issetugid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)
|
DATA ·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_kqueue(SB)
|
JMP libc_kqueue(SB)
|
||||||
|
|
||||||
GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)
|
DATA ·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_lchown(SB)
|
JMP libc_lchown(SB)
|
||||||
|
|
||||||
GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)
|
DATA ·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_link(SB)
|
JMP libc_link(SB)
|
||||||
|
|
||||||
GLOBL ·libc_link_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_link_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)
|
DATA ·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_linkat(SB)
|
JMP libc_linkat(SB)
|
||||||
|
|
||||||
GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)
|
DATA ·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_listen(SB)
|
JMP libc_listen(SB)
|
||||||
|
|
||||||
GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)
|
DATA ·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_mkdir(SB)
|
JMP libc_mkdir(SB)
|
||||||
|
|
||||||
GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)
|
DATA ·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_mkdirat(SB)
|
JMP libc_mkdirat(SB)
|
||||||
|
|
||||||
GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)
|
DATA ·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_mkfifo(SB)
|
JMP libc_mkfifo(SB)
|
||||||
|
|
||||||
GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)
|
DATA ·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_mknod(SB)
|
JMP libc_mknod(SB)
|
||||||
|
|
||||||
GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)
|
DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_mount(SB)
|
JMP libc_mount(SB)
|
||||||
|
|
||||||
GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB)
|
DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_open(SB)
|
JMP libc_open(SB)
|
||||||
|
|
||||||
GLOBL ·libc_open_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_open_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)
|
DATA ·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_openat(SB)
|
JMP libc_openat(SB)
|
||||||
|
|
||||||
GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)
|
DATA ·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_pathconf(SB)
|
JMP libc_pathconf(SB)
|
||||||
|
|
||||||
GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)
|
DATA ·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_pread(SB)
|
JMP libc_pread(SB)
|
||||||
|
|
||||||
GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)
|
DATA ·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_pwrite(SB)
|
JMP libc_pwrite(SB)
|
||||||
|
|
||||||
GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)
|
DATA ·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_read(SB)
|
JMP libc_read(SB)
|
||||||
|
|
||||||
GLOBL ·libc_read_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_read_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)
|
DATA ·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_readlink(SB)
|
JMP libc_readlink(SB)
|
||||||
|
|
||||||
GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)
|
DATA ·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_readlinkat(SB)
|
JMP libc_readlinkat(SB)
|
||||||
|
|
||||||
GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)
|
DATA ·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_rename(SB)
|
JMP libc_rename(SB)
|
||||||
|
|
||||||
GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)
|
DATA ·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_renameat(SB)
|
JMP libc_renameat(SB)
|
||||||
|
|
||||||
GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)
|
DATA ·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_revoke(SB)
|
JMP libc_revoke(SB)
|
||||||
|
|
||||||
GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)
|
DATA ·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_rmdir(SB)
|
JMP libc_rmdir(SB)
|
||||||
|
|
||||||
GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)
|
DATA ·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_lseek(SB)
|
JMP libc_lseek(SB)
|
||||||
|
|
||||||
GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)
|
DATA ·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_select(SB)
|
JMP libc_select(SB)
|
||||||
|
|
||||||
GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)
|
DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)
|
||||||
|
|
||||||
|
|
@ -712,192 +595,160 @@ DATA ·libc_setattrlist_trampoline_addr(SB)/8, $libc_setattrlist_trampoline<>(SB
|
||||||
|
|
||||||
TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_setegid(SB)
|
JMP libc_setegid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)
|
DATA ·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_seteuid(SB)
|
JMP libc_seteuid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)
|
DATA ·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_setgid(SB)
|
JMP libc_setgid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)
|
DATA ·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_setlogin(SB)
|
JMP libc_setlogin(SB)
|
||||||
|
|
||||||
GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)
|
DATA ·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_setpgid(SB)
|
JMP libc_setpgid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)
|
DATA ·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_setpriority(SB)
|
JMP libc_setpriority(SB)
|
||||||
|
|
||||||
GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)
|
DATA ·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_setprivexec_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_setprivexec_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_setprivexec(SB)
|
JMP libc_setprivexec(SB)
|
||||||
|
|
||||||
GLOBL ·libc_setprivexec_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_setprivexec_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_setprivexec_trampoline_addr(SB)/8, $libc_setprivexec_trampoline<>(SB)
|
DATA ·libc_setprivexec_trampoline_addr(SB)/8, $libc_setprivexec_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_setregid(SB)
|
JMP libc_setregid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)
|
DATA ·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_setreuid(SB)
|
JMP libc_setreuid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)
|
DATA ·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_setsid(SB)
|
JMP libc_setsid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)
|
DATA ·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_settimeofday(SB)
|
JMP libc_settimeofday(SB)
|
||||||
|
|
||||||
GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)
|
DATA ·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_setuid(SB)
|
JMP libc_setuid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)
|
DATA ·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_symlink(SB)
|
JMP libc_symlink(SB)
|
||||||
|
|
||||||
GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)
|
DATA ·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_symlinkat(SB)
|
JMP libc_symlinkat(SB)
|
||||||
|
|
||||||
GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)
|
DATA ·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_sync(SB)
|
JMP libc_sync(SB)
|
||||||
|
|
||||||
GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)
|
DATA ·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_truncate(SB)
|
JMP libc_truncate(SB)
|
||||||
|
|
||||||
GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)
|
DATA ·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_umask(SB)
|
JMP libc_umask(SB)
|
||||||
|
|
||||||
GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)
|
DATA ·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_undelete_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_undelete_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_undelete(SB)
|
JMP libc_undelete(SB)
|
||||||
|
|
||||||
GLOBL ·libc_undelete_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_undelete_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_undelete_trampoline_addr(SB)/8, $libc_undelete_trampoline<>(SB)
|
DATA ·libc_undelete_trampoline_addr(SB)/8, $libc_undelete_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_unlink(SB)
|
JMP libc_unlink(SB)
|
||||||
|
|
||||||
GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)
|
DATA ·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_unlinkat(SB)
|
JMP libc_unlinkat(SB)
|
||||||
|
|
||||||
GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)
|
DATA ·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_unmount(SB)
|
JMP libc_unmount(SB)
|
||||||
|
|
||||||
GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)
|
DATA ·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_write(SB)
|
JMP libc_write(SB)
|
||||||
|
|
||||||
GLOBL ·libc_write_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_write_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)
|
DATA ·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_mmap(SB)
|
JMP libc_mmap(SB)
|
||||||
|
|
||||||
GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)
|
DATA ·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_munmap(SB)
|
JMP libc_munmap(SB)
|
||||||
|
|
||||||
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_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
|
||||||
DATA ·libc_fstat64_trampoline_addr(SB)/8, $libc_fstat64_trampoline<>(SB)
|
DATA ·libc_fstat64_trampoline_addr(SB)/8, $libc_fstat64_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_fstatat64_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fstatat64_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fstatat64(SB)
|
JMP libc_fstatat64(SB)
|
||||||
|
|
||||||
GLOBL ·libc_fstatat64_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fstatat64_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_fstatat64_trampoline_addr(SB)/8, $libc_fstatat64_trampoline<>(SB)
|
DATA ·libc_fstatat64_trampoline_addr(SB)/8, $libc_fstatat64_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_fstatfs64_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fstatfs64_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fstatfs64(SB)
|
JMP libc_fstatfs64(SB)
|
||||||
|
|
||||||
GLOBL ·libc_fstatfs64_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fstatfs64_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_fstatfs64_trampoline_addr(SB)/8, $libc_fstatfs64_trampoline<>(SB)
|
DATA ·libc_fstatfs64_trampoline_addr(SB)/8, $libc_fstatfs64_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getfsstat64_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getfsstat64_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getfsstat64(SB)
|
JMP libc_getfsstat64(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getfsstat64_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getfsstat64_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getfsstat64_trampoline_addr(SB)/8, $libc_getfsstat64_trampoline<>(SB)
|
DATA ·libc_getfsstat64_trampoline_addr(SB)/8, $libc_getfsstat64_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_lstat64_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_lstat64_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_lstat64(SB)
|
JMP libc_lstat64(SB)
|
||||||
|
|
||||||
GLOBL ·libc_lstat64_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_lstat64_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_lstat64_trampoline_addr(SB)/8, $libc_lstat64_trampoline<>(SB)
|
DATA ·libc_lstat64_trampoline_addr(SB)/8, $libc_lstat64_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_ptrace_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_ptrace_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_ptrace(SB)
|
JMP libc_ptrace(SB)
|
||||||
|
|
||||||
GLOBL ·libc_ptrace_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_ptrace_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_ptrace_trampoline_addr(SB)/8, $libc_ptrace_trampoline<>(SB)
|
DATA ·libc_ptrace_trampoline_addr(SB)/8, $libc_ptrace_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_stat64_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_stat64_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_stat64(SB)
|
JMP libc_stat64(SB)
|
||||||
|
|
||||||
GLOBL ·libc_stat64_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_stat64_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_stat64_trampoline_addr(SB)/8, $libc_stat64_trampoline<>(SB)
|
DATA ·libc_stat64_trampoline_addr(SB)/8, $libc_stat64_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_statfs64_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_statfs64_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_statfs64(SB)
|
JMP libc_statfs64(SB)
|
||||||
|
|
||||||
GLOBL ·libc_statfs64_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_statfs64_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_statfs64_trampoline_addr(SB)/8, $libc_statfs64_trampoline<>(SB)
|
DATA ·libc_statfs64_trampoline_addr(SB)/8, $libc_statfs64_trampoline<>(SB)
|
||||||
|
|
|
||||||
|
|
@ -725,6 +725,12 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var libc_ioctl_trampoline_addr uintptr
|
||||||
|
|
||||||
|
//go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib"
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {
|
func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {
|
||||||
_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))
|
_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
|
@ -733,10 +739,6 @@ func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var libc_ioctl_trampoline_addr uintptr
|
|
||||||
|
|
||||||
//go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib"
|
|
||||||
|
|
||||||
// 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 sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
||||||
|
|
@ -2410,28 +2412,6 @@ 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// 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 {
|
||||||
|
|
@ -2521,14 +2501,6 @@ func ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func ptrace1Ptr(request int, pid int, addr uintptr, data unsafe.Pointer) (err error) {
|
|
||||||
_, _, e1 := syscall_syscall6(libc_ptrace_trampoline_addr, uintptr(request), uintptr(pid), addr, uintptr(data), 0, 0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
var libc_ptrace_trampoline_addr uintptr
|
var libc_ptrace_trampoline_addr uintptr
|
||||||
|
|
||||||
//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib"
|
//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib"
|
||||||
|
|
|
||||||
|
|
@ -5,703 +5,586 @@
|
||||||
|
|
||||||
TEXT libc_fdopendir_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fdopendir_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fdopendir(SB)
|
JMP libc_fdopendir(SB)
|
||||||
|
|
||||||
GLOBL ·libc_fdopendir_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fdopendir_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_fdopendir_trampoline_addr(SB)/8, $libc_fdopendir_trampoline<>(SB)
|
DATA ·libc_fdopendir_trampoline_addr(SB)/8, $libc_fdopendir_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getgroups(SB)
|
JMP libc_getgroups(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getgroups_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)
|
DATA ·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_setgroups(SB)
|
JMP libc_setgroups(SB)
|
||||||
|
|
||||||
GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_setgroups_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)
|
DATA ·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_wait4(SB)
|
JMP libc_wait4(SB)
|
||||||
|
|
||||||
GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_wait4_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)
|
DATA ·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_accept(SB)
|
JMP libc_accept(SB)
|
||||||
|
|
||||||
GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_accept_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)
|
DATA ·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_bind(SB)
|
JMP libc_bind(SB)
|
||||||
|
|
||||||
GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_bind_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)
|
DATA ·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_connect(SB)
|
JMP libc_connect(SB)
|
||||||
|
|
||||||
GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_connect_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)
|
DATA ·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_socket(SB)
|
JMP libc_socket(SB)
|
||||||
|
|
||||||
GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_socket_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)
|
DATA ·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getsockopt(SB)
|
JMP libc_getsockopt(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getsockopt_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)
|
DATA ·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_setsockopt(SB)
|
JMP libc_setsockopt(SB)
|
||||||
|
|
||||||
GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_setsockopt_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)
|
DATA ·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getpeername(SB)
|
JMP libc_getpeername(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getpeername_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)
|
DATA ·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getsockname(SB)
|
JMP libc_getsockname(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getsockname_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)
|
DATA ·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_shutdown(SB)
|
JMP libc_shutdown(SB)
|
||||||
|
|
||||||
GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_shutdown_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)
|
DATA ·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_socketpair(SB)
|
JMP libc_socketpair(SB)
|
||||||
|
|
||||||
GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_socketpair_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)
|
DATA ·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_recvfrom(SB)
|
JMP libc_recvfrom(SB)
|
||||||
|
|
||||||
GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_recvfrom_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)
|
DATA ·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_sendto(SB)
|
JMP libc_sendto(SB)
|
||||||
|
|
||||||
GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_sendto_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)
|
DATA ·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_recvmsg(SB)
|
JMP libc_recvmsg(SB)
|
||||||
|
|
||||||
GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_recvmsg_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)
|
DATA ·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_sendmsg(SB)
|
JMP libc_sendmsg(SB)
|
||||||
|
|
||||||
GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_sendmsg_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)
|
DATA ·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_kevent(SB)
|
JMP libc_kevent(SB)
|
||||||
|
|
||||||
GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_kevent_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)
|
DATA ·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_utimes(SB)
|
JMP libc_utimes(SB)
|
||||||
|
|
||||||
GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_utimes_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)
|
DATA ·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_futimes(SB)
|
JMP libc_futimes(SB)
|
||||||
|
|
||||||
GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_futimes_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)
|
DATA ·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_poll(SB)
|
JMP libc_poll(SB)
|
||||||
|
|
||||||
GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)
|
DATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_madvise(SB)
|
JMP libc_madvise(SB)
|
||||||
|
|
||||||
GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_madvise_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)
|
DATA ·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_mlock(SB)
|
JMP libc_mlock(SB)
|
||||||
|
|
||||||
GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_mlock_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)
|
DATA ·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_mlockall(SB)
|
JMP libc_mlockall(SB)
|
||||||
|
|
||||||
GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_mlockall_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)
|
DATA ·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_mprotect(SB)
|
JMP libc_mprotect(SB)
|
||||||
|
|
||||||
GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_mprotect_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)
|
DATA ·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_msync(SB)
|
JMP libc_msync(SB)
|
||||||
|
|
||||||
GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_msync_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)
|
DATA ·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_munlock(SB)
|
JMP libc_munlock(SB)
|
||||||
|
|
||||||
GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_munlock_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)
|
DATA ·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_munlockall(SB)
|
JMP libc_munlockall(SB)
|
||||||
|
|
||||||
GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_munlockall_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)
|
DATA ·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_closedir_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_closedir_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_closedir(SB)
|
JMP libc_closedir(SB)
|
||||||
|
|
||||||
GLOBL ·libc_closedir_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_closedir_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_closedir_trampoline_addr(SB)/8, $libc_closedir_trampoline<>(SB)
|
DATA ·libc_closedir_trampoline_addr(SB)/8, $libc_closedir_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_readdir_r_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_readdir_r_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_readdir_r(SB)
|
JMP libc_readdir_r(SB)
|
||||||
|
|
||||||
GLOBL ·libc_readdir_r_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_readdir_r_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_readdir_r_trampoline_addr(SB)/8, $libc_readdir_r_trampoline<>(SB)
|
DATA ·libc_readdir_r_trampoline_addr(SB)/8, $libc_readdir_r_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_pipe_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_pipe_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_pipe(SB)
|
JMP libc_pipe(SB)
|
||||||
|
|
||||||
GLOBL ·libc_pipe_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_pipe_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_pipe_trampoline_addr(SB)/8, $libc_pipe_trampoline<>(SB)
|
DATA ·libc_pipe_trampoline_addr(SB)/8, $libc_pipe_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getxattr_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getxattr_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getxattr(SB)
|
JMP libc_getxattr(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getxattr_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getxattr_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getxattr_trampoline_addr(SB)/8, $libc_getxattr_trampoline<>(SB)
|
DATA ·libc_getxattr_trampoline_addr(SB)/8, $libc_getxattr_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_fgetxattr_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fgetxattr_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fgetxattr(SB)
|
JMP libc_fgetxattr(SB)
|
||||||
|
|
||||||
GLOBL ·libc_fgetxattr_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fgetxattr_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_fgetxattr_trampoline_addr(SB)/8, $libc_fgetxattr_trampoline<>(SB)
|
DATA ·libc_fgetxattr_trampoline_addr(SB)/8, $libc_fgetxattr_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_setxattr_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_setxattr_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_setxattr(SB)
|
JMP libc_setxattr(SB)
|
||||||
|
|
||||||
GLOBL ·libc_setxattr_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_setxattr_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_setxattr_trampoline_addr(SB)/8, $libc_setxattr_trampoline<>(SB)
|
DATA ·libc_setxattr_trampoline_addr(SB)/8, $libc_setxattr_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_fsetxattr_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fsetxattr_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fsetxattr(SB)
|
JMP libc_fsetxattr(SB)
|
||||||
|
|
||||||
GLOBL ·libc_fsetxattr_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fsetxattr_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_fsetxattr_trampoline_addr(SB)/8, $libc_fsetxattr_trampoline<>(SB)
|
DATA ·libc_fsetxattr_trampoline_addr(SB)/8, $libc_fsetxattr_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_removexattr_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_removexattr_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_removexattr(SB)
|
JMP libc_removexattr(SB)
|
||||||
|
|
||||||
GLOBL ·libc_removexattr_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_removexattr_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_removexattr_trampoline_addr(SB)/8, $libc_removexattr_trampoline<>(SB)
|
DATA ·libc_removexattr_trampoline_addr(SB)/8, $libc_removexattr_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_fremovexattr_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fremovexattr_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fremovexattr(SB)
|
JMP libc_fremovexattr(SB)
|
||||||
|
|
||||||
GLOBL ·libc_fremovexattr_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fremovexattr_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_fremovexattr_trampoline_addr(SB)/8, $libc_fremovexattr_trampoline<>(SB)
|
DATA ·libc_fremovexattr_trampoline_addr(SB)/8, $libc_fremovexattr_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_listxattr_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_listxattr_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_listxattr(SB)
|
JMP libc_listxattr(SB)
|
||||||
|
|
||||||
GLOBL ·libc_listxattr_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_listxattr_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_listxattr_trampoline_addr(SB)/8, $libc_listxattr_trampoline<>(SB)
|
DATA ·libc_listxattr_trampoline_addr(SB)/8, $libc_listxattr_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_flistxattr_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_flistxattr_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_flistxattr(SB)
|
JMP libc_flistxattr(SB)
|
||||||
|
|
||||||
GLOBL ·libc_flistxattr_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_flistxattr_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_flistxattr_trampoline_addr(SB)/8, $libc_flistxattr_trampoline<>(SB)
|
DATA ·libc_flistxattr_trampoline_addr(SB)/8, $libc_flistxattr_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_utimensat(SB)
|
JMP libc_utimensat(SB)
|
||||||
|
|
||||||
GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_utimensat_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)
|
DATA ·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fcntl(SB)
|
JMP libc_fcntl(SB)
|
||||||
|
|
||||||
GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fcntl_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)
|
DATA ·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_kill(SB)
|
JMP libc_kill(SB)
|
||||||
|
|
||||||
GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_kill_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)
|
DATA ·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_ioctl(SB)
|
JMP libc_ioctl(SB)
|
||||||
|
|
||||||
GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)
|
DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_sysctl(SB)
|
JMP libc_sysctl(SB)
|
||||||
|
|
||||||
GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)
|
DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_sendfile_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_sendfile_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_sendfile(SB)
|
JMP libc_sendfile(SB)
|
||||||
|
|
||||||
GLOBL ·libc_sendfile_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_sendfile_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_sendfile_trampoline_addr(SB)/8, $libc_sendfile_trampoline<>(SB)
|
DATA ·libc_sendfile_trampoline_addr(SB)/8, $libc_sendfile_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_shmat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_shmat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_shmat(SB)
|
JMP libc_shmat(SB)
|
||||||
|
|
||||||
GLOBL ·libc_shmat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_shmat_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_shmat_trampoline_addr(SB)/8, $libc_shmat_trampoline<>(SB)
|
DATA ·libc_shmat_trampoline_addr(SB)/8, $libc_shmat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_shmctl_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_shmctl_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_shmctl(SB)
|
JMP libc_shmctl(SB)
|
||||||
|
|
||||||
GLOBL ·libc_shmctl_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_shmctl_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_shmctl_trampoline_addr(SB)/8, $libc_shmctl_trampoline<>(SB)
|
DATA ·libc_shmctl_trampoline_addr(SB)/8, $libc_shmctl_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_shmdt_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_shmdt_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_shmdt(SB)
|
JMP libc_shmdt(SB)
|
||||||
|
|
||||||
GLOBL ·libc_shmdt_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_shmdt_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_shmdt_trampoline_addr(SB)/8, $libc_shmdt_trampoline<>(SB)
|
DATA ·libc_shmdt_trampoline_addr(SB)/8, $libc_shmdt_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_shmget_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_shmget_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_shmget(SB)
|
JMP libc_shmget(SB)
|
||||||
|
|
||||||
GLOBL ·libc_shmget_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_shmget_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_shmget_trampoline_addr(SB)/8, $libc_shmget_trampoline<>(SB)
|
DATA ·libc_shmget_trampoline_addr(SB)/8, $libc_shmget_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_access(SB)
|
JMP libc_access(SB)
|
||||||
|
|
||||||
GLOBL ·libc_access_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_access_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)
|
DATA ·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_adjtime(SB)
|
JMP libc_adjtime(SB)
|
||||||
|
|
||||||
GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_adjtime_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)
|
DATA ·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_chdir(SB)
|
JMP libc_chdir(SB)
|
||||||
|
|
||||||
GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_chdir_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)
|
DATA ·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_chflags(SB)
|
JMP libc_chflags(SB)
|
||||||
|
|
||||||
GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_chflags_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)
|
DATA ·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_chmod(SB)
|
JMP libc_chmod(SB)
|
||||||
|
|
||||||
GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_chmod_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)
|
DATA ·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_chown(SB)
|
JMP libc_chown(SB)
|
||||||
|
|
||||||
GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_chown_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)
|
DATA ·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_chroot(SB)
|
JMP libc_chroot(SB)
|
||||||
|
|
||||||
GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_chroot_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)
|
DATA ·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_clock_gettime(SB)
|
JMP libc_clock_gettime(SB)
|
||||||
|
|
||||||
GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_clock_gettime_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)
|
DATA ·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_close(SB)
|
JMP libc_close(SB)
|
||||||
|
|
||||||
GLOBL ·libc_close_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_close_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)
|
DATA ·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_clonefile_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_clonefile_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_clonefile(SB)
|
JMP libc_clonefile(SB)
|
||||||
|
|
||||||
GLOBL ·libc_clonefile_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_clonefile_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_clonefile_trampoline_addr(SB)/8, $libc_clonefile_trampoline<>(SB)
|
DATA ·libc_clonefile_trampoline_addr(SB)/8, $libc_clonefile_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_clonefileat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_clonefileat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_clonefileat(SB)
|
JMP libc_clonefileat(SB)
|
||||||
|
|
||||||
GLOBL ·libc_clonefileat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_clonefileat_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_clonefileat_trampoline_addr(SB)/8, $libc_clonefileat_trampoline<>(SB)
|
DATA ·libc_clonefileat_trampoline_addr(SB)/8, $libc_clonefileat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_dup(SB)
|
JMP libc_dup(SB)
|
||||||
|
|
||||||
GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_dup_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)
|
DATA ·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_dup2(SB)
|
JMP libc_dup2(SB)
|
||||||
|
|
||||||
GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_dup2_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)
|
DATA ·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_exchangedata_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_exchangedata_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_exchangedata(SB)
|
JMP libc_exchangedata(SB)
|
||||||
|
|
||||||
GLOBL ·libc_exchangedata_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_exchangedata_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_exchangedata_trampoline_addr(SB)/8, $libc_exchangedata_trampoline<>(SB)
|
DATA ·libc_exchangedata_trampoline_addr(SB)/8, $libc_exchangedata_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_exit(SB)
|
JMP libc_exit(SB)
|
||||||
|
|
||||||
GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_exit_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)
|
DATA ·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_faccessat(SB)
|
JMP libc_faccessat(SB)
|
||||||
|
|
||||||
GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_faccessat_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)
|
DATA ·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fchdir(SB)
|
JMP libc_fchdir(SB)
|
||||||
|
|
||||||
GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fchdir_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)
|
DATA ·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fchflags(SB)
|
JMP libc_fchflags(SB)
|
||||||
|
|
||||||
GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fchflags_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)
|
DATA ·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fchmod(SB)
|
JMP libc_fchmod(SB)
|
||||||
|
|
||||||
GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fchmod_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)
|
DATA ·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fchmodat(SB)
|
JMP libc_fchmodat(SB)
|
||||||
|
|
||||||
GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fchmodat_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)
|
DATA ·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fchown(SB)
|
JMP libc_fchown(SB)
|
||||||
|
|
||||||
GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fchown_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)
|
DATA ·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fchownat(SB)
|
JMP libc_fchownat(SB)
|
||||||
|
|
||||||
GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fchownat_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)
|
DATA ·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_fclonefileat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fclonefileat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fclonefileat(SB)
|
JMP libc_fclonefileat(SB)
|
||||||
|
|
||||||
GLOBL ·libc_fclonefileat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fclonefileat_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_fclonefileat_trampoline_addr(SB)/8, $libc_fclonefileat_trampoline<>(SB)
|
DATA ·libc_fclonefileat_trampoline_addr(SB)/8, $libc_fclonefileat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_flock(SB)
|
JMP libc_flock(SB)
|
||||||
|
|
||||||
GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_flock_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)
|
DATA ·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fpathconf(SB)
|
JMP libc_fpathconf(SB)
|
||||||
|
|
||||||
GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fpathconf_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)
|
DATA ·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fsync(SB)
|
JMP libc_fsync(SB)
|
||||||
|
|
||||||
GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fsync_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)
|
DATA ·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_ftruncate(SB)
|
JMP libc_ftruncate(SB)
|
||||||
|
|
||||||
GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_ftruncate_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)
|
DATA ·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getcwd(SB)
|
JMP libc_getcwd(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getcwd_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)
|
DATA ·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getdtablesize_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getdtablesize_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getdtablesize(SB)
|
JMP libc_getdtablesize(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getdtablesize_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getdtablesize_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getdtablesize_trampoline_addr(SB)/8, $libc_getdtablesize_trampoline<>(SB)
|
DATA ·libc_getdtablesize_trampoline_addr(SB)/8, $libc_getdtablesize_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getegid(SB)
|
JMP libc_getegid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getegid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)
|
DATA ·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_geteuid(SB)
|
JMP libc_geteuid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_geteuid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)
|
DATA ·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getgid(SB)
|
JMP libc_getgid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getgid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)
|
DATA ·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getpgid(SB)
|
JMP libc_getpgid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getpgid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)
|
DATA ·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getpgrp(SB)
|
JMP libc_getpgrp(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getpgrp_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)
|
DATA ·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getpid(SB)
|
JMP libc_getpid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getpid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)
|
DATA ·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getppid(SB)
|
JMP libc_getppid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getppid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)
|
DATA ·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getpriority(SB)
|
JMP libc_getpriority(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getpriority_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)
|
DATA ·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getrlimit(SB)
|
JMP libc_getrlimit(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getrlimit_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)
|
DATA ·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getrusage(SB)
|
JMP libc_getrusage(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getrusage_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)
|
DATA ·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getsid(SB)
|
JMP libc_getsid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getsid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)
|
DATA ·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_gettimeofday(SB)
|
JMP libc_gettimeofday(SB)
|
||||||
|
|
||||||
GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_gettimeofday_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)
|
DATA ·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getuid(SB)
|
JMP libc_getuid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getuid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)
|
DATA ·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_issetugid(SB)
|
JMP libc_issetugid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_issetugid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)
|
DATA ·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_kqueue(SB)
|
JMP libc_kqueue(SB)
|
||||||
|
|
||||||
GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_kqueue_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)
|
DATA ·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_lchown(SB)
|
JMP libc_lchown(SB)
|
||||||
|
|
||||||
GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_lchown_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)
|
DATA ·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_link(SB)
|
JMP libc_link(SB)
|
||||||
|
|
||||||
GLOBL ·libc_link_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_link_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)
|
DATA ·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_linkat(SB)
|
JMP libc_linkat(SB)
|
||||||
|
|
||||||
GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_linkat_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)
|
DATA ·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_listen(SB)
|
JMP libc_listen(SB)
|
||||||
|
|
||||||
GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_listen_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)
|
DATA ·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_mkdir(SB)
|
JMP libc_mkdir(SB)
|
||||||
|
|
||||||
GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_mkdir_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)
|
DATA ·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_mkdirat(SB)
|
JMP libc_mkdirat(SB)
|
||||||
|
|
||||||
GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_mkdirat_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)
|
DATA ·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_mkfifo(SB)
|
JMP libc_mkfifo(SB)
|
||||||
|
|
||||||
GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_mkfifo_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)
|
DATA ·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_mknod(SB)
|
JMP libc_mknod(SB)
|
||||||
|
|
||||||
GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)
|
DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_mount(SB)
|
JMP libc_mount(SB)
|
||||||
|
|
||||||
GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB)
|
DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_open(SB)
|
JMP libc_open(SB)
|
||||||
|
|
||||||
GLOBL ·libc_open_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_open_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)
|
DATA ·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_openat(SB)
|
JMP libc_openat(SB)
|
||||||
|
|
||||||
GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_openat_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)
|
DATA ·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_pathconf(SB)
|
JMP libc_pathconf(SB)
|
||||||
|
|
||||||
GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_pathconf_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)
|
DATA ·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_pread(SB)
|
JMP libc_pread(SB)
|
||||||
|
|
||||||
GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_pread_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)
|
DATA ·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_pwrite(SB)
|
JMP libc_pwrite(SB)
|
||||||
|
|
||||||
GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_pwrite_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)
|
DATA ·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_read(SB)
|
JMP libc_read(SB)
|
||||||
|
|
||||||
GLOBL ·libc_read_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_read_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)
|
DATA ·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_readlink(SB)
|
JMP libc_readlink(SB)
|
||||||
|
|
||||||
GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_readlink_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)
|
DATA ·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_readlinkat(SB)
|
JMP libc_readlinkat(SB)
|
||||||
|
|
||||||
GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_readlinkat_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)
|
DATA ·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_rename(SB)
|
JMP libc_rename(SB)
|
||||||
|
|
||||||
GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_rename_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)
|
DATA ·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_renameat(SB)
|
JMP libc_renameat(SB)
|
||||||
|
|
||||||
GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_renameat_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)
|
DATA ·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_revoke(SB)
|
JMP libc_revoke(SB)
|
||||||
|
|
||||||
GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_revoke_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)
|
DATA ·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_rmdir(SB)
|
JMP libc_rmdir(SB)
|
||||||
|
|
||||||
GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_rmdir_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)
|
DATA ·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_lseek(SB)
|
JMP libc_lseek(SB)
|
||||||
|
|
||||||
GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_lseek_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)
|
DATA ·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_select(SB)
|
JMP libc_select(SB)
|
||||||
|
|
||||||
GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)
|
DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)
|
||||||
|
|
||||||
|
|
@ -712,192 +595,160 @@ DATA ·libc_setattrlist_trampoline_addr(SB)/8, $libc_setattrlist_trampoline<>(SB
|
||||||
|
|
||||||
TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_setegid(SB)
|
JMP libc_setegid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_setegid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)
|
DATA ·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_seteuid(SB)
|
JMP libc_seteuid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_seteuid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)
|
DATA ·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_setgid(SB)
|
JMP libc_setgid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_setgid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)
|
DATA ·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_setlogin(SB)
|
JMP libc_setlogin(SB)
|
||||||
|
|
||||||
GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_setlogin_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)
|
DATA ·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_setpgid(SB)
|
JMP libc_setpgid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_setpgid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)
|
DATA ·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_setpriority(SB)
|
JMP libc_setpriority(SB)
|
||||||
|
|
||||||
GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_setpriority_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)
|
DATA ·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_setprivexec_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_setprivexec_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_setprivexec(SB)
|
JMP libc_setprivexec(SB)
|
||||||
|
|
||||||
GLOBL ·libc_setprivexec_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_setprivexec_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_setprivexec_trampoline_addr(SB)/8, $libc_setprivexec_trampoline<>(SB)
|
DATA ·libc_setprivexec_trampoline_addr(SB)/8, $libc_setprivexec_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_setregid(SB)
|
JMP libc_setregid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_setregid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)
|
DATA ·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_setreuid(SB)
|
JMP libc_setreuid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_setreuid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)
|
DATA ·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_setsid(SB)
|
JMP libc_setsid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_setsid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)
|
DATA ·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_settimeofday(SB)
|
JMP libc_settimeofday(SB)
|
||||||
|
|
||||||
GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_settimeofday_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)
|
DATA ·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_setuid(SB)
|
JMP libc_setuid(SB)
|
||||||
|
|
||||||
GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_setuid_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)
|
DATA ·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_symlink(SB)
|
JMP libc_symlink(SB)
|
||||||
|
|
||||||
GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_symlink_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)
|
DATA ·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_symlinkat(SB)
|
JMP libc_symlinkat(SB)
|
||||||
|
|
||||||
GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_symlinkat_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)
|
DATA ·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_sync(SB)
|
JMP libc_sync(SB)
|
||||||
|
|
||||||
GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_sync_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)
|
DATA ·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_truncate(SB)
|
JMP libc_truncate(SB)
|
||||||
|
|
||||||
GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_truncate_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)
|
DATA ·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_umask(SB)
|
JMP libc_umask(SB)
|
||||||
|
|
||||||
GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_umask_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)
|
DATA ·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_undelete_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_undelete_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_undelete(SB)
|
JMP libc_undelete(SB)
|
||||||
|
|
||||||
GLOBL ·libc_undelete_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_undelete_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_undelete_trampoline_addr(SB)/8, $libc_undelete_trampoline<>(SB)
|
DATA ·libc_undelete_trampoline_addr(SB)/8, $libc_undelete_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_unlink(SB)
|
JMP libc_unlink(SB)
|
||||||
|
|
||||||
GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_unlink_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)
|
DATA ·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_unlinkat(SB)
|
JMP libc_unlinkat(SB)
|
||||||
|
|
||||||
GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_unlinkat_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)
|
DATA ·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_unmount(SB)
|
JMP libc_unmount(SB)
|
||||||
|
|
||||||
GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_unmount_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)
|
DATA ·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_write(SB)
|
JMP libc_write(SB)
|
||||||
|
|
||||||
GLOBL ·libc_write_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_write_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)
|
DATA ·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_mmap(SB)
|
JMP libc_mmap(SB)
|
||||||
|
|
||||||
GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_mmap_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)
|
DATA ·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_munmap(SB)
|
JMP libc_munmap(SB)
|
||||||
|
|
||||||
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_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
|
||||||
DATA ·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB)
|
DATA ·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fstatat(SB)
|
JMP libc_fstatat(SB)
|
||||||
|
|
||||||
GLOBL ·libc_fstatat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fstatat_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB)
|
DATA ·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_fstatfs(SB)
|
JMP libc_fstatfs(SB)
|
||||||
|
|
||||||
GLOBL ·libc_fstatfs_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_fstatfs_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB)
|
DATA ·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_getfsstat(SB)
|
JMP libc_getfsstat(SB)
|
||||||
|
|
||||||
GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_getfsstat_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)
|
DATA ·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_lstat(SB)
|
JMP libc_lstat(SB)
|
||||||
|
|
||||||
GLOBL ·libc_lstat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_lstat_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB)
|
DATA ·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_ptrace_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_ptrace_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_ptrace(SB)
|
JMP libc_ptrace(SB)
|
||||||
|
|
||||||
GLOBL ·libc_ptrace_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_ptrace_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_ptrace_trampoline_addr(SB)/8, $libc_ptrace_trampoline<>(SB)
|
DATA ·libc_ptrace_trampoline_addr(SB)/8, $libc_ptrace_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_stat(SB)
|
JMP libc_stat(SB)
|
||||||
|
|
||||||
GLOBL ·libc_stat_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_stat_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB)
|
DATA ·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB)
|
||||||
|
|
||||||
TEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0
|
TEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0
|
||||||
JMP libc_statfs(SB)
|
JMP libc_statfs(SB)
|
||||||
|
|
||||||
GLOBL ·libc_statfs_trampoline_addr(SB), RODATA, $8
|
GLOBL ·libc_statfs_trampoline_addr(SB), RODATA, $8
|
||||||
DATA ·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB)
|
DATA ·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB)
|
||||||
|
|
|
||||||
|
|
@ -1642,28 +1642,6 @@ func munmap(addr uintptr, length uintptr) (err error) {
|
||||||
|
|
||||||
// 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {
|
func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {
|
||||||
r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
|
r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
|
||||||
nfd = int(r0)
|
nfd = int(r0)
|
||||||
|
|
|
||||||
|
|
@ -1862,28 +1862,6 @@ func munmap(addr uintptr, length uintptr) (err error) {
|
||||||
|
|
||||||
// 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {
|
func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {
|
||||||
r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
|
r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
|
||||||
nfd = int(r0)
|
nfd = int(r0)
|
||||||
|
|
|
||||||
|
|
@ -1862,28 +1862,6 @@ func munmap(addr uintptr, length uintptr) (err error) {
|
||||||
|
|
||||||
// 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {
|
func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {
|
||||||
r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
|
r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
|
||||||
nfd = int(r0)
|
nfd = int(r0)
|
||||||
|
|
|
||||||
|
|
@ -1862,28 +1862,6 @@ func munmap(addr uintptr, length uintptr) (err error) {
|
||||||
|
|
||||||
// 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {
|
func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {
|
||||||
r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
|
r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
|
||||||
nfd = int(r0)
|
nfd = int(r0)
|
||||||
|
|
|
||||||
|
|
@ -1862,28 +1862,6 @@ func munmap(addr uintptr, length uintptr) (err error) {
|
||||||
|
|
||||||
// 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {
|
func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {
|
||||||
r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
|
r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
|
||||||
nfd = int(r0)
|
nfd = int(r0)
|
||||||
|
|
|
||||||
|
|
@ -1862,28 +1862,6 @@ func munmap(addr uintptr, length uintptr) (err error) {
|
||||||
|
|
||||||
// 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {
|
func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {
|
||||||
r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
|
r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
|
||||||
nfd = int(r0)
|
nfd = int(r0)
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ func readv(fd int, iovs []Iovec) (n int, err error) {
|
||||||
r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procreadv)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), 0, 0, 0)
|
r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procreadv)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), 0, 0, 0)
|
||||||
n = int(r0)
|
n = int(r0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = e1
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
@ -55,7 +55,7 @@ func preadv(fd int, iovs []Iovec, off int64) (n int, err error) {
|
||||||
r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpreadv)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), uintptr(off), 0, 0)
|
r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpreadv)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), uintptr(off), 0, 0)
|
||||||
n = int(r0)
|
n = int(r0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = e1
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
@ -70,7 +70,7 @@ func writev(fd int, iovs []Iovec) (n int, err error) {
|
||||||
r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwritev)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), 0, 0, 0)
|
r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwritev)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), 0, 0, 0)
|
||||||
n = int(r0)
|
n = int(r0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = e1
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
@ -85,7 +85,7 @@ func pwritev(fd int, iovs []Iovec, off int64) (n int, err error) {
|
||||||
r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpwritev)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), uintptr(off), 0, 0)
|
r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpwritev)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), uintptr(off), 0, 0)
|
||||||
n = int(r0)
|
n = int(r0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = e1
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
@ -96,7 +96,7 @@ func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int,
|
||||||
r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procaccept4)), 4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
|
r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procaccept4)), 4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)
|
||||||
fd = int(r0)
|
fd = int(r0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
err = e1
|
err = errnoErr(e1)
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1734,28 +1734,6 @@ func exitThread(code int) (err error) {
|
||||||
|
|
||||||
// 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 readlen(fd int, p *byte, np int) (n int, err error) {
|
|
||||||
r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func writelen(fd int, p *byte, np int) (n int, err error) {
|
|
||||||
r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func readv(fd int, iovs []Iovec) (n int, err error) {
|
func readv(fd int, iovs []Iovec) (n int, err error) {
|
||||||
var _p0 unsafe.Pointer
|
var _p0 unsafe.Pointer
|
||||||
if len(iovs) > 0 {
|
if len(iovs) > 0 {
|
||||||
|
|
|
||||||
|
|
@ -1824,28 +1824,6 @@ func munmap(addr uintptr, length uintptr) (err error) {
|
||||||
|
|
||||||
// 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
|
func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
|
|
|
||||||
|
|
@ -1824,28 +1824,6 @@ func munmap(addr uintptr, length uintptr) (err error) {
|
||||||
|
|
||||||
// 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
|
func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
|
|
|
||||||
|
|
@ -1824,28 +1824,6 @@ func munmap(addr uintptr, length uintptr) (err error) {
|
||||||
|
|
||||||
// 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
|
func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
|
|
|
||||||
|
|
@ -1824,28 +1824,6 @@ func munmap(addr uintptr, length uintptr) (err error) {
|
||||||
|
|
||||||
// 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
|
func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
|
|
|
||||||
|
|
@ -549,6 +549,12 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var libc_ioctl_trampoline_addr uintptr
|
||||||
|
|
||||||
|
//go:cgo_import_dynamic libc_ioctl ioctl "libc.so"
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {
|
func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {
|
||||||
_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))
|
_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
|
@ -557,10 +563,6 @@ func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var libc_ioctl_trampoline_addr uintptr
|
|
||||||
|
|
||||||
//go:cgo_import_dynamic libc_ioctl ioctl "libc.so"
|
|
||||||
|
|
||||||
// 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 sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
||||||
|
|
@ -2211,28 +2213,6 @@ 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
|
func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
|
|
|
||||||
|
|
@ -2213,28 +2213,6 @@ 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
|
func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
|
|
|
||||||
|
|
@ -549,6 +549,12 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var libc_ioctl_trampoline_addr uintptr
|
||||||
|
|
||||||
|
//go:cgo_import_dynamic libc_ioctl ioctl "libc.so"
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {
|
func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {
|
||||||
_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))
|
_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
|
@ -557,10 +563,6 @@ func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var libc_ioctl_trampoline_addr uintptr
|
|
||||||
|
|
||||||
//go:cgo_import_dynamic libc_ioctl ioctl "libc.so"
|
|
||||||
|
|
||||||
// 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 sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
||||||
|
|
@ -2211,28 +2213,6 @@ 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
|
func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
|
|
|
||||||
|
|
@ -549,6 +549,12 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var libc_ioctl_trampoline_addr uintptr
|
||||||
|
|
||||||
|
//go:cgo_import_dynamic libc_ioctl ioctl "libc.so"
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {
|
func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {
|
||||||
_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))
|
_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
|
@ -557,10 +563,6 @@ func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var libc_ioctl_trampoline_addr uintptr
|
|
||||||
|
|
||||||
//go:cgo_import_dynamic libc_ioctl ioctl "libc.so"
|
|
||||||
|
|
||||||
// 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 sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
||||||
|
|
@ -2211,28 +2213,6 @@ 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
|
func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
|
|
|
||||||
|
|
@ -549,6 +549,12 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var libc_ioctl_trampoline_addr uintptr
|
||||||
|
|
||||||
|
//go:cgo_import_dynamic libc_ioctl ioctl "libc.so"
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {
|
func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {
|
||||||
_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))
|
_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
|
@ -557,10 +563,6 @@ func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var libc_ioctl_trampoline_addr uintptr
|
|
||||||
|
|
||||||
//go:cgo_import_dynamic libc_ioctl ioctl "libc.so"
|
|
||||||
|
|
||||||
// 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 sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
||||||
|
|
@ -2211,28 +2213,6 @@ 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
|
func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
|
|
|
||||||
|
|
@ -549,6 +549,12 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var libc_ioctl_trampoline_addr uintptr
|
||||||
|
|
||||||
|
//go:cgo_import_dynamic libc_ioctl ioctl "libc.so"
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {
|
func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {
|
||||||
_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))
|
_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
|
@ -557,10 +563,6 @@ func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var libc_ioctl_trampoline_addr uintptr
|
|
||||||
|
|
||||||
//go:cgo_import_dynamic libc_ioctl ioctl "libc.so"
|
|
||||||
|
|
||||||
// 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 sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
||||||
|
|
@ -2211,28 +2213,6 @@ 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
|
func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
|
|
|
||||||
|
|
@ -549,6 +549,12 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var libc_ioctl_trampoline_addr uintptr
|
||||||
|
|
||||||
|
//go:cgo_import_dynamic libc_ioctl ioctl "libc.so"
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {
|
func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {
|
||||||
_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))
|
_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
|
@ -557,10 +563,6 @@ func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var libc_ioctl_trampoline_addr uintptr
|
|
||||||
|
|
||||||
//go:cgo_import_dynamic libc_ioctl ioctl "libc.so"
|
|
||||||
|
|
||||||
// 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 sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
||||||
|
|
@ -2211,28 +2213,6 @@ 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func writelen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
|
func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -40,17 +40,6 @@ func read(fd int, p []byte) (n int, err error) {
|
||||||
|
|
||||||
// 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 readlen(fd int, buf *byte, nbuf int) (n int, err error) {
|
|
||||||
r0, _, e1 := syscall_syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf))
|
|
||||||
n = int(r0)
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func write(fd int, p []byte) (n int, err error) {
|
func write(fd int, p []byte) (n int, err error) {
|
||||||
var _p0 unsafe.Pointer
|
var _p0 unsafe.Pointer
|
||||||
if len(p) > 0 {
|
if len(p) > 0 {
|
||||||
|
|
|
||||||
|
|
@ -447,4 +447,5 @@ const (
|
||||||
SYS_PROCESS_MRELEASE = 448
|
SYS_PROCESS_MRELEASE = 448
|
||||||
SYS_FUTEX_WAITV = 449
|
SYS_FUTEX_WAITV = 449
|
||||||
SYS_SET_MEMPOLICY_HOME_NODE = 450
|
SYS_SET_MEMPOLICY_HOME_NODE = 450
|
||||||
|
SYS_CACHESTAT = 451
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -369,4 +369,5 @@ const (
|
||||||
SYS_PROCESS_MRELEASE = 448
|
SYS_PROCESS_MRELEASE = 448
|
||||||
SYS_FUTEX_WAITV = 449
|
SYS_FUTEX_WAITV = 449
|
||||||
SYS_SET_MEMPOLICY_HOME_NODE = 450
|
SYS_SET_MEMPOLICY_HOME_NODE = 450
|
||||||
|
SYS_CACHESTAT = 451
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -411,4 +411,5 @@ const (
|
||||||
SYS_PROCESS_MRELEASE = 448
|
SYS_PROCESS_MRELEASE = 448
|
||||||
SYS_FUTEX_WAITV = 449
|
SYS_FUTEX_WAITV = 449
|
||||||
SYS_SET_MEMPOLICY_HOME_NODE = 450
|
SYS_SET_MEMPOLICY_HOME_NODE = 450
|
||||||
|
SYS_CACHESTAT = 451
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -314,4 +314,5 @@ const (
|
||||||
SYS_PROCESS_MRELEASE = 448
|
SYS_PROCESS_MRELEASE = 448
|
||||||
SYS_FUTEX_WAITV = 449
|
SYS_FUTEX_WAITV = 449
|
||||||
SYS_SET_MEMPOLICY_HOME_NODE = 450
|
SYS_SET_MEMPOLICY_HOME_NODE = 450
|
||||||
|
SYS_CACHESTAT = 451
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -308,4 +308,5 @@ const (
|
||||||
SYS_PROCESS_MRELEASE = 448
|
SYS_PROCESS_MRELEASE = 448
|
||||||
SYS_FUTEX_WAITV = 449
|
SYS_FUTEX_WAITV = 449
|
||||||
SYS_SET_MEMPOLICY_HOME_NODE = 450
|
SYS_SET_MEMPOLICY_HOME_NODE = 450
|
||||||
|
SYS_CACHESTAT = 451
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue