mirror of
https://github.com/xiaoqidun/ihash.git
synced 2024-11-14 22:45:17 +08:00
Compare commits
25 Commits
Author | SHA1 | Date | |
---|---|---|---|
535a9b7fc8 | |||
77e1a1c941 | |||
d2f1959972 | |||
a810c78009 | |||
810a5ece4f | |||
a7ce1f92b7 | |||
3f456588b2 | |||
23d553f47a | |||
0ac527751a | |||
43dc0d59b8 | |||
fd8fcc7930 | |||
f32f4ae2ab | |||
ee1a2b25b3 | |||
70dd9ba8e4 | |||
7dc36a0b0d | |||
2ed0f9bac2 | |||
c56c6c7e55 | |||
b7521e21b7 | |||
b076c947ba | |||
8abe2cd07c | |||
561145d821 | |||
9192cd340f | |||
7c636ded82 | |||
d1de686678 | |||
420f41e6e8 |
29
.drone.yml
Normal file
29
.drone.yml
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
kind: pipeline
|
||||||
|
type: docker
|
||||||
|
name: default
|
||||||
|
node:
|
||||||
|
region: cn
|
||||||
|
steps:
|
||||||
|
- name: generate
|
||||||
|
pull: if-not-exists
|
||||||
|
image: ccr.ccs.tencentyun.com/xiaoqidun/build
|
||||||
|
commands:
|
||||||
|
- build -f build.sh -i ihash.go -o release/ihash
|
||||||
|
- name: build
|
||||||
|
pull: if-not-exists
|
||||||
|
image: ccr.ccs.tencentyun.com/xiaoqidun/goenv
|
||||||
|
commands:
|
||||||
|
- ./build.sh
|
||||||
|
- name: upload
|
||||||
|
pull: if-not-exists
|
||||||
|
image: ccr.ccs.tencentyun.com/xiaoqidun/gocos
|
||||||
|
settings:
|
||||||
|
secret_id:
|
||||||
|
from_secret: cos_secret_id
|
||||||
|
secret_key:
|
||||||
|
from_secret: cos_secret_key
|
||||||
|
bucket_url:
|
||||||
|
from_secret: cos_bucket_url
|
||||||
|
source: release/
|
||||||
|
target: product/ihash
|
||||||
|
strip_prefix: release/
|
10
README.md
10
README.md
@ -1,17 +1,23 @@
|
|||||||
# ihash
|
# ihash
|
||||||
命令行,带进度,支持通配符的hash校验工具
|
命令行,全平台,支持通配符的hash校验工具
|
||||||
# 快速安装
|
# 快速安装
|
||||||
go get -u github.com/xiaoqidun/ihash
|
go install github.com/xiaoqidun/ihash@latest
|
||||||
# 编译安装
|
# 编译安装
|
||||||
```
|
```
|
||||||
git clone https://github.com/xiaoqidun/ihash.git
|
git clone https://github.com/xiaoqidun/ihash.git
|
||||||
cd ihash
|
cd ihash
|
||||||
go build ihash.go
|
go build ihash.go
|
||||||
```
|
```
|
||||||
|
# 手动安装
|
||||||
|
1. 根据系统架构下载为你编译好的[二进制文件](https://aite.xyz/product/ihash/)
|
||||||
|
2. 将下载好的二进制文件重命名为ihash并保留后缀
|
||||||
|
3. 把ihash文件移动到系统PATH环境变量中的目录下
|
||||||
|
4. windows外的系统需使用chmod命令赋予可执行权限
|
||||||
# 校验类型
|
# 校验类型
|
||||||
- md5sum
|
- md5sum
|
||||||
- sha1sum
|
- sha1sum
|
||||||
- sha256sum
|
- sha256sum
|
||||||
|
- sha384sum
|
||||||
- sha512sum
|
- sha512sum
|
||||||
- sha3sum224
|
- sha3sum224
|
||||||
- sha3sum256
|
- sha3sum256
|
||||||
|
8
go.mod
8
go.mod
@ -1,5 +1,7 @@
|
|||||||
module ihash
|
module github.com/xiaoqidun/ihash
|
||||||
|
|
||||||
go 1.14
|
go 1.23.1
|
||||||
|
|
||||||
require golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de
|
require golang.org/x/crypto v0.27.0
|
||||||
|
|
||||||
|
require golang.org/x/sys v0.25.0 // indirect
|
||||||
|
12
go.sum
12
go.sum
@ -1,8 +1,4 @@
|
|||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A=
|
||||||
golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de h1:ikNHVSjEfnvz6sxdSPCaPt572qowuyMDMJLLm3Db3ig=
|
golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70=
|
||||||
golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34=
|
||||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
|
||||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d h1:+R4KGOnez64A81RvjARKc4UT5/tI9ujCIVX+P5KiHuI=
|
|
||||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
|
||||||
|
94
ihash.go
94
ihash.go
@ -10,6 +10,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"golang.org/x/crypto/sha3"
|
"golang.org/x/crypto/sha3"
|
||||||
"hash"
|
"hash"
|
||||||
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
@ -18,6 +19,18 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
md5sum = "md5sum"
|
||||||
|
sha1sum = "sha1sum"
|
||||||
|
sha256sum = "sha256sum"
|
||||||
|
sha384sum = "sha384sum"
|
||||||
|
sha512sum = "sha512sum"
|
||||||
|
sha3sum224 = "sha3sum224"
|
||||||
|
sha3sum256 = "sha3sum256"
|
||||||
|
sha3sum384 = "sha3sum384"
|
||||||
|
sha3sum512 = "sha3sum512"
|
||||||
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
args []string
|
args []string
|
||||||
author bool
|
author bool
|
||||||
@ -25,14 +38,15 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var typeList = []string{
|
var typeList = []string{
|
||||||
"md5sum",
|
md5sum,
|
||||||
"sha1sum",
|
sha1sum,
|
||||||
"sha256sum",
|
sha256sum,
|
||||||
"sha512sum",
|
sha384sum,
|
||||||
"sha3sum224",
|
sha512sum,
|
||||||
"sha3sum256",
|
sha3sum224,
|
||||||
"sha3sum384",
|
sha3sum256,
|
||||||
"sha3sum512",
|
sha3sum384,
|
||||||
|
sha3sum512,
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@ -90,29 +104,30 @@ func InArray(value interface{}, array interface{}) int {
|
|||||||
func StrHash(hashType string, hashData []byte) string {
|
func StrHash(hashType string, hashData []byte) string {
|
||||||
var sum interface{}
|
var sum interface{}
|
||||||
switch hashType {
|
switch hashType {
|
||||||
case "md5sum":
|
case md5sum:
|
||||||
sum = md5.Sum(hashData)
|
sum = md5.Sum(hashData)
|
||||||
case "sha1sum":
|
case sha1sum:
|
||||||
sum = sha1.Sum(hashData)
|
sum = sha1.Sum(hashData)
|
||||||
case "sha256sum":
|
case sha256sum:
|
||||||
sum = sha256.Sum256(hashData)
|
sum = sha256.Sum256(hashData)
|
||||||
case "sha512sum":
|
case sha384sum:
|
||||||
|
sum = sha512.Sum384(hashData)
|
||||||
|
case sha512sum:
|
||||||
sum = sha512.Sum512(hashData)
|
sum = sha512.Sum512(hashData)
|
||||||
case "sha3sum224":
|
case sha3sum224:
|
||||||
sum = sha3.Sum224(hashData)
|
sum = sha3.Sum224(hashData)
|
||||||
case "sha3sum256":
|
case sha3sum256:
|
||||||
sum = sha3.Sum256(hashData)
|
sum = sha3.Sum256(hashData)
|
||||||
case "sha3sum384":
|
case sha3sum384:
|
||||||
sum = sha3.Sum384(hashData)
|
sum = sha3.Sum384(hashData)
|
||||||
case "sha3sum512":
|
case sha3sum512:
|
||||||
sum = sha3.Sum512(hashData)
|
sum = sha3.Sum512(hashData)
|
||||||
}
|
}
|
||||||
return fmt.Sprintf("%x", sum)
|
return fmt.Sprintf("%x", sum)
|
||||||
}
|
}
|
||||||
|
|
||||||
func FileHash(hashType string, hashFile string) {
|
func FileHash(hashType string, hashFile string) {
|
||||||
msg := "progress:%.2f%% filename:%s\r"
|
success := "%x %s"
|
||||||
success := "%x %s\n"
|
|
||||||
fileOpen, err := os.Open(hashFile)
|
fileOpen, err := os.Open(hashFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
@ -124,54 +139,39 @@ func FileHash(hashType string, hashFile string) {
|
|||||||
if err != nil || fileStat.IsDir() {
|
if err != nil || fileStat.IsDir() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
fileSize := fileStat.Size()
|
|
||||||
readSize := 0
|
|
||||||
readBytes := make([]byte, 8192)
|
readBytes := make([]byte, 8192)
|
||||||
var hashHandle interface{}
|
var hashHandle interface{}
|
||||||
switch hashType {
|
switch hashType {
|
||||||
case "md5sum":
|
case md5sum:
|
||||||
hashHandle = md5.New()
|
hashHandle = md5.New()
|
||||||
case "sha1sum":
|
case sha1sum:
|
||||||
hashHandle = sha1.New()
|
hashHandle = sha1.New()
|
||||||
case "sha256sum":
|
case sha256sum:
|
||||||
hashHandle = sha256.New()
|
hashHandle = sha256.New()
|
||||||
case "sha512sum":
|
case sha384sum:
|
||||||
|
hashHandle = sha512.New384()
|
||||||
|
case sha512sum:
|
||||||
hashHandle = sha512.New()
|
hashHandle = sha512.New()
|
||||||
case "sha3sum224":
|
case sha3sum224:
|
||||||
hashHandle = sha3.New224()
|
hashHandle = sha3.New224()
|
||||||
case "sha3sum256":
|
case sha3sum256:
|
||||||
hashHandle = sha3.New256()
|
hashHandle = sha3.New256()
|
||||||
case "sha3sum384":
|
case sha3sum384:
|
||||||
hashHandle = sha3.New384()
|
hashHandle = sha3.New384()
|
||||||
case "sha3sum512":
|
case sha3sum512:
|
||||||
hashHandle = sha3.New512()
|
hashHandle = sha3.New512()
|
||||||
}
|
}
|
||||||
printLength := 0
|
|
||||||
for {
|
for {
|
||||||
n, err := fileOpen.Read(readBytes)
|
n, err := fileOpen.Read(readBytes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if err == io.EOF && n > 0 {
|
||||||
|
hashHandle.(hash.Hash).Write(readBytes[:n])
|
||||||
|
}
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
readSize += n
|
|
||||||
hashHandle.(hash.Hash).Write(readBytes[:n])
|
hashHandle.(hash.Hash).Write(readBytes[:n])
|
||||||
if 0 == readSize%67108864 {
|
|
||||||
printMsg := fmt.Sprintf(msg, float64(readSize)/float64(fileSize)*100, fileStat.Name())
|
|
||||||
printMsgLength := len(printMsg)
|
|
||||||
if printLength > printMsgLength {
|
|
||||||
printMsg += strings.Repeat(" ", printLength-printMsgLength)
|
|
||||||
}
|
}
|
||||||
fmt.Print(printMsg)
|
fmt.Println(fmt.Sprintf(success, hashHandle.(hash.Hash).Sum(nil), hashFile))
|
||||||
_ = os.Stdout.Sync()
|
|
||||||
printLength = len(printMsg)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
printMsg := fmt.Sprintf(success, hashHandle.(hash.Hash).Sum(nil), hashFile)
|
|
||||||
printMsgLength := len(printMsg)
|
|
||||||
if printLength > printMsgLength {
|
|
||||||
printMsg += strings.Repeat(" ", printLength-printMsgLength)
|
|
||||||
}
|
|
||||||
fmt.Print(printMsg)
|
|
||||||
_ = os.Stdout.Sync()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetFileName() string {
|
func GetFileName() string {
|
||||||
|
3
vendor/golang.org/x/crypto/AUTHORS
generated
vendored
3
vendor/golang.org/x/crypto/AUTHORS
generated
vendored
@ -1,3 +0,0 @@
|
|||||||
# This source code refers to The Go Authors for copyright purposes.
|
|
||||||
# The master list of authors is in the main Go distribution,
|
|
||||||
# visible at https://tip.golang.org/AUTHORS.
|
|
3
vendor/golang.org/x/crypto/CONTRIBUTORS
generated
vendored
3
vendor/golang.org/x/crypto/CONTRIBUTORS
generated
vendored
@ -1,3 +0,0 @@
|
|||||||
# This source code was written by the Go contributors.
|
|
||||||
# The master list of contributors is in the main Go distribution,
|
|
||||||
# visible at https://tip.golang.org/CONTRIBUTORS.
|
|
27
vendor/golang.org/x/crypto/LICENSE
generated
vendored
27
vendor/golang.org/x/crypto/LICENSE
generated
vendored
@ -1,27 +0,0 @@
|
|||||||
Copyright (c) 2009 The Go Authors. All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions are
|
|
||||||
met:
|
|
||||||
|
|
||||||
* Redistributions of source code must retain the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer.
|
|
||||||
* Redistributions in binary form must reproduce the above
|
|
||||||
copyright notice, this list of conditions and the following disclaimer
|
|
||||||
in the documentation and/or other materials provided with the
|
|
||||||
distribution.
|
|
||||||
* Neither the name of Google Inc. nor the names of its
|
|
||||||
contributors may be used to endorse or promote products derived from
|
|
||||||
this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
22
vendor/golang.org/x/crypto/PATENTS
generated
vendored
22
vendor/golang.org/x/crypto/PATENTS
generated
vendored
@ -1,22 +0,0 @@
|
|||||||
Additional IP Rights Grant (Patents)
|
|
||||||
|
|
||||||
"This implementation" means the copyrightable works distributed by
|
|
||||||
Google as part of the Go project.
|
|
||||||
|
|
||||||
Google hereby grants to You a perpetual, worldwide, non-exclusive,
|
|
||||||
no-charge, royalty-free, irrevocable (except as stated in this section)
|
|
||||||
patent license to make, have made, use, offer to sell, sell, import,
|
|
||||||
transfer and otherwise run, modify and propagate the contents of this
|
|
||||||
implementation of Go, where such license applies only to those patent
|
|
||||||
claims, both currently owned or controlled by Google and acquired in
|
|
||||||
the future, licensable by Google that are necessarily infringed by this
|
|
||||||
implementation of Go. This grant does not include claims that would be
|
|
||||||
infringed only as a consequence of further modification of this
|
|
||||||
implementation. If you or your agent or exclusive licensee institute or
|
|
||||||
order or agree to the institution of patent litigation against any
|
|
||||||
entity (including a cross-claim or counterclaim in a lawsuit) alleging
|
|
||||||
that this implementation of Go or any code incorporated within this
|
|
||||||
implementation of Go constitutes direct or contributory patent
|
|
||||||
infringement, or inducement of patent infringement, then any patent
|
|
||||||
rights granted to you under this License for this implementation of Go
|
|
||||||
shall terminate as of the date such litigation is filed.
|
|
66
vendor/golang.org/x/crypto/sha3/doc.go
generated
vendored
66
vendor/golang.org/x/crypto/sha3/doc.go
generated
vendored
@ -1,66 +0,0 @@
|
|||||||
// Copyright 2014 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 sha3 implements the SHA-3 fixed-output-length hash functions and
|
|
||||||
// the SHAKE variable-output-length hash functions defined by FIPS-202.
|
|
||||||
//
|
|
||||||
// Both types of hash function use the "sponge" construction and the Keccak
|
|
||||||
// permutation. For a detailed specification see http://keccak.noekeon.org/
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// Guidance
|
|
||||||
//
|
|
||||||
// If you aren't sure what function you need, use SHAKE256 with at least 64
|
|
||||||
// bytes of output. The SHAKE instances are faster than the SHA3 instances;
|
|
||||||
// the latter have to allocate memory to conform to the hash.Hash interface.
|
|
||||||
//
|
|
||||||
// If you need a secret-key MAC (message authentication code), prepend the
|
|
||||||
// secret key to the input, hash with SHAKE256 and read at least 32 bytes of
|
|
||||||
// output.
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// Security strengths
|
|
||||||
//
|
|
||||||
// The SHA3-x (x equals 224, 256, 384, or 512) functions have a security
|
|
||||||
// strength against preimage attacks of x bits. Since they only produce "x"
|
|
||||||
// bits of output, their collision-resistance is only "x/2" bits.
|
|
||||||
//
|
|
||||||
// The SHAKE-256 and -128 functions have a generic security strength of 256 and
|
|
||||||
// 128 bits against all attacks, provided that at least 2x bits of their output
|
|
||||||
// is used. Requesting more than 64 or 32 bytes of output, respectively, does
|
|
||||||
// not increase the collision-resistance of the SHAKE functions.
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// The sponge construction
|
|
||||||
//
|
|
||||||
// A sponge builds a pseudo-random function from a public pseudo-random
|
|
||||||
// permutation, by applying the permutation to a state of "rate + capacity"
|
|
||||||
// bytes, but hiding "capacity" of the bytes.
|
|
||||||
//
|
|
||||||
// A sponge starts out with a zero state. To hash an input using a sponge, up
|
|
||||||
// to "rate" bytes of the input are XORed into the sponge's state. The sponge
|
|
||||||
// is then "full" and the permutation is applied to "empty" it. This process is
|
|
||||||
// repeated until all the input has been "absorbed". The input is then padded.
|
|
||||||
// The digest is "squeezed" from the sponge in the same way, except that output
|
|
||||||
// is copied out instead of input being XORed in.
|
|
||||||
//
|
|
||||||
// A sponge is parameterized by its generic security strength, which is equal
|
|
||||||
// to half its capacity; capacity + rate is equal to the permutation's width.
|
|
||||||
// Since the KeccakF-1600 permutation is 1600 bits (200 bytes) wide, this means
|
|
||||||
// that the security strength of a sponge instance is equal to (1600 - bitrate) / 2.
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// Recommendations
|
|
||||||
//
|
|
||||||
// The SHAKE functions are recommended for most new uses. They can produce
|
|
||||||
// output of arbitrary length. SHAKE256, with an output length of at least
|
|
||||||
// 64 bytes, provides 256-bit security against all attacks. The Keccak team
|
|
||||||
// recommends it for most applications upgrading from SHA2-512. (NIST chose a
|
|
||||||
// much stronger, but much slower, sponge instance for SHA3-512.)
|
|
||||||
//
|
|
||||||
// The SHA-3 functions are "drop-in" replacements for the SHA-2 functions.
|
|
||||||
// They produce output of the same length, with the same security strengths
|
|
||||||
// against all attacks. This means, in particular, that SHA3-256 only has
|
|
||||||
// 128-bit collision resistance, because its output length is 32 bytes.
|
|
||||||
package sha3 // import "golang.org/x/crypto/sha3"
|
|
97
vendor/golang.org/x/crypto/sha3/hashes.go
generated
vendored
97
vendor/golang.org/x/crypto/sha3/hashes.go
generated
vendored
@ -1,97 +0,0 @@
|
|||||||
// Copyright 2014 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 sha3
|
|
||||||
|
|
||||||
// This file provides functions for creating instances of the SHA-3
|
|
||||||
// and SHAKE hash functions, as well as utility functions for hashing
|
|
||||||
// bytes.
|
|
||||||
|
|
||||||
import (
|
|
||||||
"hash"
|
|
||||||
)
|
|
||||||
|
|
||||||
// New224 creates a new SHA3-224 hash.
|
|
||||||
// Its generic security strength is 224 bits against preimage attacks,
|
|
||||||
// and 112 bits against collision attacks.
|
|
||||||
func New224() hash.Hash {
|
|
||||||
if h := new224Asm(); h != nil {
|
|
||||||
return h
|
|
||||||
}
|
|
||||||
return &state{rate: 144, outputLen: 28, dsbyte: 0x06}
|
|
||||||
}
|
|
||||||
|
|
||||||
// New256 creates a new SHA3-256 hash.
|
|
||||||
// Its generic security strength is 256 bits against preimage attacks,
|
|
||||||
// and 128 bits against collision attacks.
|
|
||||||
func New256() hash.Hash {
|
|
||||||
if h := new256Asm(); h != nil {
|
|
||||||
return h
|
|
||||||
}
|
|
||||||
return &state{rate: 136, outputLen: 32, dsbyte: 0x06}
|
|
||||||
}
|
|
||||||
|
|
||||||
// New384 creates a new SHA3-384 hash.
|
|
||||||
// Its generic security strength is 384 bits against preimage attacks,
|
|
||||||
// and 192 bits against collision attacks.
|
|
||||||
func New384() hash.Hash {
|
|
||||||
if h := new384Asm(); h != nil {
|
|
||||||
return h
|
|
||||||
}
|
|
||||||
return &state{rate: 104, outputLen: 48, dsbyte: 0x06}
|
|
||||||
}
|
|
||||||
|
|
||||||
// New512 creates a new SHA3-512 hash.
|
|
||||||
// Its generic security strength is 512 bits against preimage attacks,
|
|
||||||
// and 256 bits against collision attacks.
|
|
||||||
func New512() hash.Hash {
|
|
||||||
if h := new512Asm(); h != nil {
|
|
||||||
return h
|
|
||||||
}
|
|
||||||
return &state{rate: 72, outputLen: 64, dsbyte: 0x06}
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewLegacyKeccak256 creates a new Keccak-256 hash.
|
|
||||||
//
|
|
||||||
// Only use this function if you require compatibility with an existing cryptosystem
|
|
||||||
// that uses non-standard padding. All other users should use New256 instead.
|
|
||||||
func NewLegacyKeccak256() hash.Hash { return &state{rate: 136, outputLen: 32, dsbyte: 0x01} }
|
|
||||||
|
|
||||||
// NewLegacyKeccak512 creates a new Keccak-512 hash.
|
|
||||||
//
|
|
||||||
// Only use this function if you require compatibility with an existing cryptosystem
|
|
||||||
// that uses non-standard padding. All other users should use New512 instead.
|
|
||||||
func NewLegacyKeccak512() hash.Hash { return &state{rate: 72, outputLen: 64, dsbyte: 0x01} }
|
|
||||||
|
|
||||||
// Sum224 returns the SHA3-224 digest of the data.
|
|
||||||
func Sum224(data []byte) (digest [28]byte) {
|
|
||||||
h := New224()
|
|
||||||
h.Write(data)
|
|
||||||
h.Sum(digest[:0])
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sum256 returns the SHA3-256 digest of the data.
|
|
||||||
func Sum256(data []byte) (digest [32]byte) {
|
|
||||||
h := New256()
|
|
||||||
h.Write(data)
|
|
||||||
h.Sum(digest[:0])
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sum384 returns the SHA3-384 digest of the data.
|
|
||||||
func Sum384(data []byte) (digest [48]byte) {
|
|
||||||
h := New384()
|
|
||||||
h.Write(data)
|
|
||||||
h.Sum(digest[:0])
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sum512 returns the SHA3-512 digest of the data.
|
|
||||||
func Sum512(data []byte) (digest [64]byte) {
|
|
||||||
h := New512()
|
|
||||||
h.Write(data)
|
|
||||||
h.Sum(digest[:0])
|
|
||||||
return
|
|
||||||
}
|
|
27
vendor/golang.org/x/crypto/sha3/hashes_generic.go
generated
vendored
27
vendor/golang.org/x/crypto/sha3/hashes_generic.go
generated
vendored
@ -1,27 +0,0 @@
|
|||||||
// Copyright 2017 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build gccgo appengine !s390x
|
|
||||||
|
|
||||||
package sha3
|
|
||||||
|
|
||||||
import (
|
|
||||||
"hash"
|
|
||||||
)
|
|
||||||
|
|
||||||
// new224Asm returns an assembly implementation of SHA3-224 if available,
|
|
||||||
// otherwise it returns nil.
|
|
||||||
func new224Asm() hash.Hash { return nil }
|
|
||||||
|
|
||||||
// new256Asm returns an assembly implementation of SHA3-256 if available,
|
|
||||||
// otherwise it returns nil.
|
|
||||||
func new256Asm() hash.Hash { return nil }
|
|
||||||
|
|
||||||
// new384Asm returns an assembly implementation of SHA3-384 if available,
|
|
||||||
// otherwise it returns nil.
|
|
||||||
func new384Asm() hash.Hash { return nil }
|
|
||||||
|
|
||||||
// new512Asm returns an assembly implementation of SHA3-512 if available,
|
|
||||||
// otherwise it returns nil.
|
|
||||||
func new512Asm() hash.Hash { return nil }
|
|
412
vendor/golang.org/x/crypto/sha3/keccakf.go
generated
vendored
412
vendor/golang.org/x/crypto/sha3/keccakf.go
generated
vendored
@ -1,412 +0,0 @@
|
|||||||
// Copyright 2014 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build !amd64 appengine gccgo
|
|
||||||
|
|
||||||
package sha3
|
|
||||||
|
|
||||||
// rc stores the round constants for use in the ι step.
|
|
||||||
var rc = [24]uint64{
|
|
||||||
0x0000000000000001,
|
|
||||||
0x0000000000008082,
|
|
||||||
0x800000000000808A,
|
|
||||||
0x8000000080008000,
|
|
||||||
0x000000000000808B,
|
|
||||||
0x0000000080000001,
|
|
||||||
0x8000000080008081,
|
|
||||||
0x8000000000008009,
|
|
||||||
0x000000000000008A,
|
|
||||||
0x0000000000000088,
|
|
||||||
0x0000000080008009,
|
|
||||||
0x000000008000000A,
|
|
||||||
0x000000008000808B,
|
|
||||||
0x800000000000008B,
|
|
||||||
0x8000000000008089,
|
|
||||||
0x8000000000008003,
|
|
||||||
0x8000000000008002,
|
|
||||||
0x8000000000000080,
|
|
||||||
0x000000000000800A,
|
|
||||||
0x800000008000000A,
|
|
||||||
0x8000000080008081,
|
|
||||||
0x8000000000008080,
|
|
||||||
0x0000000080000001,
|
|
||||||
0x8000000080008008,
|
|
||||||
}
|
|
||||||
|
|
||||||
// keccakF1600 applies the Keccak permutation to a 1600b-wide
|
|
||||||
// state represented as a slice of 25 uint64s.
|
|
||||||
func keccakF1600(a *[25]uint64) {
|
|
||||||
// Implementation translated from Keccak-inplace.c
|
|
||||||
// in the keccak reference code.
|
|
||||||
var t, bc0, bc1, bc2, bc3, bc4, d0, d1, d2, d3, d4 uint64
|
|
||||||
|
|
||||||
for i := 0; i < 24; i += 4 {
|
|
||||||
// Combines the 5 steps in each round into 2 steps.
|
|
||||||
// Unrolls 4 rounds per loop and spreads some steps across rounds.
|
|
||||||
|
|
||||||
// Round 1
|
|
||||||
bc0 = a[0] ^ a[5] ^ a[10] ^ a[15] ^ a[20]
|
|
||||||
bc1 = a[1] ^ a[6] ^ a[11] ^ a[16] ^ a[21]
|
|
||||||
bc2 = a[2] ^ a[7] ^ a[12] ^ a[17] ^ a[22]
|
|
||||||
bc3 = a[3] ^ a[8] ^ a[13] ^ a[18] ^ a[23]
|
|
||||||
bc4 = a[4] ^ a[9] ^ a[14] ^ a[19] ^ a[24]
|
|
||||||
d0 = bc4 ^ (bc1<<1 | bc1>>63)
|
|
||||||
d1 = bc0 ^ (bc2<<1 | bc2>>63)
|
|
||||||
d2 = bc1 ^ (bc3<<1 | bc3>>63)
|
|
||||||
d3 = bc2 ^ (bc4<<1 | bc4>>63)
|
|
||||||
d4 = bc3 ^ (bc0<<1 | bc0>>63)
|
|
||||||
|
|
||||||
bc0 = a[0] ^ d0
|
|
||||||
t = a[6] ^ d1
|
|
||||||
bc1 = t<<44 | t>>(64-44)
|
|
||||||
t = a[12] ^ d2
|
|
||||||
bc2 = t<<43 | t>>(64-43)
|
|
||||||
t = a[18] ^ d3
|
|
||||||
bc3 = t<<21 | t>>(64-21)
|
|
||||||
t = a[24] ^ d4
|
|
||||||
bc4 = t<<14 | t>>(64-14)
|
|
||||||
a[0] = bc0 ^ (bc2 &^ bc1) ^ rc[i]
|
|
||||||
a[6] = bc1 ^ (bc3 &^ bc2)
|
|
||||||
a[12] = bc2 ^ (bc4 &^ bc3)
|
|
||||||
a[18] = bc3 ^ (bc0 &^ bc4)
|
|
||||||
a[24] = bc4 ^ (bc1 &^ bc0)
|
|
||||||
|
|
||||||
t = a[10] ^ d0
|
|
||||||
bc2 = t<<3 | t>>(64-3)
|
|
||||||
t = a[16] ^ d1
|
|
||||||
bc3 = t<<45 | t>>(64-45)
|
|
||||||
t = a[22] ^ d2
|
|
||||||
bc4 = t<<61 | t>>(64-61)
|
|
||||||
t = a[3] ^ d3
|
|
||||||
bc0 = t<<28 | t>>(64-28)
|
|
||||||
t = a[9] ^ d4
|
|
||||||
bc1 = t<<20 | t>>(64-20)
|
|
||||||
a[10] = bc0 ^ (bc2 &^ bc1)
|
|
||||||
a[16] = bc1 ^ (bc3 &^ bc2)
|
|
||||||
a[22] = bc2 ^ (bc4 &^ bc3)
|
|
||||||
a[3] = bc3 ^ (bc0 &^ bc4)
|
|
||||||
a[9] = bc4 ^ (bc1 &^ bc0)
|
|
||||||
|
|
||||||
t = a[20] ^ d0
|
|
||||||
bc4 = t<<18 | t>>(64-18)
|
|
||||||
t = a[1] ^ d1
|
|
||||||
bc0 = t<<1 | t>>(64-1)
|
|
||||||
t = a[7] ^ d2
|
|
||||||
bc1 = t<<6 | t>>(64-6)
|
|
||||||
t = a[13] ^ d3
|
|
||||||
bc2 = t<<25 | t>>(64-25)
|
|
||||||
t = a[19] ^ d4
|
|
||||||
bc3 = t<<8 | t>>(64-8)
|
|
||||||
a[20] = bc0 ^ (bc2 &^ bc1)
|
|
||||||
a[1] = bc1 ^ (bc3 &^ bc2)
|
|
||||||
a[7] = bc2 ^ (bc4 &^ bc3)
|
|
||||||
a[13] = bc3 ^ (bc0 &^ bc4)
|
|
||||||
a[19] = bc4 ^ (bc1 &^ bc0)
|
|
||||||
|
|
||||||
t = a[5] ^ d0
|
|
||||||
bc1 = t<<36 | t>>(64-36)
|
|
||||||
t = a[11] ^ d1
|
|
||||||
bc2 = t<<10 | t>>(64-10)
|
|
||||||
t = a[17] ^ d2
|
|
||||||
bc3 = t<<15 | t>>(64-15)
|
|
||||||
t = a[23] ^ d3
|
|
||||||
bc4 = t<<56 | t>>(64-56)
|
|
||||||
t = a[4] ^ d4
|
|
||||||
bc0 = t<<27 | t>>(64-27)
|
|
||||||
a[5] = bc0 ^ (bc2 &^ bc1)
|
|
||||||
a[11] = bc1 ^ (bc3 &^ bc2)
|
|
||||||
a[17] = bc2 ^ (bc4 &^ bc3)
|
|
||||||
a[23] = bc3 ^ (bc0 &^ bc4)
|
|
||||||
a[4] = bc4 ^ (bc1 &^ bc0)
|
|
||||||
|
|
||||||
t = a[15] ^ d0
|
|
||||||
bc3 = t<<41 | t>>(64-41)
|
|
||||||
t = a[21] ^ d1
|
|
||||||
bc4 = t<<2 | t>>(64-2)
|
|
||||||
t = a[2] ^ d2
|
|
||||||
bc0 = t<<62 | t>>(64-62)
|
|
||||||
t = a[8] ^ d3
|
|
||||||
bc1 = t<<55 | t>>(64-55)
|
|
||||||
t = a[14] ^ d4
|
|
||||||
bc2 = t<<39 | t>>(64-39)
|
|
||||||
a[15] = bc0 ^ (bc2 &^ bc1)
|
|
||||||
a[21] = bc1 ^ (bc3 &^ bc2)
|
|
||||||
a[2] = bc2 ^ (bc4 &^ bc3)
|
|
||||||
a[8] = bc3 ^ (bc0 &^ bc4)
|
|
||||||
a[14] = bc4 ^ (bc1 &^ bc0)
|
|
||||||
|
|
||||||
// Round 2
|
|
||||||
bc0 = a[0] ^ a[5] ^ a[10] ^ a[15] ^ a[20]
|
|
||||||
bc1 = a[1] ^ a[6] ^ a[11] ^ a[16] ^ a[21]
|
|
||||||
bc2 = a[2] ^ a[7] ^ a[12] ^ a[17] ^ a[22]
|
|
||||||
bc3 = a[3] ^ a[8] ^ a[13] ^ a[18] ^ a[23]
|
|
||||||
bc4 = a[4] ^ a[9] ^ a[14] ^ a[19] ^ a[24]
|
|
||||||
d0 = bc4 ^ (bc1<<1 | bc1>>63)
|
|
||||||
d1 = bc0 ^ (bc2<<1 | bc2>>63)
|
|
||||||
d2 = bc1 ^ (bc3<<1 | bc3>>63)
|
|
||||||
d3 = bc2 ^ (bc4<<1 | bc4>>63)
|
|
||||||
d4 = bc3 ^ (bc0<<1 | bc0>>63)
|
|
||||||
|
|
||||||
bc0 = a[0] ^ d0
|
|
||||||
t = a[16] ^ d1
|
|
||||||
bc1 = t<<44 | t>>(64-44)
|
|
||||||
t = a[7] ^ d2
|
|
||||||
bc2 = t<<43 | t>>(64-43)
|
|
||||||
t = a[23] ^ d3
|
|
||||||
bc3 = t<<21 | t>>(64-21)
|
|
||||||
t = a[14] ^ d4
|
|
||||||
bc4 = t<<14 | t>>(64-14)
|
|
||||||
a[0] = bc0 ^ (bc2 &^ bc1) ^ rc[i+1]
|
|
||||||
a[16] = bc1 ^ (bc3 &^ bc2)
|
|
||||||
a[7] = bc2 ^ (bc4 &^ bc3)
|
|
||||||
a[23] = bc3 ^ (bc0 &^ bc4)
|
|
||||||
a[14] = bc4 ^ (bc1 &^ bc0)
|
|
||||||
|
|
||||||
t = a[20] ^ d0
|
|
||||||
bc2 = t<<3 | t>>(64-3)
|
|
||||||
t = a[11] ^ d1
|
|
||||||
bc3 = t<<45 | t>>(64-45)
|
|
||||||
t = a[2] ^ d2
|
|
||||||
bc4 = t<<61 | t>>(64-61)
|
|
||||||
t = a[18] ^ d3
|
|
||||||
bc0 = t<<28 | t>>(64-28)
|
|
||||||
t = a[9] ^ d4
|
|
||||||
bc1 = t<<20 | t>>(64-20)
|
|
||||||
a[20] = bc0 ^ (bc2 &^ bc1)
|
|
||||||
a[11] = bc1 ^ (bc3 &^ bc2)
|
|
||||||
a[2] = bc2 ^ (bc4 &^ bc3)
|
|
||||||
a[18] = bc3 ^ (bc0 &^ bc4)
|
|
||||||
a[9] = bc4 ^ (bc1 &^ bc0)
|
|
||||||
|
|
||||||
t = a[15] ^ d0
|
|
||||||
bc4 = t<<18 | t>>(64-18)
|
|
||||||
t = a[6] ^ d1
|
|
||||||
bc0 = t<<1 | t>>(64-1)
|
|
||||||
t = a[22] ^ d2
|
|
||||||
bc1 = t<<6 | t>>(64-6)
|
|
||||||
t = a[13] ^ d3
|
|
||||||
bc2 = t<<25 | t>>(64-25)
|
|
||||||
t = a[4] ^ d4
|
|
||||||
bc3 = t<<8 | t>>(64-8)
|
|
||||||
a[15] = bc0 ^ (bc2 &^ bc1)
|
|
||||||
a[6] = bc1 ^ (bc3 &^ bc2)
|
|
||||||
a[22] = bc2 ^ (bc4 &^ bc3)
|
|
||||||
a[13] = bc3 ^ (bc0 &^ bc4)
|
|
||||||
a[4] = bc4 ^ (bc1 &^ bc0)
|
|
||||||
|
|
||||||
t = a[10] ^ d0
|
|
||||||
bc1 = t<<36 | t>>(64-36)
|
|
||||||
t = a[1] ^ d1
|
|
||||||
bc2 = t<<10 | t>>(64-10)
|
|
||||||
t = a[17] ^ d2
|
|
||||||
bc3 = t<<15 | t>>(64-15)
|
|
||||||
t = a[8] ^ d3
|
|
||||||
bc4 = t<<56 | t>>(64-56)
|
|
||||||
t = a[24] ^ d4
|
|
||||||
bc0 = t<<27 | t>>(64-27)
|
|
||||||
a[10] = bc0 ^ (bc2 &^ bc1)
|
|
||||||
a[1] = bc1 ^ (bc3 &^ bc2)
|
|
||||||
a[17] = bc2 ^ (bc4 &^ bc3)
|
|
||||||
a[8] = bc3 ^ (bc0 &^ bc4)
|
|
||||||
a[24] = bc4 ^ (bc1 &^ bc0)
|
|
||||||
|
|
||||||
t = a[5] ^ d0
|
|
||||||
bc3 = t<<41 | t>>(64-41)
|
|
||||||
t = a[21] ^ d1
|
|
||||||
bc4 = t<<2 | t>>(64-2)
|
|
||||||
t = a[12] ^ d2
|
|
||||||
bc0 = t<<62 | t>>(64-62)
|
|
||||||
t = a[3] ^ d3
|
|
||||||
bc1 = t<<55 | t>>(64-55)
|
|
||||||
t = a[19] ^ d4
|
|
||||||
bc2 = t<<39 | t>>(64-39)
|
|
||||||
a[5] = bc0 ^ (bc2 &^ bc1)
|
|
||||||
a[21] = bc1 ^ (bc3 &^ bc2)
|
|
||||||
a[12] = bc2 ^ (bc4 &^ bc3)
|
|
||||||
a[3] = bc3 ^ (bc0 &^ bc4)
|
|
||||||
a[19] = bc4 ^ (bc1 &^ bc0)
|
|
||||||
|
|
||||||
// Round 3
|
|
||||||
bc0 = a[0] ^ a[5] ^ a[10] ^ a[15] ^ a[20]
|
|
||||||
bc1 = a[1] ^ a[6] ^ a[11] ^ a[16] ^ a[21]
|
|
||||||
bc2 = a[2] ^ a[7] ^ a[12] ^ a[17] ^ a[22]
|
|
||||||
bc3 = a[3] ^ a[8] ^ a[13] ^ a[18] ^ a[23]
|
|
||||||
bc4 = a[4] ^ a[9] ^ a[14] ^ a[19] ^ a[24]
|
|
||||||
d0 = bc4 ^ (bc1<<1 | bc1>>63)
|
|
||||||
d1 = bc0 ^ (bc2<<1 | bc2>>63)
|
|
||||||
d2 = bc1 ^ (bc3<<1 | bc3>>63)
|
|
||||||
d3 = bc2 ^ (bc4<<1 | bc4>>63)
|
|
||||||
d4 = bc3 ^ (bc0<<1 | bc0>>63)
|
|
||||||
|
|
||||||
bc0 = a[0] ^ d0
|
|
||||||
t = a[11] ^ d1
|
|
||||||
bc1 = t<<44 | t>>(64-44)
|
|
||||||
t = a[22] ^ d2
|
|
||||||
bc2 = t<<43 | t>>(64-43)
|
|
||||||
t = a[8] ^ d3
|
|
||||||
bc3 = t<<21 | t>>(64-21)
|
|
||||||
t = a[19] ^ d4
|
|
||||||
bc4 = t<<14 | t>>(64-14)
|
|
||||||
a[0] = bc0 ^ (bc2 &^ bc1) ^ rc[i+2]
|
|
||||||
a[11] = bc1 ^ (bc3 &^ bc2)
|
|
||||||
a[22] = bc2 ^ (bc4 &^ bc3)
|
|
||||||
a[8] = bc3 ^ (bc0 &^ bc4)
|
|
||||||
a[19] = bc4 ^ (bc1 &^ bc0)
|
|
||||||
|
|
||||||
t = a[15] ^ d0
|
|
||||||
bc2 = t<<3 | t>>(64-3)
|
|
||||||
t = a[1] ^ d1
|
|
||||||
bc3 = t<<45 | t>>(64-45)
|
|
||||||
t = a[12] ^ d2
|
|
||||||
bc4 = t<<61 | t>>(64-61)
|
|
||||||
t = a[23] ^ d3
|
|
||||||
bc0 = t<<28 | t>>(64-28)
|
|
||||||
t = a[9] ^ d4
|
|
||||||
bc1 = t<<20 | t>>(64-20)
|
|
||||||
a[15] = bc0 ^ (bc2 &^ bc1)
|
|
||||||
a[1] = bc1 ^ (bc3 &^ bc2)
|
|
||||||
a[12] = bc2 ^ (bc4 &^ bc3)
|
|
||||||
a[23] = bc3 ^ (bc0 &^ bc4)
|
|
||||||
a[9] = bc4 ^ (bc1 &^ bc0)
|
|
||||||
|
|
||||||
t = a[5] ^ d0
|
|
||||||
bc4 = t<<18 | t>>(64-18)
|
|
||||||
t = a[16] ^ d1
|
|
||||||
bc0 = t<<1 | t>>(64-1)
|
|
||||||
t = a[2] ^ d2
|
|
||||||
bc1 = t<<6 | t>>(64-6)
|
|
||||||
t = a[13] ^ d3
|
|
||||||
bc2 = t<<25 | t>>(64-25)
|
|
||||||
t = a[24] ^ d4
|
|
||||||
bc3 = t<<8 | t>>(64-8)
|
|
||||||
a[5] = bc0 ^ (bc2 &^ bc1)
|
|
||||||
a[16] = bc1 ^ (bc3 &^ bc2)
|
|
||||||
a[2] = bc2 ^ (bc4 &^ bc3)
|
|
||||||
a[13] = bc3 ^ (bc0 &^ bc4)
|
|
||||||
a[24] = bc4 ^ (bc1 &^ bc0)
|
|
||||||
|
|
||||||
t = a[20] ^ d0
|
|
||||||
bc1 = t<<36 | t>>(64-36)
|
|
||||||
t = a[6] ^ d1
|
|
||||||
bc2 = t<<10 | t>>(64-10)
|
|
||||||
t = a[17] ^ d2
|
|
||||||
bc3 = t<<15 | t>>(64-15)
|
|
||||||
t = a[3] ^ d3
|
|
||||||
bc4 = t<<56 | t>>(64-56)
|
|
||||||
t = a[14] ^ d4
|
|
||||||
bc0 = t<<27 | t>>(64-27)
|
|
||||||
a[20] = bc0 ^ (bc2 &^ bc1)
|
|
||||||
a[6] = bc1 ^ (bc3 &^ bc2)
|
|
||||||
a[17] = bc2 ^ (bc4 &^ bc3)
|
|
||||||
a[3] = bc3 ^ (bc0 &^ bc4)
|
|
||||||
a[14] = bc4 ^ (bc1 &^ bc0)
|
|
||||||
|
|
||||||
t = a[10] ^ d0
|
|
||||||
bc3 = t<<41 | t>>(64-41)
|
|
||||||
t = a[21] ^ d1
|
|
||||||
bc4 = t<<2 | t>>(64-2)
|
|
||||||
t = a[7] ^ d2
|
|
||||||
bc0 = t<<62 | t>>(64-62)
|
|
||||||
t = a[18] ^ d3
|
|
||||||
bc1 = t<<55 | t>>(64-55)
|
|
||||||
t = a[4] ^ d4
|
|
||||||
bc2 = t<<39 | t>>(64-39)
|
|
||||||
a[10] = bc0 ^ (bc2 &^ bc1)
|
|
||||||
a[21] = bc1 ^ (bc3 &^ bc2)
|
|
||||||
a[7] = bc2 ^ (bc4 &^ bc3)
|
|
||||||
a[18] = bc3 ^ (bc0 &^ bc4)
|
|
||||||
a[4] = bc4 ^ (bc1 &^ bc0)
|
|
||||||
|
|
||||||
// Round 4
|
|
||||||
bc0 = a[0] ^ a[5] ^ a[10] ^ a[15] ^ a[20]
|
|
||||||
bc1 = a[1] ^ a[6] ^ a[11] ^ a[16] ^ a[21]
|
|
||||||
bc2 = a[2] ^ a[7] ^ a[12] ^ a[17] ^ a[22]
|
|
||||||
bc3 = a[3] ^ a[8] ^ a[13] ^ a[18] ^ a[23]
|
|
||||||
bc4 = a[4] ^ a[9] ^ a[14] ^ a[19] ^ a[24]
|
|
||||||
d0 = bc4 ^ (bc1<<1 | bc1>>63)
|
|
||||||
d1 = bc0 ^ (bc2<<1 | bc2>>63)
|
|
||||||
d2 = bc1 ^ (bc3<<1 | bc3>>63)
|
|
||||||
d3 = bc2 ^ (bc4<<1 | bc4>>63)
|
|
||||||
d4 = bc3 ^ (bc0<<1 | bc0>>63)
|
|
||||||
|
|
||||||
bc0 = a[0] ^ d0
|
|
||||||
t = a[1] ^ d1
|
|
||||||
bc1 = t<<44 | t>>(64-44)
|
|
||||||
t = a[2] ^ d2
|
|
||||||
bc2 = t<<43 | t>>(64-43)
|
|
||||||
t = a[3] ^ d3
|
|
||||||
bc3 = t<<21 | t>>(64-21)
|
|
||||||
t = a[4] ^ d4
|
|
||||||
bc4 = t<<14 | t>>(64-14)
|
|
||||||
a[0] = bc0 ^ (bc2 &^ bc1) ^ rc[i+3]
|
|
||||||
a[1] = bc1 ^ (bc3 &^ bc2)
|
|
||||||
a[2] = bc2 ^ (bc4 &^ bc3)
|
|
||||||
a[3] = bc3 ^ (bc0 &^ bc4)
|
|
||||||
a[4] = bc4 ^ (bc1 &^ bc0)
|
|
||||||
|
|
||||||
t = a[5] ^ d0
|
|
||||||
bc2 = t<<3 | t>>(64-3)
|
|
||||||
t = a[6] ^ d1
|
|
||||||
bc3 = t<<45 | t>>(64-45)
|
|
||||||
t = a[7] ^ d2
|
|
||||||
bc4 = t<<61 | t>>(64-61)
|
|
||||||
t = a[8] ^ d3
|
|
||||||
bc0 = t<<28 | t>>(64-28)
|
|
||||||
t = a[9] ^ d4
|
|
||||||
bc1 = t<<20 | t>>(64-20)
|
|
||||||
a[5] = bc0 ^ (bc2 &^ bc1)
|
|
||||||
a[6] = bc1 ^ (bc3 &^ bc2)
|
|
||||||
a[7] = bc2 ^ (bc4 &^ bc3)
|
|
||||||
a[8] = bc3 ^ (bc0 &^ bc4)
|
|
||||||
a[9] = bc4 ^ (bc1 &^ bc0)
|
|
||||||
|
|
||||||
t = a[10] ^ d0
|
|
||||||
bc4 = t<<18 | t>>(64-18)
|
|
||||||
t = a[11] ^ d1
|
|
||||||
bc0 = t<<1 | t>>(64-1)
|
|
||||||
t = a[12] ^ d2
|
|
||||||
bc1 = t<<6 | t>>(64-6)
|
|
||||||
t = a[13] ^ d3
|
|
||||||
bc2 = t<<25 | t>>(64-25)
|
|
||||||
t = a[14] ^ d4
|
|
||||||
bc3 = t<<8 | t>>(64-8)
|
|
||||||
a[10] = bc0 ^ (bc2 &^ bc1)
|
|
||||||
a[11] = bc1 ^ (bc3 &^ bc2)
|
|
||||||
a[12] = bc2 ^ (bc4 &^ bc3)
|
|
||||||
a[13] = bc3 ^ (bc0 &^ bc4)
|
|
||||||
a[14] = bc4 ^ (bc1 &^ bc0)
|
|
||||||
|
|
||||||
t = a[15] ^ d0
|
|
||||||
bc1 = t<<36 | t>>(64-36)
|
|
||||||
t = a[16] ^ d1
|
|
||||||
bc2 = t<<10 | t>>(64-10)
|
|
||||||
t = a[17] ^ d2
|
|
||||||
bc3 = t<<15 | t>>(64-15)
|
|
||||||
t = a[18] ^ d3
|
|
||||||
bc4 = t<<56 | t>>(64-56)
|
|
||||||
t = a[19] ^ d4
|
|
||||||
bc0 = t<<27 | t>>(64-27)
|
|
||||||
a[15] = bc0 ^ (bc2 &^ bc1)
|
|
||||||
a[16] = bc1 ^ (bc3 &^ bc2)
|
|
||||||
a[17] = bc2 ^ (bc4 &^ bc3)
|
|
||||||
a[18] = bc3 ^ (bc0 &^ bc4)
|
|
||||||
a[19] = bc4 ^ (bc1 &^ bc0)
|
|
||||||
|
|
||||||
t = a[20] ^ d0
|
|
||||||
bc3 = t<<41 | t>>(64-41)
|
|
||||||
t = a[21] ^ d1
|
|
||||||
bc4 = t<<2 | t>>(64-2)
|
|
||||||
t = a[22] ^ d2
|
|
||||||
bc0 = t<<62 | t>>(64-62)
|
|
||||||
t = a[23] ^ d3
|
|
||||||
bc1 = t<<55 | t>>(64-55)
|
|
||||||
t = a[24] ^ d4
|
|
||||||
bc2 = t<<39 | t>>(64-39)
|
|
||||||
a[20] = bc0 ^ (bc2 &^ bc1)
|
|
||||||
a[21] = bc1 ^ (bc3 &^ bc2)
|
|
||||||
a[22] = bc2 ^ (bc4 &^ bc3)
|
|
||||||
a[23] = bc3 ^ (bc0 &^ bc4)
|
|
||||||
a[24] = bc4 ^ (bc1 &^ bc0)
|
|
||||||
}
|
|
||||||
}
|
|
13
vendor/golang.org/x/crypto/sha3/keccakf_amd64.go
generated
vendored
13
vendor/golang.org/x/crypto/sha3/keccakf_amd64.go
generated
vendored
@ -1,13 +0,0 @@
|
|||||||
// Copyright 2015 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build amd64,!appengine,!gccgo
|
|
||||||
|
|
||||||
package sha3
|
|
||||||
|
|
||||||
// This function is implemented in keccakf_amd64.s.
|
|
||||||
|
|
||||||
//go:noescape
|
|
||||||
|
|
||||||
func keccakF1600(a *[25]uint64)
|
|
390
vendor/golang.org/x/crypto/sha3/keccakf_amd64.s
generated
vendored
390
vendor/golang.org/x/crypto/sha3/keccakf_amd64.s
generated
vendored
@ -1,390 +0,0 @@
|
|||||||
// Copyright 2015 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build amd64,!appengine,!gccgo
|
|
||||||
|
|
||||||
// This code was translated into a form compatible with 6a from the public
|
|
||||||
// domain sources at https://github.com/gvanas/KeccakCodePackage
|
|
||||||
|
|
||||||
// Offsets in state
|
|
||||||
#define _ba (0*8)
|
|
||||||
#define _be (1*8)
|
|
||||||
#define _bi (2*8)
|
|
||||||
#define _bo (3*8)
|
|
||||||
#define _bu (4*8)
|
|
||||||
#define _ga (5*8)
|
|
||||||
#define _ge (6*8)
|
|
||||||
#define _gi (7*8)
|
|
||||||
#define _go (8*8)
|
|
||||||
#define _gu (9*8)
|
|
||||||
#define _ka (10*8)
|
|
||||||
#define _ke (11*8)
|
|
||||||
#define _ki (12*8)
|
|
||||||
#define _ko (13*8)
|
|
||||||
#define _ku (14*8)
|
|
||||||
#define _ma (15*8)
|
|
||||||
#define _me (16*8)
|
|
||||||
#define _mi (17*8)
|
|
||||||
#define _mo (18*8)
|
|
||||||
#define _mu (19*8)
|
|
||||||
#define _sa (20*8)
|
|
||||||
#define _se (21*8)
|
|
||||||
#define _si (22*8)
|
|
||||||
#define _so (23*8)
|
|
||||||
#define _su (24*8)
|
|
||||||
|
|
||||||
// Temporary registers
|
|
||||||
#define rT1 AX
|
|
||||||
|
|
||||||
// Round vars
|
|
||||||
#define rpState DI
|
|
||||||
#define rpStack SP
|
|
||||||
|
|
||||||
#define rDa BX
|
|
||||||
#define rDe CX
|
|
||||||
#define rDi DX
|
|
||||||
#define rDo R8
|
|
||||||
#define rDu R9
|
|
||||||
|
|
||||||
#define rBa R10
|
|
||||||
#define rBe R11
|
|
||||||
#define rBi R12
|
|
||||||
#define rBo R13
|
|
||||||
#define rBu R14
|
|
||||||
|
|
||||||
#define rCa SI
|
|
||||||
#define rCe BP
|
|
||||||
#define rCi rBi
|
|
||||||
#define rCo rBo
|
|
||||||
#define rCu R15
|
|
||||||
|
|
||||||
#define MOVQ_RBI_RCE MOVQ rBi, rCe
|
|
||||||
#define XORQ_RT1_RCA XORQ rT1, rCa
|
|
||||||
#define XORQ_RT1_RCE XORQ rT1, rCe
|
|
||||||
#define XORQ_RBA_RCU XORQ rBa, rCu
|
|
||||||
#define XORQ_RBE_RCU XORQ rBe, rCu
|
|
||||||
#define XORQ_RDU_RCU XORQ rDu, rCu
|
|
||||||
#define XORQ_RDA_RCA XORQ rDa, rCa
|
|
||||||
#define XORQ_RDE_RCE XORQ rDe, rCe
|
|
||||||
|
|
||||||
#define mKeccakRound(iState, oState, rc, B_RBI_RCE, G_RT1_RCA, G_RT1_RCE, G_RBA_RCU, K_RT1_RCA, K_RT1_RCE, K_RBA_RCU, M_RT1_RCA, M_RT1_RCE, M_RBE_RCU, S_RDU_RCU, S_RDA_RCA, S_RDE_RCE) \
|
|
||||||
/* Prepare round */ \
|
|
||||||
MOVQ rCe, rDa; \
|
|
||||||
ROLQ $1, rDa; \
|
|
||||||
\
|
|
||||||
MOVQ _bi(iState), rCi; \
|
|
||||||
XORQ _gi(iState), rDi; \
|
|
||||||
XORQ rCu, rDa; \
|
|
||||||
XORQ _ki(iState), rCi; \
|
|
||||||
XORQ _mi(iState), rDi; \
|
|
||||||
XORQ rDi, rCi; \
|
|
||||||
\
|
|
||||||
MOVQ rCi, rDe; \
|
|
||||||
ROLQ $1, rDe; \
|
|
||||||
\
|
|
||||||
MOVQ _bo(iState), rCo; \
|
|
||||||
XORQ _go(iState), rDo; \
|
|
||||||
XORQ rCa, rDe; \
|
|
||||||
XORQ _ko(iState), rCo; \
|
|
||||||
XORQ _mo(iState), rDo; \
|
|
||||||
XORQ rDo, rCo; \
|
|
||||||
\
|
|
||||||
MOVQ rCo, rDi; \
|
|
||||||
ROLQ $1, rDi; \
|
|
||||||
\
|
|
||||||
MOVQ rCu, rDo; \
|
|
||||||
XORQ rCe, rDi; \
|
|
||||||
ROLQ $1, rDo; \
|
|
||||||
\
|
|
||||||
MOVQ rCa, rDu; \
|
|
||||||
XORQ rCi, rDo; \
|
|
||||||
ROLQ $1, rDu; \
|
|
||||||
\
|
|
||||||
/* Result b */ \
|
|
||||||
MOVQ _ba(iState), rBa; \
|
|
||||||
MOVQ _ge(iState), rBe; \
|
|
||||||
XORQ rCo, rDu; \
|
|
||||||
MOVQ _ki(iState), rBi; \
|
|
||||||
MOVQ _mo(iState), rBo; \
|
|
||||||
MOVQ _su(iState), rBu; \
|
|
||||||
XORQ rDe, rBe; \
|
|
||||||
ROLQ $44, rBe; \
|
|
||||||
XORQ rDi, rBi; \
|
|
||||||
XORQ rDa, rBa; \
|
|
||||||
ROLQ $43, rBi; \
|
|
||||||
\
|
|
||||||
MOVQ rBe, rCa; \
|
|
||||||
MOVQ rc, rT1; \
|
|
||||||
ORQ rBi, rCa; \
|
|
||||||
XORQ rBa, rT1; \
|
|
||||||
XORQ rT1, rCa; \
|
|
||||||
MOVQ rCa, _ba(oState); \
|
|
||||||
\
|
|
||||||
XORQ rDu, rBu; \
|
|
||||||
ROLQ $14, rBu; \
|
|
||||||
MOVQ rBa, rCu; \
|
|
||||||
ANDQ rBe, rCu; \
|
|
||||||
XORQ rBu, rCu; \
|
|
||||||
MOVQ rCu, _bu(oState); \
|
|
||||||
\
|
|
||||||
XORQ rDo, rBo; \
|
|
||||||
ROLQ $21, rBo; \
|
|
||||||
MOVQ rBo, rT1; \
|
|
||||||
ANDQ rBu, rT1; \
|
|
||||||
XORQ rBi, rT1; \
|
|
||||||
MOVQ rT1, _bi(oState); \
|
|
||||||
\
|
|
||||||
NOTQ rBi; \
|
|
||||||
ORQ rBa, rBu; \
|
|
||||||
ORQ rBo, rBi; \
|
|
||||||
XORQ rBo, rBu; \
|
|
||||||
XORQ rBe, rBi; \
|
|
||||||
MOVQ rBu, _bo(oState); \
|
|
||||||
MOVQ rBi, _be(oState); \
|
|
||||||
B_RBI_RCE; \
|
|
||||||
\
|
|
||||||
/* Result g */ \
|
|
||||||
MOVQ _gu(iState), rBe; \
|
|
||||||
XORQ rDu, rBe; \
|
|
||||||
MOVQ _ka(iState), rBi; \
|
|
||||||
ROLQ $20, rBe; \
|
|
||||||
XORQ rDa, rBi; \
|
|
||||||
ROLQ $3, rBi; \
|
|
||||||
MOVQ _bo(iState), rBa; \
|
|
||||||
MOVQ rBe, rT1; \
|
|
||||||
ORQ rBi, rT1; \
|
|
||||||
XORQ rDo, rBa; \
|
|
||||||
MOVQ _me(iState), rBo; \
|
|
||||||
MOVQ _si(iState), rBu; \
|
|
||||||
ROLQ $28, rBa; \
|
|
||||||
XORQ rBa, rT1; \
|
|
||||||
MOVQ rT1, _ga(oState); \
|
|
||||||
G_RT1_RCA; \
|
|
||||||
\
|
|
||||||
XORQ rDe, rBo; \
|
|
||||||
ROLQ $45, rBo; \
|
|
||||||
MOVQ rBi, rT1; \
|
|
||||||
ANDQ rBo, rT1; \
|
|
||||||
XORQ rBe, rT1; \
|
|
||||||
MOVQ rT1, _ge(oState); \
|
|
||||||
G_RT1_RCE; \
|
|
||||||
\
|
|
||||||
XORQ rDi, rBu; \
|
|
||||||
ROLQ $61, rBu; \
|
|
||||||
MOVQ rBu, rT1; \
|
|
||||||
ORQ rBa, rT1; \
|
|
||||||
XORQ rBo, rT1; \
|
|
||||||
MOVQ rT1, _go(oState); \
|
|
||||||
\
|
|
||||||
ANDQ rBe, rBa; \
|
|
||||||
XORQ rBu, rBa; \
|
|
||||||
MOVQ rBa, _gu(oState); \
|
|
||||||
NOTQ rBu; \
|
|
||||||
G_RBA_RCU; \
|
|
||||||
\
|
|
||||||
ORQ rBu, rBo; \
|
|
||||||
XORQ rBi, rBo; \
|
|
||||||
MOVQ rBo, _gi(oState); \
|
|
||||||
\
|
|
||||||
/* Result k */ \
|
|
||||||
MOVQ _be(iState), rBa; \
|
|
||||||
MOVQ _gi(iState), rBe; \
|
|
||||||
MOVQ _ko(iState), rBi; \
|
|
||||||
MOVQ _mu(iState), rBo; \
|
|
||||||
MOVQ _sa(iState), rBu; \
|
|
||||||
XORQ rDi, rBe; \
|
|
||||||
ROLQ $6, rBe; \
|
|
||||||
XORQ rDo, rBi; \
|
|
||||||
ROLQ $25, rBi; \
|
|
||||||
MOVQ rBe, rT1; \
|
|
||||||
ORQ rBi, rT1; \
|
|
||||||
XORQ rDe, rBa; \
|
|
||||||
ROLQ $1, rBa; \
|
|
||||||
XORQ rBa, rT1; \
|
|
||||||
MOVQ rT1, _ka(oState); \
|
|
||||||
K_RT1_RCA; \
|
|
||||||
\
|
|
||||||
XORQ rDu, rBo; \
|
|
||||||
ROLQ $8, rBo; \
|
|
||||||
MOVQ rBi, rT1; \
|
|
||||||
ANDQ rBo, rT1; \
|
|
||||||
XORQ rBe, rT1; \
|
|
||||||
MOVQ rT1, _ke(oState); \
|
|
||||||
K_RT1_RCE; \
|
|
||||||
\
|
|
||||||
XORQ rDa, rBu; \
|
|
||||||
ROLQ $18, rBu; \
|
|
||||||
NOTQ rBo; \
|
|
||||||
MOVQ rBo, rT1; \
|
|
||||||
ANDQ rBu, rT1; \
|
|
||||||
XORQ rBi, rT1; \
|
|
||||||
MOVQ rT1, _ki(oState); \
|
|
||||||
\
|
|
||||||
MOVQ rBu, rT1; \
|
|
||||||
ORQ rBa, rT1; \
|
|
||||||
XORQ rBo, rT1; \
|
|
||||||
MOVQ rT1, _ko(oState); \
|
|
||||||
\
|
|
||||||
ANDQ rBe, rBa; \
|
|
||||||
XORQ rBu, rBa; \
|
|
||||||
MOVQ rBa, _ku(oState); \
|
|
||||||
K_RBA_RCU; \
|
|
||||||
\
|
|
||||||
/* Result m */ \
|
|
||||||
MOVQ _ga(iState), rBe; \
|
|
||||||
XORQ rDa, rBe; \
|
|
||||||
MOVQ _ke(iState), rBi; \
|
|
||||||
ROLQ $36, rBe; \
|
|
||||||
XORQ rDe, rBi; \
|
|
||||||
MOVQ _bu(iState), rBa; \
|
|
||||||
ROLQ $10, rBi; \
|
|
||||||
MOVQ rBe, rT1; \
|
|
||||||
MOVQ _mi(iState), rBo; \
|
|
||||||
ANDQ rBi, rT1; \
|
|
||||||
XORQ rDu, rBa; \
|
|
||||||
MOVQ _so(iState), rBu; \
|
|
||||||
ROLQ $27, rBa; \
|
|
||||||
XORQ rBa, rT1; \
|
|
||||||
MOVQ rT1, _ma(oState); \
|
|
||||||
M_RT1_RCA; \
|
|
||||||
\
|
|
||||||
XORQ rDi, rBo; \
|
|
||||||
ROLQ $15, rBo; \
|
|
||||||
MOVQ rBi, rT1; \
|
|
||||||
ORQ rBo, rT1; \
|
|
||||||
XORQ rBe, rT1; \
|
|
||||||
MOVQ rT1, _me(oState); \
|
|
||||||
M_RT1_RCE; \
|
|
||||||
\
|
|
||||||
XORQ rDo, rBu; \
|
|
||||||
ROLQ $56, rBu; \
|
|
||||||
NOTQ rBo; \
|
|
||||||
MOVQ rBo, rT1; \
|
|
||||||
ORQ rBu, rT1; \
|
|
||||||
XORQ rBi, rT1; \
|
|
||||||
MOVQ rT1, _mi(oState); \
|
|
||||||
\
|
|
||||||
ORQ rBa, rBe; \
|
|
||||||
XORQ rBu, rBe; \
|
|
||||||
MOVQ rBe, _mu(oState); \
|
|
||||||
\
|
|
||||||
ANDQ rBa, rBu; \
|
|
||||||
XORQ rBo, rBu; \
|
|
||||||
MOVQ rBu, _mo(oState); \
|
|
||||||
M_RBE_RCU; \
|
|
||||||
\
|
|
||||||
/* Result s */ \
|
|
||||||
MOVQ _bi(iState), rBa; \
|
|
||||||
MOVQ _go(iState), rBe; \
|
|
||||||
MOVQ _ku(iState), rBi; \
|
|
||||||
XORQ rDi, rBa; \
|
|
||||||
MOVQ _ma(iState), rBo; \
|
|
||||||
ROLQ $62, rBa; \
|
|
||||||
XORQ rDo, rBe; \
|
|
||||||
MOVQ _se(iState), rBu; \
|
|
||||||
ROLQ $55, rBe; \
|
|
||||||
\
|
|
||||||
XORQ rDu, rBi; \
|
|
||||||
MOVQ rBa, rDu; \
|
|
||||||
XORQ rDe, rBu; \
|
|
||||||
ROLQ $2, rBu; \
|
|
||||||
ANDQ rBe, rDu; \
|
|
||||||
XORQ rBu, rDu; \
|
|
||||||
MOVQ rDu, _su(oState); \
|
|
||||||
\
|
|
||||||
ROLQ $39, rBi; \
|
|
||||||
S_RDU_RCU; \
|
|
||||||
NOTQ rBe; \
|
|
||||||
XORQ rDa, rBo; \
|
|
||||||
MOVQ rBe, rDa; \
|
|
||||||
ANDQ rBi, rDa; \
|
|
||||||
XORQ rBa, rDa; \
|
|
||||||
MOVQ rDa, _sa(oState); \
|
|
||||||
S_RDA_RCA; \
|
|
||||||
\
|
|
||||||
ROLQ $41, rBo; \
|
|
||||||
MOVQ rBi, rDe; \
|
|
||||||
ORQ rBo, rDe; \
|
|
||||||
XORQ rBe, rDe; \
|
|
||||||
MOVQ rDe, _se(oState); \
|
|
||||||
S_RDE_RCE; \
|
|
||||||
\
|
|
||||||
MOVQ rBo, rDi; \
|
|
||||||
MOVQ rBu, rDo; \
|
|
||||||
ANDQ rBu, rDi; \
|
|
||||||
ORQ rBa, rDo; \
|
|
||||||
XORQ rBi, rDi; \
|
|
||||||
XORQ rBo, rDo; \
|
|
||||||
MOVQ rDi, _si(oState); \
|
|
||||||
MOVQ rDo, _so(oState) \
|
|
||||||
|
|
||||||
// func keccakF1600(state *[25]uint64)
|
|
||||||
TEXT ·keccakF1600(SB), 0, $200-8
|
|
||||||
MOVQ state+0(FP), rpState
|
|
||||||
|
|
||||||
// Convert the user state into an internal state
|
|
||||||
NOTQ _be(rpState)
|
|
||||||
NOTQ _bi(rpState)
|
|
||||||
NOTQ _go(rpState)
|
|
||||||
NOTQ _ki(rpState)
|
|
||||||
NOTQ _mi(rpState)
|
|
||||||
NOTQ _sa(rpState)
|
|
||||||
|
|
||||||
// Execute the KeccakF permutation
|
|
||||||
MOVQ _ba(rpState), rCa
|
|
||||||
MOVQ _be(rpState), rCe
|
|
||||||
MOVQ _bu(rpState), rCu
|
|
||||||
|
|
||||||
XORQ _ga(rpState), rCa
|
|
||||||
XORQ _ge(rpState), rCe
|
|
||||||
XORQ _gu(rpState), rCu
|
|
||||||
|
|
||||||
XORQ _ka(rpState), rCa
|
|
||||||
XORQ _ke(rpState), rCe
|
|
||||||
XORQ _ku(rpState), rCu
|
|
||||||
|
|
||||||
XORQ _ma(rpState), rCa
|
|
||||||
XORQ _me(rpState), rCe
|
|
||||||
XORQ _mu(rpState), rCu
|
|
||||||
|
|
||||||
XORQ _sa(rpState), rCa
|
|
||||||
XORQ _se(rpState), rCe
|
|
||||||
MOVQ _si(rpState), rDi
|
|
||||||
MOVQ _so(rpState), rDo
|
|
||||||
XORQ _su(rpState), rCu
|
|
||||||
|
|
||||||
mKeccakRound(rpState, rpStack, $0x0000000000000001, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
|
|
||||||
mKeccakRound(rpStack, rpState, $0x0000000000008082, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
|
|
||||||
mKeccakRound(rpState, rpStack, $0x800000000000808a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
|
|
||||||
mKeccakRound(rpStack, rpState, $0x8000000080008000, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
|
|
||||||
mKeccakRound(rpState, rpStack, $0x000000000000808b, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
|
|
||||||
mKeccakRound(rpStack, rpState, $0x0000000080000001, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
|
|
||||||
mKeccakRound(rpState, rpStack, $0x8000000080008081, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
|
|
||||||
mKeccakRound(rpStack, rpState, $0x8000000000008009, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
|
|
||||||
mKeccakRound(rpState, rpStack, $0x000000000000008a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
|
|
||||||
mKeccakRound(rpStack, rpState, $0x0000000000000088, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
|
|
||||||
mKeccakRound(rpState, rpStack, $0x0000000080008009, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
|
|
||||||
mKeccakRound(rpStack, rpState, $0x000000008000000a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
|
|
||||||
mKeccakRound(rpState, rpStack, $0x000000008000808b, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
|
|
||||||
mKeccakRound(rpStack, rpState, $0x800000000000008b, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
|
|
||||||
mKeccakRound(rpState, rpStack, $0x8000000000008089, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
|
|
||||||
mKeccakRound(rpStack, rpState, $0x8000000000008003, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
|
|
||||||
mKeccakRound(rpState, rpStack, $0x8000000000008002, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
|
|
||||||
mKeccakRound(rpStack, rpState, $0x8000000000000080, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
|
|
||||||
mKeccakRound(rpState, rpStack, $0x000000000000800a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
|
|
||||||
mKeccakRound(rpStack, rpState, $0x800000008000000a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
|
|
||||||
mKeccakRound(rpState, rpStack, $0x8000000080008081, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
|
|
||||||
mKeccakRound(rpStack, rpState, $0x8000000000008080, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
|
|
||||||
mKeccakRound(rpState, rpStack, $0x0000000080000001, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE)
|
|
||||||
mKeccakRound(rpStack, rpState, $0x8000000080008008, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP)
|
|
||||||
|
|
||||||
// Revert the internal state to the user state
|
|
||||||
NOTQ _be(rpState)
|
|
||||||
NOTQ _bi(rpState)
|
|
||||||
NOTQ _go(rpState)
|
|
||||||
NOTQ _ki(rpState)
|
|
||||||
NOTQ _mi(rpState)
|
|
||||||
NOTQ _sa(rpState)
|
|
||||||
|
|
||||||
RET
|
|
18
vendor/golang.org/x/crypto/sha3/register.go
generated
vendored
18
vendor/golang.org/x/crypto/sha3/register.go
generated
vendored
@ -1,18 +0,0 @@
|
|||||||
// Copyright 2014 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build go1.4
|
|
||||||
|
|
||||||
package sha3
|
|
||||||
|
|
||||||
import (
|
|
||||||
"crypto"
|
|
||||||
)
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
crypto.RegisterHash(crypto.SHA3_224, New224)
|
|
||||||
crypto.RegisterHash(crypto.SHA3_256, New256)
|
|
||||||
crypto.RegisterHash(crypto.SHA3_384, New384)
|
|
||||||
crypto.RegisterHash(crypto.SHA3_512, New512)
|
|
||||||
}
|
|
193
vendor/golang.org/x/crypto/sha3/sha3.go
generated
vendored
193
vendor/golang.org/x/crypto/sha3/sha3.go
generated
vendored
@ -1,193 +0,0 @@
|
|||||||
// Copyright 2014 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 sha3
|
|
||||||
|
|
||||||
// spongeDirection indicates the direction bytes are flowing through the sponge.
|
|
||||||
type spongeDirection int
|
|
||||||
|
|
||||||
const (
|
|
||||||
// spongeAbsorbing indicates that the sponge is absorbing input.
|
|
||||||
spongeAbsorbing spongeDirection = iota
|
|
||||||
// spongeSqueezing indicates that the sponge is being squeezed.
|
|
||||||
spongeSqueezing
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
// maxRate is the maximum size of the internal buffer. SHAKE-256
|
|
||||||
// currently needs the largest buffer.
|
|
||||||
maxRate = 168
|
|
||||||
)
|
|
||||||
|
|
||||||
type state struct {
|
|
||||||
// Generic sponge components.
|
|
||||||
a [25]uint64 // main state of the hash
|
|
||||||
buf []byte // points into storage
|
|
||||||
rate int // the number of bytes of state to use
|
|
||||||
|
|
||||||
// dsbyte contains the "domain separation" bits and the first bit of
|
|
||||||
// the padding. Sections 6.1 and 6.2 of [1] separate the outputs of the
|
|
||||||
// SHA-3 and SHAKE functions by appending bitstrings to the message.
|
|
||||||
// Using a little-endian bit-ordering convention, these are "01" for SHA-3
|
|
||||||
// and "1111" for SHAKE, or 00000010b and 00001111b, respectively. Then the
|
|
||||||
// padding rule from section 5.1 is applied to pad the message to a multiple
|
|
||||||
// of the rate, which involves adding a "1" bit, zero or more "0" bits, and
|
|
||||||
// a final "1" bit. We merge the first "1" bit from the padding into dsbyte,
|
|
||||||
// giving 00000110b (0x06) and 00011111b (0x1f).
|
|
||||||
// [1] http://csrc.nist.gov/publications/drafts/fips-202/fips_202_draft.pdf
|
|
||||||
// "Draft FIPS 202: SHA-3 Standard: Permutation-Based Hash and
|
|
||||||
// Extendable-Output Functions (May 2014)"
|
|
||||||
dsbyte byte
|
|
||||||
|
|
||||||
storage storageBuf
|
|
||||||
|
|
||||||
// Specific to SHA-3 and SHAKE.
|
|
||||||
outputLen int // the default output size in bytes
|
|
||||||
state spongeDirection // whether the sponge is absorbing or squeezing
|
|
||||||
}
|
|
||||||
|
|
||||||
// BlockSize returns the rate of sponge underlying this hash function.
|
|
||||||
func (d *state) BlockSize() int { return d.rate }
|
|
||||||
|
|
||||||
// Size returns the output size of the hash function in bytes.
|
|
||||||
func (d *state) Size() int { return d.outputLen }
|
|
||||||
|
|
||||||
// Reset clears the internal state by zeroing the sponge state and
|
|
||||||
// the byte buffer, and setting Sponge.state to absorbing.
|
|
||||||
func (d *state) Reset() {
|
|
||||||
// Zero the permutation's state.
|
|
||||||
for i := range d.a {
|
|
||||||
d.a[i] = 0
|
|
||||||
}
|
|
||||||
d.state = spongeAbsorbing
|
|
||||||
d.buf = d.storage.asBytes()[:0]
|
|
||||||
}
|
|
||||||
|
|
||||||
func (d *state) clone() *state {
|
|
||||||
ret := *d
|
|
||||||
if ret.state == spongeAbsorbing {
|
|
||||||
ret.buf = ret.storage.asBytes()[:len(ret.buf)]
|
|
||||||
} else {
|
|
||||||
ret.buf = ret.storage.asBytes()[d.rate-cap(d.buf) : d.rate]
|
|
||||||
}
|
|
||||||
|
|
||||||
return &ret
|
|
||||||
}
|
|
||||||
|
|
||||||
// permute applies the KeccakF-1600 permutation. It handles
|
|
||||||
// any input-output buffering.
|
|
||||||
func (d *state) permute() {
|
|
||||||
switch d.state {
|
|
||||||
case spongeAbsorbing:
|
|
||||||
// If we're absorbing, we need to xor the input into the state
|
|
||||||
// before applying the permutation.
|
|
||||||
xorIn(d, d.buf)
|
|
||||||
d.buf = d.storage.asBytes()[:0]
|
|
||||||
keccakF1600(&d.a)
|
|
||||||
case spongeSqueezing:
|
|
||||||
// If we're squeezing, we need to apply the permutatin before
|
|
||||||
// copying more output.
|
|
||||||
keccakF1600(&d.a)
|
|
||||||
d.buf = d.storage.asBytes()[:d.rate]
|
|
||||||
copyOut(d, d.buf)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// pads appends the domain separation bits in dsbyte, applies
|
|
||||||
// the multi-bitrate 10..1 padding rule, and permutes the state.
|
|
||||||
func (d *state) padAndPermute(dsbyte byte) {
|
|
||||||
if d.buf == nil {
|
|
||||||
d.buf = d.storage.asBytes()[:0]
|
|
||||||
}
|
|
||||||
// Pad with this instance's domain-separator bits. We know that there's
|
|
||||||
// at least one byte of space in d.buf because, if it were full,
|
|
||||||
// permute would have been called to empty it. dsbyte also contains the
|
|
||||||
// first one bit for the padding. See the comment in the state struct.
|
|
||||||
d.buf = append(d.buf, dsbyte)
|
|
||||||
zerosStart := len(d.buf)
|
|
||||||
d.buf = d.storage.asBytes()[:d.rate]
|
|
||||||
for i := zerosStart; i < d.rate; i++ {
|
|
||||||
d.buf[i] = 0
|
|
||||||
}
|
|
||||||
// This adds the final one bit for the padding. Because of the way that
|
|
||||||
// bits are numbered from the LSB upwards, the final bit is the MSB of
|
|
||||||
// the last byte.
|
|
||||||
d.buf[d.rate-1] ^= 0x80
|
|
||||||
// Apply the permutation
|
|
||||||
d.permute()
|
|
||||||
d.state = spongeSqueezing
|
|
||||||
d.buf = d.storage.asBytes()[:d.rate]
|
|
||||||
copyOut(d, d.buf)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Write absorbs more data into the hash's state. It produces an error
|
|
||||||
// if more data is written to the ShakeHash after writing
|
|
||||||
func (d *state) Write(p []byte) (written int, err error) {
|
|
||||||
if d.state != spongeAbsorbing {
|
|
||||||
panic("sha3: write to sponge after read")
|
|
||||||
}
|
|
||||||
if d.buf == nil {
|
|
||||||
d.buf = d.storage.asBytes()[:0]
|
|
||||||
}
|
|
||||||
written = len(p)
|
|
||||||
|
|
||||||
for len(p) > 0 {
|
|
||||||
if len(d.buf) == 0 && len(p) >= d.rate {
|
|
||||||
// The fast path; absorb a full "rate" bytes of input and apply the permutation.
|
|
||||||
xorIn(d, p[:d.rate])
|
|
||||||
p = p[d.rate:]
|
|
||||||
keccakF1600(&d.a)
|
|
||||||
} else {
|
|
||||||
// The slow path; buffer the input until we can fill the sponge, and then xor it in.
|
|
||||||
todo := d.rate - len(d.buf)
|
|
||||||
if todo > len(p) {
|
|
||||||
todo = len(p)
|
|
||||||
}
|
|
||||||
d.buf = append(d.buf, p[:todo]...)
|
|
||||||
p = p[todo:]
|
|
||||||
|
|
||||||
// If the sponge is full, apply the permutation.
|
|
||||||
if len(d.buf) == d.rate {
|
|
||||||
d.permute()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Read squeezes an arbitrary number of bytes from the sponge.
|
|
||||||
func (d *state) Read(out []byte) (n int, err error) {
|
|
||||||
// If we're still absorbing, pad and apply the permutation.
|
|
||||||
if d.state == spongeAbsorbing {
|
|
||||||
d.padAndPermute(d.dsbyte)
|
|
||||||
}
|
|
||||||
|
|
||||||
n = len(out)
|
|
||||||
|
|
||||||
// Now, do the squeezing.
|
|
||||||
for len(out) > 0 {
|
|
||||||
n := copy(out, d.buf)
|
|
||||||
d.buf = d.buf[n:]
|
|
||||||
out = out[n:]
|
|
||||||
|
|
||||||
// Apply the permutation if we've squeezed the sponge dry.
|
|
||||||
if len(d.buf) == 0 {
|
|
||||||
d.permute()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sum applies padding to the hash state and then squeezes out the desired
|
|
||||||
// number of output bytes.
|
|
||||||
func (d *state) Sum(in []byte) []byte {
|
|
||||||
// Make a copy of the original hash so that caller can keep writing
|
|
||||||
// and summing.
|
|
||||||
dup := d.clone()
|
|
||||||
hash := make([]byte, dup.outputLen)
|
|
||||||
dup.Read(hash)
|
|
||||||
return append(in, hash...)
|
|
||||||
}
|
|
284
vendor/golang.org/x/crypto/sha3/sha3_s390x.go
generated
vendored
284
vendor/golang.org/x/crypto/sha3/sha3_s390x.go
generated
vendored
@ -1,284 +0,0 @@
|
|||||||
// Copyright 2017 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build !gccgo,!appengine
|
|
||||||
|
|
||||||
package sha3
|
|
||||||
|
|
||||||
// This file contains code for using the 'compute intermediate
|
|
||||||
// message digest' (KIMD) and 'compute last message digest' (KLMD)
|
|
||||||
// instructions to compute SHA-3 and SHAKE hashes on IBM Z.
|
|
||||||
|
|
||||||
import (
|
|
||||||
"hash"
|
|
||||||
|
|
||||||
"golang.org/x/sys/cpu"
|
|
||||||
)
|
|
||||||
|
|
||||||
// codes represent 7-bit KIMD/KLMD function codes as defined in
|
|
||||||
// the Principles of Operation.
|
|
||||||
type code uint64
|
|
||||||
|
|
||||||
const (
|
|
||||||
// function codes for KIMD/KLMD
|
|
||||||
sha3_224 code = 32
|
|
||||||
sha3_256 = 33
|
|
||||||
sha3_384 = 34
|
|
||||||
sha3_512 = 35
|
|
||||||
shake_128 = 36
|
|
||||||
shake_256 = 37
|
|
||||||
nopad = 0x100
|
|
||||||
)
|
|
||||||
|
|
||||||
// kimd is a wrapper for the 'compute intermediate message digest' instruction.
|
|
||||||
// src must be a multiple of the rate for the given function code.
|
|
||||||
//go:noescape
|
|
||||||
func kimd(function code, chain *[200]byte, src []byte)
|
|
||||||
|
|
||||||
// klmd is a wrapper for the 'compute last message digest' instruction.
|
|
||||||
// src padding is handled by the instruction.
|
|
||||||
//go:noescape
|
|
||||||
func klmd(function code, chain *[200]byte, dst, src []byte)
|
|
||||||
|
|
||||||
type asmState struct {
|
|
||||||
a [200]byte // 1600 bit state
|
|
||||||
buf []byte // care must be taken to ensure cap(buf) is a multiple of rate
|
|
||||||
rate int // equivalent to block size
|
|
||||||
storage [3072]byte // underlying storage for buf
|
|
||||||
outputLen int // output length if fixed, 0 if not
|
|
||||||
function code // KIMD/KLMD function code
|
|
||||||
state spongeDirection // whether the sponge is absorbing or squeezing
|
|
||||||
}
|
|
||||||
|
|
||||||
func newAsmState(function code) *asmState {
|
|
||||||
var s asmState
|
|
||||||
s.function = function
|
|
||||||
switch function {
|
|
||||||
case sha3_224:
|
|
||||||
s.rate = 144
|
|
||||||
s.outputLen = 28
|
|
||||||
case sha3_256:
|
|
||||||
s.rate = 136
|
|
||||||
s.outputLen = 32
|
|
||||||
case sha3_384:
|
|
||||||
s.rate = 104
|
|
||||||
s.outputLen = 48
|
|
||||||
case sha3_512:
|
|
||||||
s.rate = 72
|
|
||||||
s.outputLen = 64
|
|
||||||
case shake_128:
|
|
||||||
s.rate = 168
|
|
||||||
case shake_256:
|
|
||||||
s.rate = 136
|
|
||||||
default:
|
|
||||||
panic("sha3: unrecognized function code")
|
|
||||||
}
|
|
||||||
|
|
||||||
// limit s.buf size to a multiple of s.rate
|
|
||||||
s.resetBuf()
|
|
||||||
return &s
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *asmState) clone() *asmState {
|
|
||||||
c := *s
|
|
||||||
c.buf = c.storage[:len(s.buf):cap(s.buf)]
|
|
||||||
return &c
|
|
||||||
}
|
|
||||||
|
|
||||||
// copyIntoBuf copies b into buf. It will panic if there is not enough space to
|
|
||||||
// store all of b.
|
|
||||||
func (s *asmState) copyIntoBuf(b []byte) {
|
|
||||||
bufLen := len(s.buf)
|
|
||||||
s.buf = s.buf[:len(s.buf)+len(b)]
|
|
||||||
copy(s.buf[bufLen:], b)
|
|
||||||
}
|
|
||||||
|
|
||||||
// resetBuf points buf at storage, sets the length to 0 and sets cap to be a
|
|
||||||
// multiple of the rate.
|
|
||||||
func (s *asmState) resetBuf() {
|
|
||||||
max := (cap(s.storage) / s.rate) * s.rate
|
|
||||||
s.buf = s.storage[:0:max]
|
|
||||||
}
|
|
||||||
|
|
||||||
// Write (via the embedded io.Writer interface) adds more data to the running hash.
|
|
||||||
// It never returns an error.
|
|
||||||
func (s *asmState) Write(b []byte) (int, error) {
|
|
||||||
if s.state != spongeAbsorbing {
|
|
||||||
panic("sha3: write to sponge after read")
|
|
||||||
}
|
|
||||||
length := len(b)
|
|
||||||
for len(b) > 0 {
|
|
||||||
if len(s.buf) == 0 && len(b) >= cap(s.buf) {
|
|
||||||
// Hash the data directly and push any remaining bytes
|
|
||||||
// into the buffer.
|
|
||||||
remainder := len(b) % s.rate
|
|
||||||
kimd(s.function, &s.a, b[:len(b)-remainder])
|
|
||||||
if remainder != 0 {
|
|
||||||
s.copyIntoBuf(b[len(b)-remainder:])
|
|
||||||
}
|
|
||||||
return length, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(s.buf) == cap(s.buf) {
|
|
||||||
// flush the buffer
|
|
||||||
kimd(s.function, &s.a, s.buf)
|
|
||||||
s.buf = s.buf[:0]
|
|
||||||
}
|
|
||||||
|
|
||||||
// copy as much as we can into the buffer
|
|
||||||
n := len(b)
|
|
||||||
if len(b) > cap(s.buf)-len(s.buf) {
|
|
||||||
n = cap(s.buf) - len(s.buf)
|
|
||||||
}
|
|
||||||
s.copyIntoBuf(b[:n])
|
|
||||||
b = b[n:]
|
|
||||||
}
|
|
||||||
return length, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Read squeezes an arbitrary number of bytes from the sponge.
|
|
||||||
func (s *asmState) Read(out []byte) (n int, err error) {
|
|
||||||
n = len(out)
|
|
||||||
|
|
||||||
// need to pad if we were absorbing
|
|
||||||
if s.state == spongeAbsorbing {
|
|
||||||
s.state = spongeSqueezing
|
|
||||||
|
|
||||||
// write hash directly into out if possible
|
|
||||||
if len(out)%s.rate == 0 {
|
|
||||||
klmd(s.function, &s.a, out, s.buf) // len(out) may be 0
|
|
||||||
s.buf = s.buf[:0]
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// write hash into buffer
|
|
||||||
max := cap(s.buf)
|
|
||||||
if max > len(out) {
|
|
||||||
max = (len(out)/s.rate)*s.rate + s.rate
|
|
||||||
}
|
|
||||||
klmd(s.function, &s.a, s.buf[:max], s.buf)
|
|
||||||
s.buf = s.buf[:max]
|
|
||||||
}
|
|
||||||
|
|
||||||
for len(out) > 0 {
|
|
||||||
// flush the buffer
|
|
||||||
if len(s.buf) != 0 {
|
|
||||||
c := copy(out, s.buf)
|
|
||||||
out = out[c:]
|
|
||||||
s.buf = s.buf[c:]
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
// write hash directly into out if possible
|
|
||||||
if len(out)%s.rate == 0 {
|
|
||||||
klmd(s.function|nopad, &s.a, out, nil)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// write hash into buffer
|
|
||||||
s.resetBuf()
|
|
||||||
if cap(s.buf) > len(out) {
|
|
||||||
s.buf = s.buf[:(len(out)/s.rate)*s.rate+s.rate]
|
|
||||||
}
|
|
||||||
klmd(s.function|nopad, &s.a, s.buf, nil)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sum appends the current hash to b and returns the resulting slice.
|
|
||||||
// It does not change the underlying hash state.
|
|
||||||
func (s *asmState) Sum(b []byte) []byte {
|
|
||||||
if s.outputLen == 0 {
|
|
||||||
panic("sha3: cannot call Sum on SHAKE functions")
|
|
||||||
}
|
|
||||||
|
|
||||||
// Copy the state to preserve the original.
|
|
||||||
a := s.a
|
|
||||||
|
|
||||||
// Hash the buffer. Note that we don't clear it because we
|
|
||||||
// aren't updating the state.
|
|
||||||
klmd(s.function, &a, nil, s.buf)
|
|
||||||
return append(b, a[:s.outputLen]...)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Reset resets the Hash to its initial state.
|
|
||||||
func (s *asmState) Reset() {
|
|
||||||
for i := range s.a {
|
|
||||||
s.a[i] = 0
|
|
||||||
}
|
|
||||||
s.resetBuf()
|
|
||||||
s.state = spongeAbsorbing
|
|
||||||
}
|
|
||||||
|
|
||||||
// Size returns the number of bytes Sum will return.
|
|
||||||
func (s *asmState) Size() int {
|
|
||||||
return s.outputLen
|
|
||||||
}
|
|
||||||
|
|
||||||
// BlockSize returns the hash's underlying block size.
|
|
||||||
// The Write method must be able to accept any amount
|
|
||||||
// of data, but it may operate more efficiently if all writes
|
|
||||||
// are a multiple of the block size.
|
|
||||||
func (s *asmState) BlockSize() int {
|
|
||||||
return s.rate
|
|
||||||
}
|
|
||||||
|
|
||||||
// Clone returns a copy of the ShakeHash in its current state.
|
|
||||||
func (s *asmState) Clone() ShakeHash {
|
|
||||||
return s.clone()
|
|
||||||
}
|
|
||||||
|
|
||||||
// new224Asm returns an assembly implementation of SHA3-224 if available,
|
|
||||||
// otherwise it returns nil.
|
|
||||||
func new224Asm() hash.Hash {
|
|
||||||
if cpu.S390X.HasSHA3 {
|
|
||||||
return newAsmState(sha3_224)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// new256Asm returns an assembly implementation of SHA3-256 if available,
|
|
||||||
// otherwise it returns nil.
|
|
||||||
func new256Asm() hash.Hash {
|
|
||||||
if cpu.S390X.HasSHA3 {
|
|
||||||
return newAsmState(sha3_256)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// new384Asm returns an assembly implementation of SHA3-384 if available,
|
|
||||||
// otherwise it returns nil.
|
|
||||||
func new384Asm() hash.Hash {
|
|
||||||
if cpu.S390X.HasSHA3 {
|
|
||||||
return newAsmState(sha3_384)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// new512Asm returns an assembly implementation of SHA3-512 if available,
|
|
||||||
// otherwise it returns nil.
|
|
||||||
func new512Asm() hash.Hash {
|
|
||||||
if cpu.S390X.HasSHA3 {
|
|
||||||
return newAsmState(sha3_512)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// newShake128Asm returns an assembly implementation of SHAKE-128 if available,
|
|
||||||
// otherwise it returns nil.
|
|
||||||
func newShake128Asm() ShakeHash {
|
|
||||||
if cpu.S390X.HasSHA3 {
|
|
||||||
return newAsmState(shake_128)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// newShake256Asm returns an assembly implementation of SHAKE-256 if available,
|
|
||||||
// otherwise it returns nil.
|
|
||||||
func newShake256Asm() ShakeHash {
|
|
||||||
if cpu.S390X.HasSHA3 {
|
|
||||||
return newAsmState(shake_256)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
33
vendor/golang.org/x/crypto/sha3/sha3_s390x.s
generated
vendored
33
vendor/golang.org/x/crypto/sha3/sha3_s390x.s
generated
vendored
@ -1,33 +0,0 @@
|
|||||||
// Copyright 2017 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build !gccgo,!appengine
|
|
||||||
|
|
||||||
#include "textflag.h"
|
|
||||||
|
|
||||||
// func kimd(function code, chain *[200]byte, src []byte)
|
|
||||||
TEXT ·kimd(SB), NOFRAME|NOSPLIT, $0-40
|
|
||||||
MOVD function+0(FP), R0
|
|
||||||
MOVD chain+8(FP), R1
|
|
||||||
LMG src+16(FP), R2, R3 // R2=base, R3=len
|
|
||||||
|
|
||||||
continue:
|
|
||||||
WORD $0xB93E0002 // KIMD --, R2
|
|
||||||
BVS continue // continue if interrupted
|
|
||||||
MOVD $0, R0 // reset R0 for pre-go1.8 compilers
|
|
||||||
RET
|
|
||||||
|
|
||||||
// func klmd(function code, chain *[200]byte, dst, src []byte)
|
|
||||||
TEXT ·klmd(SB), NOFRAME|NOSPLIT, $0-64
|
|
||||||
// TODO: SHAKE support
|
|
||||||
MOVD function+0(FP), R0
|
|
||||||
MOVD chain+8(FP), R1
|
|
||||||
LMG dst+16(FP), R2, R3 // R2=base, R3=len
|
|
||||||
LMG src+40(FP), R4, R5 // R4=base, R5=len
|
|
||||||
|
|
||||||
continue:
|
|
||||||
WORD $0xB93F0024 // KLMD R2, R4
|
|
||||||
BVS continue // continue if interrupted
|
|
||||||
MOVD $0, R0 // reset R0 for pre-go1.8 compilers
|
|
||||||
RET
|
|
173
vendor/golang.org/x/crypto/sha3/shake.go
generated
vendored
173
vendor/golang.org/x/crypto/sha3/shake.go
generated
vendored
@ -1,173 +0,0 @@
|
|||||||
// Copyright 2014 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 sha3
|
|
||||||
|
|
||||||
// This file defines the ShakeHash interface, and provides
|
|
||||||
// functions for creating SHAKE and cSHAKE instances, as well as utility
|
|
||||||
// functions for hashing bytes to arbitrary-length output.
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// SHAKE implementation is based on FIPS PUB 202 [1]
|
|
||||||
// cSHAKE implementations is based on NIST SP 800-185 [2]
|
|
||||||
//
|
|
||||||
// [1] https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf
|
|
||||||
// [2] https://doi.org/10.6028/NIST.SP.800-185
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/binary"
|
|
||||||
"io"
|
|
||||||
)
|
|
||||||
|
|
||||||
// ShakeHash defines the interface to hash functions that
|
|
||||||
// support arbitrary-length output.
|
|
||||||
type ShakeHash interface {
|
|
||||||
// Write absorbs more data into the hash's state. It panics if input is
|
|
||||||
// written to it after output has been read from it.
|
|
||||||
io.Writer
|
|
||||||
|
|
||||||
// Read reads more output from the hash; reading affects the hash's
|
|
||||||
// state. (ShakeHash.Read is thus very different from Hash.Sum)
|
|
||||||
// It never returns an error.
|
|
||||||
io.Reader
|
|
||||||
|
|
||||||
// Clone returns a copy of the ShakeHash in its current state.
|
|
||||||
Clone() ShakeHash
|
|
||||||
|
|
||||||
// Reset resets the ShakeHash to its initial state.
|
|
||||||
Reset()
|
|
||||||
}
|
|
||||||
|
|
||||||
// cSHAKE specific context
|
|
||||||
type cshakeState struct {
|
|
||||||
*state // SHA-3 state context and Read/Write operations
|
|
||||||
|
|
||||||
// initBlock is the cSHAKE specific initialization set of bytes. It is initialized
|
|
||||||
// by newCShake function and stores concatenation of N followed by S, encoded
|
|
||||||
// by the method specified in 3.3 of [1].
|
|
||||||
// It is stored here in order for Reset() to be able to put context into
|
|
||||||
// initial state.
|
|
||||||
initBlock []byte
|
|
||||||
}
|
|
||||||
|
|
||||||
// Consts for configuring initial SHA-3 state
|
|
||||||
const (
|
|
||||||
dsbyteShake = 0x1f
|
|
||||||
dsbyteCShake = 0x04
|
|
||||||
rate128 = 168
|
|
||||||
rate256 = 136
|
|
||||||
)
|
|
||||||
|
|
||||||
func bytepad(input []byte, w int) []byte {
|
|
||||||
// leftEncode always returns max 9 bytes
|
|
||||||
buf := make([]byte, 0, 9+len(input)+w)
|
|
||||||
buf = append(buf, leftEncode(uint64(w))...)
|
|
||||||
buf = append(buf, input...)
|
|
||||||
padlen := w - (len(buf) % w)
|
|
||||||
return append(buf, make([]byte, padlen)...)
|
|
||||||
}
|
|
||||||
|
|
||||||
func leftEncode(value uint64) []byte {
|
|
||||||
var b [9]byte
|
|
||||||
binary.BigEndian.PutUint64(b[1:], value)
|
|
||||||
// Trim all but last leading zero bytes
|
|
||||||
i := byte(1)
|
|
||||||
for i < 8 && b[i] == 0 {
|
|
||||||
i++
|
|
||||||
}
|
|
||||||
// Prepend number of encoded bytes
|
|
||||||
b[i-1] = 9 - i
|
|
||||||
return b[i-1:]
|
|
||||||
}
|
|
||||||
|
|
||||||
func newCShake(N, S []byte, rate int, dsbyte byte) ShakeHash {
|
|
||||||
c := cshakeState{state: &state{rate: rate, dsbyte: dsbyte}}
|
|
||||||
|
|
||||||
// leftEncode returns max 9 bytes
|
|
||||||
c.initBlock = make([]byte, 0, 9*2+len(N)+len(S))
|
|
||||||
c.initBlock = append(c.initBlock, leftEncode(uint64(len(N)*8))...)
|
|
||||||
c.initBlock = append(c.initBlock, N...)
|
|
||||||
c.initBlock = append(c.initBlock, leftEncode(uint64(len(S)*8))...)
|
|
||||||
c.initBlock = append(c.initBlock, S...)
|
|
||||||
c.Write(bytepad(c.initBlock, c.rate))
|
|
||||||
return &c
|
|
||||||
}
|
|
||||||
|
|
||||||
// Reset resets the hash to initial state.
|
|
||||||
func (c *cshakeState) Reset() {
|
|
||||||
c.state.Reset()
|
|
||||||
c.Write(bytepad(c.initBlock, c.rate))
|
|
||||||
}
|
|
||||||
|
|
||||||
// Clone returns copy of a cSHAKE context within its current state.
|
|
||||||
func (c *cshakeState) Clone() ShakeHash {
|
|
||||||
b := make([]byte, len(c.initBlock))
|
|
||||||
copy(b, c.initBlock)
|
|
||||||
return &cshakeState{state: c.clone(), initBlock: b}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Clone returns copy of SHAKE context within its current state.
|
|
||||||
func (c *state) Clone() ShakeHash {
|
|
||||||
return c.clone()
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewShake128 creates a new SHAKE128 variable-output-length ShakeHash.
|
|
||||||
// Its generic security strength is 128 bits against all attacks if at
|
|
||||||
// least 32 bytes of its output are used.
|
|
||||||
func NewShake128() ShakeHash {
|
|
||||||
if h := newShake128Asm(); h != nil {
|
|
||||||
return h
|
|
||||||
}
|
|
||||||
return &state{rate: rate128, dsbyte: dsbyteShake}
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewShake256 creates a new SHAKE256 variable-output-length ShakeHash.
|
|
||||||
// Its generic security strength is 256 bits against all attacks if
|
|
||||||
// at least 64 bytes of its output are used.
|
|
||||||
func NewShake256() ShakeHash {
|
|
||||||
if h := newShake256Asm(); h != nil {
|
|
||||||
return h
|
|
||||||
}
|
|
||||||
return &state{rate: rate256, dsbyte: dsbyteShake}
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewCShake128 creates a new instance of cSHAKE128 variable-output-length ShakeHash,
|
|
||||||
// a customizable variant of SHAKE128.
|
|
||||||
// N is used to define functions based on cSHAKE, it can be empty when plain cSHAKE is
|
|
||||||
// desired. S is a customization byte string used for domain separation - two cSHAKE
|
|
||||||
// computations on same input with different S yield unrelated outputs.
|
|
||||||
// When N and S are both empty, this is equivalent to NewShake128.
|
|
||||||
func NewCShake128(N, S []byte) ShakeHash {
|
|
||||||
if len(N) == 0 && len(S) == 0 {
|
|
||||||
return NewShake128()
|
|
||||||
}
|
|
||||||
return newCShake(N, S, rate128, dsbyteCShake)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewCShake256 creates a new instance of cSHAKE256 variable-output-length ShakeHash,
|
|
||||||
// a customizable variant of SHAKE256.
|
|
||||||
// N is used to define functions based on cSHAKE, it can be empty when plain cSHAKE is
|
|
||||||
// desired. S is a customization byte string used for domain separation - two cSHAKE
|
|
||||||
// computations on same input with different S yield unrelated outputs.
|
|
||||||
// When N and S are both empty, this is equivalent to NewShake256.
|
|
||||||
func NewCShake256(N, S []byte) ShakeHash {
|
|
||||||
if len(N) == 0 && len(S) == 0 {
|
|
||||||
return NewShake256()
|
|
||||||
}
|
|
||||||
return newCShake(N, S, rate256, dsbyteCShake)
|
|
||||||
}
|
|
||||||
|
|
||||||
// ShakeSum128 writes an arbitrary-length digest of data into hash.
|
|
||||||
func ShakeSum128(hash, data []byte) {
|
|
||||||
h := NewShake128()
|
|
||||||
h.Write(data)
|
|
||||||
h.Read(hash)
|
|
||||||
}
|
|
||||||
|
|
||||||
// ShakeSum256 writes an arbitrary-length digest of data into hash.
|
|
||||||
func ShakeSum256(hash, data []byte) {
|
|
||||||
h := NewShake256()
|
|
||||||
h.Write(data)
|
|
||||||
h.Read(hash)
|
|
||||||
}
|
|
19
vendor/golang.org/x/crypto/sha3/shake_generic.go
generated
vendored
19
vendor/golang.org/x/crypto/sha3/shake_generic.go
generated
vendored
@ -1,19 +0,0 @@
|
|||||||
// Copyright 2017 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build gccgo appengine !s390x
|
|
||||||
|
|
||||||
package sha3
|
|
||||||
|
|
||||||
// newShake128Asm returns an assembly implementation of SHAKE-128 if available,
|
|
||||||
// otherwise it returns nil.
|
|
||||||
func newShake128Asm() ShakeHash {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// newShake256Asm returns an assembly implementation of SHAKE-256 if available,
|
|
||||||
// otherwise it returns nil.
|
|
||||||
func newShake256Asm() ShakeHash {
|
|
||||||
return nil
|
|
||||||
}
|
|
23
vendor/golang.org/x/crypto/sha3/xor.go
generated
vendored
23
vendor/golang.org/x/crypto/sha3/xor.go
generated
vendored
@ -1,23 +0,0 @@
|
|||||||
// Copyright 2015 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build !amd64,!386,!ppc64le appengine
|
|
||||||
|
|
||||||
package sha3
|
|
||||||
|
|
||||||
// A storageBuf is an aligned array of maxRate bytes.
|
|
||||||
type storageBuf [maxRate]byte
|
|
||||||
|
|
||||||
func (b *storageBuf) asBytes() *[maxRate]byte {
|
|
||||||
return (*[maxRate]byte)(b)
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
|
||||||
xorIn = xorInGeneric
|
|
||||||
copyOut = copyOutGeneric
|
|
||||||
xorInUnaligned = xorInGeneric
|
|
||||||
copyOutUnaligned = copyOutGeneric
|
|
||||||
)
|
|
||||||
|
|
||||||
const xorImplementationUnaligned = "generic"
|
|
28
vendor/golang.org/x/crypto/sha3/xor_generic.go
generated
vendored
28
vendor/golang.org/x/crypto/sha3/xor_generic.go
generated
vendored
@ -1,28 +0,0 @@
|
|||||||
// Copyright 2015 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 sha3
|
|
||||||
|
|
||||||
import "encoding/binary"
|
|
||||||
|
|
||||||
// xorInGeneric xors the bytes in buf into the state; it
|
|
||||||
// makes no non-portable assumptions about memory layout
|
|
||||||
// or alignment.
|
|
||||||
func xorInGeneric(d *state, buf []byte) {
|
|
||||||
n := len(buf) / 8
|
|
||||||
|
|
||||||
for i := 0; i < n; i++ {
|
|
||||||
a := binary.LittleEndian.Uint64(buf)
|
|
||||||
d.a[i] ^= a
|
|
||||||
buf = buf[8:]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// copyOutGeneric copies ulint64s to a byte buffer.
|
|
||||||
func copyOutGeneric(d *state, b []byte) {
|
|
||||||
for i := 0; len(b) >= 8; i++ {
|
|
||||||
binary.LittleEndian.PutUint64(b, d.a[i])
|
|
||||||
b = b[8:]
|
|
||||||
}
|
|
||||||
}
|
|
76
vendor/golang.org/x/crypto/sha3/xor_unaligned.go
generated
vendored
76
vendor/golang.org/x/crypto/sha3/xor_unaligned.go
generated
vendored
@ -1,76 +0,0 @@
|
|||||||
// Copyright 2015 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build amd64 386 ppc64le
|
|
||||||
// +build !appengine
|
|
||||||
|
|
||||||
package sha3
|
|
||||||
|
|
||||||
import "unsafe"
|
|
||||||
|
|
||||||
// A storageBuf is an aligned array of maxRate bytes.
|
|
||||||
type storageBuf [maxRate / 8]uint64
|
|
||||||
|
|
||||||
func (b *storageBuf) asBytes() *[maxRate]byte {
|
|
||||||
return (*[maxRate]byte)(unsafe.Pointer(b))
|
|
||||||
}
|
|
||||||
|
|
||||||
//go:nocheckptr
|
|
||||||
//
|
|
||||||
// xorInUnaligned intentionally reads the input buffer as an unaligned slice of
|
|
||||||
// integers. The language spec is not clear on whether that is allowed.
|
|
||||||
// See:
|
|
||||||
// https://golang.org/issue/37644
|
|
||||||
// https://golang.org/issue/37298
|
|
||||||
// https://golang.org/issue/35381
|
|
||||||
|
|
||||||
// xorInUnaligned uses unaligned reads and writes to update d.a to contain d.a
|
|
||||||
// XOR buf.
|
|
||||||
func xorInUnaligned(d *state, buf []byte) {
|
|
||||||
n := len(buf)
|
|
||||||
bw := (*[maxRate / 8]uint64)(unsafe.Pointer(&buf[0]))[: n/8 : n/8]
|
|
||||||
if n >= 72 {
|
|
||||||
d.a[0] ^= bw[0]
|
|
||||||
d.a[1] ^= bw[1]
|
|
||||||
d.a[2] ^= bw[2]
|
|
||||||
d.a[3] ^= bw[3]
|
|
||||||
d.a[4] ^= bw[4]
|
|
||||||
d.a[5] ^= bw[5]
|
|
||||||
d.a[6] ^= bw[6]
|
|
||||||
d.a[7] ^= bw[7]
|
|
||||||
d.a[8] ^= bw[8]
|
|
||||||
}
|
|
||||||
if n >= 104 {
|
|
||||||
d.a[9] ^= bw[9]
|
|
||||||
d.a[10] ^= bw[10]
|
|
||||||
d.a[11] ^= bw[11]
|
|
||||||
d.a[12] ^= bw[12]
|
|
||||||
}
|
|
||||||
if n >= 136 {
|
|
||||||
d.a[13] ^= bw[13]
|
|
||||||
d.a[14] ^= bw[14]
|
|
||||||
d.a[15] ^= bw[15]
|
|
||||||
d.a[16] ^= bw[16]
|
|
||||||
}
|
|
||||||
if n >= 144 {
|
|
||||||
d.a[17] ^= bw[17]
|
|
||||||
}
|
|
||||||
if n >= 168 {
|
|
||||||
d.a[18] ^= bw[18]
|
|
||||||
d.a[19] ^= bw[19]
|
|
||||||
d.a[20] ^= bw[20]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func copyOutUnaligned(d *state, buf []byte) {
|
|
||||||
ab := (*[maxRate]uint8)(unsafe.Pointer(&d.a[0]))
|
|
||||||
copy(buf, ab[:])
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
|
||||||
xorIn = xorInUnaligned
|
|
||||||
copyOut = copyOutUnaligned
|
|
||||||
)
|
|
||||||
|
|
||||||
const xorImplementationUnaligned = "unaligned"
|
|
3
vendor/golang.org/x/sys/AUTHORS
generated
vendored
3
vendor/golang.org/x/sys/AUTHORS
generated
vendored
@ -1,3 +0,0 @@
|
|||||||
# This source code refers to The Go Authors for copyright purposes.
|
|
||||||
# The master list of authors is in the main Go distribution,
|
|
||||||
# visible at http://tip.golang.org/AUTHORS.
|
|
3
vendor/golang.org/x/sys/CONTRIBUTORS
generated
vendored
3
vendor/golang.org/x/sys/CONTRIBUTORS
generated
vendored
@ -1,3 +0,0 @@
|
|||||||
# This source code was written by the Go contributors.
|
|
||||||
# The master list of contributors is in the main Go distribution,
|
|
||||||
# visible at http://tip.golang.org/CONTRIBUTORS.
|
|
27
vendor/golang.org/x/sys/LICENSE
generated
vendored
27
vendor/golang.org/x/sys/LICENSE
generated
vendored
@ -1,27 +0,0 @@
|
|||||||
Copyright (c) 2009 The Go Authors. All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions are
|
|
||||||
met:
|
|
||||||
|
|
||||||
* Redistributions of source code must retain the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer.
|
|
||||||
* Redistributions in binary form must reproduce the above
|
|
||||||
copyright notice, this list of conditions and the following disclaimer
|
|
||||||
in the documentation and/or other materials provided with the
|
|
||||||
distribution.
|
|
||||||
* Neither the name of Google Inc. nor the names of its
|
|
||||||
contributors may be used to endorse or promote products derived from
|
|
||||||
this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
22
vendor/golang.org/x/sys/PATENTS
generated
vendored
22
vendor/golang.org/x/sys/PATENTS
generated
vendored
@ -1,22 +0,0 @@
|
|||||||
Additional IP Rights Grant (Patents)
|
|
||||||
|
|
||||||
"This implementation" means the copyrightable works distributed by
|
|
||||||
Google as part of the Go project.
|
|
||||||
|
|
||||||
Google hereby grants to You a perpetual, worldwide, non-exclusive,
|
|
||||||
no-charge, royalty-free, irrevocable (except as stated in this section)
|
|
||||||
patent license to make, have made, use, offer to sell, sell, import,
|
|
||||||
transfer and otherwise run, modify and propagate the contents of this
|
|
||||||
implementation of Go, where such license applies only to those patent
|
|
||||||
claims, both currently owned or controlled by Google and acquired in
|
|
||||||
the future, licensable by Google that are necessarily infringed by this
|
|
||||||
implementation of Go. This grant does not include claims that would be
|
|
||||||
infringed only as a consequence of further modification of this
|
|
||||||
implementation. If you or your agent or exclusive licensee institute or
|
|
||||||
order or agree to the institution of patent litigation against any
|
|
||||||
entity (including a cross-claim or counterclaim in a lawsuit) alleging
|
|
||||||
that this implementation of Go or any code incorporated within this
|
|
||||||
implementation of Go constitutes direct or contributory patent
|
|
||||||
infringement, or inducement of patent infringement, then any patent
|
|
||||||
rights granted to you under this License for this implementation of Go
|
|
||||||
shall terminate as of the date such litigation is filed.
|
|
30
vendor/golang.org/x/sys/cpu/byteorder.go
generated
vendored
30
vendor/golang.org/x/sys/cpu/byteorder.go
generated
vendored
@ -1,30 +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 cpu
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/binary"
|
|
||||||
"runtime"
|
|
||||||
)
|
|
||||||
|
|
||||||
// hostByteOrder returns binary.LittleEndian on little-endian machines and
|
|
||||||
// binary.BigEndian on big-endian machines.
|
|
||||||
func hostByteOrder() binary.ByteOrder {
|
|
||||||
switch runtime.GOARCH {
|
|
||||||
case "386", "amd64", "amd64p32",
|
|
||||||
"arm", "arm64",
|
|
||||||
"mipsle", "mips64le", "mips64p32le",
|
|
||||||
"ppc64le",
|
|
||||||
"riscv", "riscv64":
|
|
||||||
return binary.LittleEndian
|
|
||||||
case "armbe", "arm64be",
|
|
||||||
"mips", "mips64", "mips64p32",
|
|
||||||
"ppc", "ppc64",
|
|
||||||
"s390", "s390x",
|
|
||||||
"sparc", "sparc64":
|
|
||||||
return binary.BigEndian
|
|
||||||
}
|
|
||||||
panic("unknown architecture")
|
|
||||||
}
|
|
126
vendor/golang.org/x/sys/cpu/cpu.go
generated
vendored
126
vendor/golang.org/x/sys/cpu/cpu.go
generated
vendored
@ -1,126 +0,0 @@
|
|||||||
// Copyright 2018 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// Package cpu implements processor feature detection for
|
|
||||||
// various CPU architectures.
|
|
||||||
package cpu
|
|
||||||
|
|
||||||
// Initialized reports whether the CPU features were initialized.
|
|
||||||
//
|
|
||||||
// For some GOOS/GOARCH combinations initialization of the CPU features depends
|
|
||||||
// on reading an operating specific file, e.g. /proc/self/auxv on linux/arm
|
|
||||||
// Initialized will report false if reading the file fails.
|
|
||||||
var Initialized bool
|
|
||||||
|
|
||||||
// CacheLinePad is used to pad structs to avoid false sharing.
|
|
||||||
type CacheLinePad struct{ _ [cacheLineSize]byte }
|
|
||||||
|
|
||||||
// X86 contains the supported CPU features of the
|
|
||||||
// current X86/AMD64 platform. If the current platform
|
|
||||||
// is not X86/AMD64 then all feature flags are false.
|
|
||||||
//
|
|
||||||
// X86 is padded to avoid false sharing. Further the HasAVX
|
|
||||||
// and HasAVX2 are only set if the OS supports XMM and YMM
|
|
||||||
// registers in addition to the CPUID feature bit being set.
|
|
||||||
var X86 struct {
|
|
||||||
_ CacheLinePad
|
|
||||||
HasAES bool // AES hardware implementation (AES NI)
|
|
||||||
HasADX bool // Multi-precision add-carry instruction extensions
|
|
||||||
HasAVX bool // Advanced vector extension
|
|
||||||
HasAVX2 bool // Advanced vector extension 2
|
|
||||||
HasBMI1 bool // Bit manipulation instruction set 1
|
|
||||||
HasBMI2 bool // Bit manipulation instruction set 2
|
|
||||||
HasERMS bool // Enhanced REP for MOVSB and STOSB
|
|
||||||
HasFMA bool // Fused-multiply-add instructions
|
|
||||||
HasOSXSAVE bool // OS supports XSAVE/XRESTOR for saving/restoring XMM registers.
|
|
||||||
HasPCLMULQDQ bool // PCLMULQDQ instruction - most often used for AES-GCM
|
|
||||||
HasPOPCNT bool // Hamming weight instruction POPCNT.
|
|
||||||
HasRDRAND bool // RDRAND instruction (on-chip random number generator)
|
|
||||||
HasRDSEED bool // RDSEED instruction (on-chip random number generator)
|
|
||||||
HasSSE2 bool // Streaming SIMD extension 2 (always available on amd64)
|
|
||||||
HasSSE3 bool // Streaming SIMD extension 3
|
|
||||||
HasSSSE3 bool // Supplemental streaming SIMD extension 3
|
|
||||||
HasSSE41 bool // Streaming SIMD extension 4 and 4.1
|
|
||||||
HasSSE42 bool // Streaming SIMD extension 4 and 4.2
|
|
||||||
_ CacheLinePad
|
|
||||||
}
|
|
||||||
|
|
||||||
// ARM64 contains the supported CPU features of the
|
|
||||||
// current ARMv8(aarch64) platform. If the current platform
|
|
||||||
// is not arm64 then all feature flags are false.
|
|
||||||
var ARM64 struct {
|
|
||||||
_ CacheLinePad
|
|
||||||
HasFP bool // Floating-point instruction set (always available)
|
|
||||||
HasASIMD bool // Advanced SIMD (always available)
|
|
||||||
HasEVTSTRM bool // Event stream support
|
|
||||||
HasAES bool // AES hardware implementation
|
|
||||||
HasPMULL bool // Polynomial multiplication instruction set
|
|
||||||
HasSHA1 bool // SHA1 hardware implementation
|
|
||||||
HasSHA2 bool // SHA2 hardware implementation
|
|
||||||
HasCRC32 bool // CRC32 hardware implementation
|
|
||||||
HasATOMICS bool // Atomic memory operation instruction set
|
|
||||||
HasFPHP bool // Half precision floating-point instruction set
|
|
||||||
HasASIMDHP bool // Advanced SIMD half precision instruction set
|
|
||||||
HasCPUID bool // CPUID identification scheme registers
|
|
||||||
HasASIMDRDM bool // Rounding double multiply add/subtract instruction set
|
|
||||||
HasJSCVT bool // Javascript conversion from floating-point to integer
|
|
||||||
HasFCMA bool // Floating-point multiplication and addition of complex numbers
|
|
||||||
HasLRCPC bool // Release Consistent processor consistent support
|
|
||||||
HasDCPOP bool // Persistent memory support
|
|
||||||
HasSHA3 bool // SHA3 hardware implementation
|
|
||||||
HasSM3 bool // SM3 hardware implementation
|
|
||||||
HasSM4 bool // SM4 hardware implementation
|
|
||||||
HasASIMDDP bool // Advanced SIMD double precision instruction set
|
|
||||||
HasSHA512 bool // SHA512 hardware implementation
|
|
||||||
HasSVE bool // Scalable Vector Extensions
|
|
||||||
HasASIMDFHM bool // Advanced SIMD multiplication FP16 to FP32
|
|
||||||
_ CacheLinePad
|
|
||||||
}
|
|
||||||
|
|
||||||
// PPC64 contains the supported CPU features of the current ppc64/ppc64le platforms.
|
|
||||||
// If the current platform is not ppc64/ppc64le then all feature flags are false.
|
|
||||||
//
|
|
||||||
// For ppc64/ppc64le, it is safe to check only for ISA level starting on ISA v3.00,
|
|
||||||
// since there are no optional categories. There are some exceptions that also
|
|
||||||
// require kernel support to work (DARN, SCV), so there are feature bits for
|
|
||||||
// those as well. The minimum processor requirement is POWER8 (ISA 2.07).
|
|
||||||
// The struct is padded to avoid false sharing.
|
|
||||||
var PPC64 struct {
|
|
||||||
_ CacheLinePad
|
|
||||||
HasDARN bool // Hardware random number generator (requires kernel enablement)
|
|
||||||
HasSCV bool // Syscall vectored (requires kernel enablement)
|
|
||||||
IsPOWER8 bool // ISA v2.07 (POWER8)
|
|
||||||
IsPOWER9 bool // ISA v3.00 (POWER9)
|
|
||||||
_ CacheLinePad
|
|
||||||
}
|
|
||||||
|
|
||||||
// S390X contains the supported CPU features of the current IBM Z
|
|
||||||
// (s390x) platform. If the current platform is not IBM Z then all
|
|
||||||
// feature flags are false.
|
|
||||||
//
|
|
||||||
// S390X is padded to avoid false sharing. Further HasVX is only set
|
|
||||||
// if the OS supports vector registers in addition to the STFLE
|
|
||||||
// feature bit being set.
|
|
||||||
var S390X struct {
|
|
||||||
_ CacheLinePad
|
|
||||||
HasZARCH bool // z/Architecture mode is active [mandatory]
|
|
||||||
HasSTFLE bool // store facility list extended
|
|
||||||
HasLDISP bool // long (20-bit) displacements
|
|
||||||
HasEIMM bool // 32-bit immediates
|
|
||||||
HasDFP bool // decimal floating point
|
|
||||||
HasETF3EH bool // ETF-3 enhanced
|
|
||||||
HasMSA bool // message security assist (CPACF)
|
|
||||||
HasAES bool // KM-AES{128,192,256} functions
|
|
||||||
HasAESCBC bool // KMC-AES{128,192,256} functions
|
|
||||||
HasAESCTR bool // KMCTR-AES{128,192,256} functions
|
|
||||||
HasAESGCM bool // KMA-GCM-AES{128,192,256} functions
|
|
||||||
HasGHASH bool // KIMD-GHASH function
|
|
||||||
HasSHA1 bool // K{I,L}MD-SHA-1 functions
|
|
||||||
HasSHA256 bool // K{I,L}MD-SHA-256 functions
|
|
||||||
HasSHA512 bool // K{I,L}MD-SHA-512 functions
|
|
||||||
HasSHA3 bool // K{I,L}MD-SHA3-{224,256,384,512} and K{I,L}MD-SHAKE-{128,256} functions
|
|
||||||
HasVX bool // vector facility
|
|
||||||
HasVXE bool // vector-enhancements facility 1
|
|
||||||
_ CacheLinePad
|
|
||||||
}
|
|
30
vendor/golang.org/x/sys/cpu/cpu_aix_ppc64.go
generated
vendored
30
vendor/golang.org/x/sys/cpu/cpu_aix_ppc64.go
generated
vendored
@ -1,30 +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.
|
|
||||||
|
|
||||||
// +build aix,ppc64
|
|
||||||
|
|
||||||
package cpu
|
|
||||||
|
|
||||||
import "golang.org/x/sys/unix"
|
|
||||||
|
|
||||||
const cacheLineSize = 128
|
|
||||||
|
|
||||||
const (
|
|
||||||
// getsystemcfg constants
|
|
||||||
_SC_IMPL = 2
|
|
||||||
_IMPL_POWER8 = 0x10000
|
|
||||||
_IMPL_POWER9 = 0x20000
|
|
||||||
)
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
impl := unix.Getsystemcfg(_SC_IMPL)
|
|
||||||
if impl&_IMPL_POWER8 != 0 {
|
|
||||||
PPC64.IsPOWER8 = true
|
|
||||||
}
|
|
||||||
if impl&_IMPL_POWER9 != 0 {
|
|
||||||
PPC64.IsPOWER9 = true
|
|
||||||
}
|
|
||||||
|
|
||||||
Initialized = true
|
|
||||||
}
|
|
9
vendor/golang.org/x/sys/cpu/cpu_arm.go
generated
vendored
9
vendor/golang.org/x/sys/cpu/cpu_arm.go
generated
vendored
@ -1,9 +0,0 @@
|
|||||||
// Copyright 2018 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
package cpu
|
|
||||||
|
|
||||||
const cacheLineSize = 32
|
|
||||||
|
|
||||||
func doinit() {}
|
|
21
vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go
generated
vendored
21
vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go
generated
vendored
@ -1,21 +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.
|
|
||||||
|
|
||||||
// +build !gccgo
|
|
||||||
|
|
||||||
package cpu
|
|
||||||
|
|
||||||
// haveAsmFunctions reports whether the other functions in this file can
|
|
||||||
// be safely called.
|
|
||||||
func haveAsmFunctions() bool { return true }
|
|
||||||
|
|
||||||
// The following feature detection functions are defined in cpu_s390x.s.
|
|
||||||
// They are likely to be expensive to call so the results should be cached.
|
|
||||||
func stfle() facilityList
|
|
||||||
func kmQuery() queryResult
|
|
||||||
func kmcQuery() queryResult
|
|
||||||
func kmctrQuery() queryResult
|
|
||||||
func kmaQuery() queryResult
|
|
||||||
func kimdQuery() queryResult
|
|
||||||
func klmdQuery() queryResult
|
|
16
vendor/golang.org/x/sys/cpu/cpu_gc_x86.go
generated
vendored
16
vendor/golang.org/x/sys/cpu/cpu_gc_x86.go
generated
vendored
@ -1,16 +0,0 @@
|
|||||||
// Copyright 2018 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build 386 amd64 amd64p32
|
|
||||||
// +build !gccgo
|
|
||||||
|
|
||||||
package cpu
|
|
||||||
|
|
||||||
// cpuid is implemented in cpu_x86.s for gc compiler
|
|
||||||
// and in cpu_gccgo.c for gccgo.
|
|
||||||
func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32)
|
|
||||||
|
|
||||||
// xgetbv with ecx = 0 is implemented in cpu_x86.s for gc compiler
|
|
||||||
// and in cpu_gccgo.c for gccgo.
|
|
||||||
func xgetbv() (eax, edx uint32)
|
|
43
vendor/golang.org/x/sys/cpu/cpu_gccgo.c
generated
vendored
43
vendor/golang.org/x/sys/cpu/cpu_gccgo.c
generated
vendored
@ -1,43 +0,0 @@
|
|||||||
// Copyright 2018 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build 386 amd64 amd64p32
|
|
||||||
// +build gccgo
|
|
||||||
|
|
||||||
#include <cpuid.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
|
|
||||||
// Need to wrap __get_cpuid_count because it's declared as static.
|
|
||||||
int
|
|
||||||
gccgoGetCpuidCount(uint32_t leaf, uint32_t subleaf,
|
|
||||||
uint32_t *eax, uint32_t *ebx,
|
|
||||||
uint32_t *ecx, uint32_t *edx)
|
|
||||||
{
|
|
||||||
return __get_cpuid_count(leaf, subleaf, eax, ebx, ecx, edx);
|
|
||||||
}
|
|
||||||
|
|
||||||
// xgetbv reads the contents of an XCR (Extended Control Register)
|
|
||||||
// specified in the ECX register into registers EDX:EAX.
|
|
||||||
// Currently, the only supported value for XCR is 0.
|
|
||||||
//
|
|
||||||
// TODO: Replace with a better alternative:
|
|
||||||
//
|
|
||||||
// #include <xsaveintrin.h>
|
|
||||||
//
|
|
||||||
// #pragma GCC target("xsave")
|
|
||||||
//
|
|
||||||
// void gccgoXgetbv(uint32_t *eax, uint32_t *edx) {
|
|
||||||
// unsigned long long x = _xgetbv(0);
|
|
||||||
// *eax = x & 0xffffffff;
|
|
||||||
// *edx = (x >> 32) & 0xffffffff;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// Note that _xgetbv is defined starting with GCC 8.
|
|
||||||
void
|
|
||||||
gccgoXgetbv(uint32_t *eax, uint32_t *edx)
|
|
||||||
{
|
|
||||||
__asm(" xorl %%ecx, %%ecx\n"
|
|
||||||
" xgetbv"
|
|
||||||
: "=a"(*eax), "=d"(*edx));
|
|
||||||
}
|
|
26
vendor/golang.org/x/sys/cpu/cpu_gccgo.go
generated
vendored
26
vendor/golang.org/x/sys/cpu/cpu_gccgo.go
generated
vendored
@ -1,26 +0,0 @@
|
|||||||
// Copyright 2018 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build 386 amd64 amd64p32
|
|
||||||
// +build gccgo
|
|
||||||
|
|
||||||
package cpu
|
|
||||||
|
|
||||||
//extern gccgoGetCpuidCount
|
|
||||||
func gccgoGetCpuidCount(eaxArg, ecxArg uint32, eax, ebx, ecx, edx *uint32)
|
|
||||||
|
|
||||||
func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32) {
|
|
||||||
var a, b, c, d uint32
|
|
||||||
gccgoGetCpuidCount(eaxArg, ecxArg, &a, &b, &c, &d)
|
|
||||||
return a, b, c, d
|
|
||||||
}
|
|
||||||
|
|
||||||
//extern gccgoXgetbv
|
|
||||||
func gccgoXgetbv(eax, edx *uint32)
|
|
||||||
|
|
||||||
func xgetbv() (eax, edx uint32) {
|
|
||||||
var a, d uint32
|
|
||||||
gccgoXgetbv(&a, &d)
|
|
||||||
return a, d
|
|
||||||
}
|
|
22
vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go
generated
vendored
22
vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go
generated
vendored
@ -1,22 +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.
|
|
||||||
|
|
||||||
// +build gccgo
|
|
||||||
|
|
||||||
package cpu
|
|
||||||
|
|
||||||
// haveAsmFunctions reports whether the other functions in this file can
|
|
||||||
// be safely called.
|
|
||||||
func haveAsmFunctions() bool { return false }
|
|
||||||
|
|
||||||
// TODO(mundaym): the following feature detection functions are currently
|
|
||||||
// stubs. See https://golang.org/cl/162887 for how to fix this.
|
|
||||||
// They are likely to be expensive to call so the results should be cached.
|
|
||||||
func stfle() facilityList { panic("not implemented for gccgo") }
|
|
||||||
func kmQuery() queryResult { panic("not implemented for gccgo") }
|
|
||||||
func kmcQuery() queryResult { panic("not implemented for gccgo") }
|
|
||||||
func kmctrQuery() queryResult { panic("not implemented for gccgo") }
|
|
||||||
func kmaQuery() queryResult { panic("not implemented for gccgo") }
|
|
||||||
func kimdQuery() queryResult { panic("not implemented for gccgo") }
|
|
||||||
func klmdQuery() queryResult { panic("not implemented for gccgo") }
|
|
59
vendor/golang.org/x/sys/cpu/cpu_linux.go
generated
vendored
59
vendor/golang.org/x/sys/cpu/cpu_linux.go
generated
vendored
@ -1,59 +0,0 @@
|
|||||||
// Copyright 2018 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
//+build !amd64,!amd64p32,!386
|
|
||||||
|
|
||||||
package cpu
|
|
||||||
|
|
||||||
import (
|
|
||||||
"io/ioutil"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
_AT_HWCAP = 16
|
|
||||||
_AT_HWCAP2 = 26
|
|
||||||
|
|
||||||
procAuxv = "/proc/self/auxv"
|
|
||||||
|
|
||||||
uintSize = int(32 << (^uint(0) >> 63))
|
|
||||||
)
|
|
||||||
|
|
||||||
// For those platforms don't have a 'cpuid' equivalent we use HWCAP/HWCAP2
|
|
||||||
// These are initialized in cpu_$GOARCH.go
|
|
||||||
// and should not be changed after they are initialized.
|
|
||||||
var hwCap uint
|
|
||||||
var hwCap2 uint
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
buf, err := ioutil.ReadFile(procAuxv)
|
|
||||||
if err != nil {
|
|
||||||
// e.g. on android /proc/self/auxv is not accessible, so silently
|
|
||||||
// ignore the error and leave Initialized = false
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
bo := hostByteOrder()
|
|
||||||
for len(buf) >= 2*(uintSize/8) {
|
|
||||||
var tag, val uint
|
|
||||||
switch uintSize {
|
|
||||||
case 32:
|
|
||||||
tag = uint(bo.Uint32(buf[0:]))
|
|
||||||
val = uint(bo.Uint32(buf[4:]))
|
|
||||||
buf = buf[8:]
|
|
||||||
case 64:
|
|
||||||
tag = uint(bo.Uint64(buf[0:]))
|
|
||||||
val = uint(bo.Uint64(buf[8:]))
|
|
||||||
buf = buf[16:]
|
|
||||||
}
|
|
||||||
switch tag {
|
|
||||||
case _AT_HWCAP:
|
|
||||||
hwCap = val
|
|
||||||
case _AT_HWCAP2:
|
|
||||||
hwCap2 = val
|
|
||||||
}
|
|
||||||
}
|
|
||||||
doinit()
|
|
||||||
|
|
||||||
Initialized = true
|
|
||||||
}
|
|
67
vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go
generated
vendored
67
vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go
generated
vendored
@ -1,67 +0,0 @@
|
|||||||
// Copyright 2018 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
package cpu
|
|
||||||
|
|
||||||
const cacheLineSize = 64
|
|
||||||
|
|
||||||
// HWCAP/HWCAP2 bits. These are exposed by Linux.
|
|
||||||
const (
|
|
||||||
hwcap_FP = 1 << 0
|
|
||||||
hwcap_ASIMD = 1 << 1
|
|
||||||
hwcap_EVTSTRM = 1 << 2
|
|
||||||
hwcap_AES = 1 << 3
|
|
||||||
hwcap_PMULL = 1 << 4
|
|
||||||
hwcap_SHA1 = 1 << 5
|
|
||||||
hwcap_SHA2 = 1 << 6
|
|
||||||
hwcap_CRC32 = 1 << 7
|
|
||||||
hwcap_ATOMICS = 1 << 8
|
|
||||||
hwcap_FPHP = 1 << 9
|
|
||||||
hwcap_ASIMDHP = 1 << 10
|
|
||||||
hwcap_CPUID = 1 << 11
|
|
||||||
hwcap_ASIMDRDM = 1 << 12
|
|
||||||
hwcap_JSCVT = 1 << 13
|
|
||||||
hwcap_FCMA = 1 << 14
|
|
||||||
hwcap_LRCPC = 1 << 15
|
|
||||||
hwcap_DCPOP = 1 << 16
|
|
||||||
hwcap_SHA3 = 1 << 17
|
|
||||||
hwcap_SM3 = 1 << 18
|
|
||||||
hwcap_SM4 = 1 << 19
|
|
||||||
hwcap_ASIMDDP = 1 << 20
|
|
||||||
hwcap_SHA512 = 1 << 21
|
|
||||||
hwcap_SVE = 1 << 22
|
|
||||||
hwcap_ASIMDFHM = 1 << 23
|
|
||||||
)
|
|
||||||
|
|
||||||
func doinit() {
|
|
||||||
// HWCAP feature bits
|
|
||||||
ARM64.HasFP = isSet(hwCap, hwcap_FP)
|
|
||||||
ARM64.HasASIMD = isSet(hwCap, hwcap_ASIMD)
|
|
||||||
ARM64.HasEVTSTRM = isSet(hwCap, hwcap_EVTSTRM)
|
|
||||||
ARM64.HasAES = isSet(hwCap, hwcap_AES)
|
|
||||||
ARM64.HasPMULL = isSet(hwCap, hwcap_PMULL)
|
|
||||||
ARM64.HasSHA1 = isSet(hwCap, hwcap_SHA1)
|
|
||||||
ARM64.HasSHA2 = isSet(hwCap, hwcap_SHA2)
|
|
||||||
ARM64.HasCRC32 = isSet(hwCap, hwcap_CRC32)
|
|
||||||
ARM64.HasATOMICS = isSet(hwCap, hwcap_ATOMICS)
|
|
||||||
ARM64.HasFPHP = isSet(hwCap, hwcap_FPHP)
|
|
||||||
ARM64.HasASIMDHP = isSet(hwCap, hwcap_ASIMDHP)
|
|
||||||
ARM64.HasCPUID = isSet(hwCap, hwcap_CPUID)
|
|
||||||
ARM64.HasASIMDRDM = isSet(hwCap, hwcap_ASIMDRDM)
|
|
||||||
ARM64.HasJSCVT = isSet(hwCap, hwcap_JSCVT)
|
|
||||||
ARM64.HasFCMA = isSet(hwCap, hwcap_FCMA)
|
|
||||||
ARM64.HasLRCPC = isSet(hwCap, hwcap_LRCPC)
|
|
||||||
ARM64.HasDCPOP = isSet(hwCap, hwcap_DCPOP)
|
|
||||||
ARM64.HasSHA3 = isSet(hwCap, hwcap_SHA3)
|
|
||||||
ARM64.HasSM3 = isSet(hwCap, hwcap_SM3)
|
|
||||||
ARM64.HasSM4 = isSet(hwCap, hwcap_SM4)
|
|
||||||
ARM64.HasASIMDDP = isSet(hwCap, hwcap_ASIMDDP)
|
|
||||||
ARM64.HasSHA512 = isSet(hwCap, hwcap_SHA512)
|
|
||||||
ARM64.HasSVE = isSet(hwCap, hwcap_SVE)
|
|
||||||
ARM64.HasASIMDFHM = isSet(hwCap, hwcap_ASIMDFHM)
|
|
||||||
}
|
|
||||||
|
|
||||||
func isSet(hwc uint, value uint) bool {
|
|
||||||
return hwc&value != 0
|
|
||||||
}
|
|
33
vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go
generated
vendored
33
vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go
generated
vendored
@ -1,33 +0,0 @@
|
|||||||
// Copyright 2018 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build linux
|
|
||||||
// +build ppc64 ppc64le
|
|
||||||
|
|
||||||
package cpu
|
|
||||||
|
|
||||||
const cacheLineSize = 128
|
|
||||||
|
|
||||||
// HWCAP/HWCAP2 bits. These are exposed by the kernel.
|
|
||||||
const (
|
|
||||||
// ISA Level
|
|
||||||
_PPC_FEATURE2_ARCH_2_07 = 0x80000000
|
|
||||||
_PPC_FEATURE2_ARCH_3_00 = 0x00800000
|
|
||||||
|
|
||||||
// CPU features
|
|
||||||
_PPC_FEATURE2_DARN = 0x00200000
|
|
||||||
_PPC_FEATURE2_SCV = 0x00100000
|
|
||||||
)
|
|
||||||
|
|
||||||
func doinit() {
|
|
||||||
// HWCAP2 feature bits
|
|
||||||
PPC64.IsPOWER8 = isSet(hwCap2, _PPC_FEATURE2_ARCH_2_07)
|
|
||||||
PPC64.IsPOWER9 = isSet(hwCap2, _PPC_FEATURE2_ARCH_3_00)
|
|
||||||
PPC64.HasDARN = isSet(hwCap2, _PPC_FEATURE2_DARN)
|
|
||||||
PPC64.HasSCV = isSet(hwCap2, _PPC_FEATURE2_SCV)
|
|
||||||
}
|
|
||||||
|
|
||||||
func isSet(hwc uint, value uint) bool {
|
|
||||||
return hwc&value != 0
|
|
||||||
}
|
|
161
vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go
generated
vendored
161
vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go
generated
vendored
@ -1,161 +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 cpu
|
|
||||||
|
|
||||||
const cacheLineSize = 256
|
|
||||||
|
|
||||||
const (
|
|
||||||
// bit mask values from /usr/include/bits/hwcap.h
|
|
||||||
hwcap_ZARCH = 2
|
|
||||||
hwcap_STFLE = 4
|
|
||||||
hwcap_MSA = 8
|
|
||||||
hwcap_LDISP = 16
|
|
||||||
hwcap_EIMM = 32
|
|
||||||
hwcap_DFP = 64
|
|
||||||
hwcap_ETF3EH = 256
|
|
||||||
hwcap_VX = 2048
|
|
||||||
hwcap_VXE = 8192
|
|
||||||
)
|
|
||||||
|
|
||||||
// bitIsSet reports whether the bit at index is set. The bit index
|
|
||||||
// is in big endian order, so bit index 0 is the leftmost bit.
|
|
||||||
func bitIsSet(bits []uint64, index uint) bool {
|
|
||||||
return bits[index/64]&((1<<63)>>(index%64)) != 0
|
|
||||||
}
|
|
||||||
|
|
||||||
// function is the code for the named cryptographic function.
|
|
||||||
type function uint8
|
|
||||||
|
|
||||||
const (
|
|
||||||
// KM{,A,C,CTR} function codes
|
|
||||||
aes128 function = 18 // AES-128
|
|
||||||
aes192 function = 19 // AES-192
|
|
||||||
aes256 function = 20 // AES-256
|
|
||||||
|
|
||||||
// K{I,L}MD function codes
|
|
||||||
sha1 function = 1 // SHA-1
|
|
||||||
sha256 function = 2 // SHA-256
|
|
||||||
sha512 function = 3 // SHA-512
|
|
||||||
sha3_224 function = 32 // SHA3-224
|
|
||||||
sha3_256 function = 33 // SHA3-256
|
|
||||||
sha3_384 function = 34 // SHA3-384
|
|
||||||
sha3_512 function = 35 // SHA3-512
|
|
||||||
shake128 function = 36 // SHAKE-128
|
|
||||||
shake256 function = 37 // SHAKE-256
|
|
||||||
|
|
||||||
// KLMD function codes
|
|
||||||
ghash function = 65 // GHASH
|
|
||||||
)
|
|
||||||
|
|
||||||
// queryResult contains the result of a Query function
|
|
||||||
// call. Bits are numbered in big endian order so the
|
|
||||||
// leftmost bit (the MSB) is at index 0.
|
|
||||||
type queryResult struct {
|
|
||||||
bits [2]uint64
|
|
||||||
}
|
|
||||||
|
|
||||||
// Has reports whether the given functions are present.
|
|
||||||
func (q *queryResult) Has(fns ...function) bool {
|
|
||||||
if len(fns) == 0 {
|
|
||||||
panic("no function codes provided")
|
|
||||||
}
|
|
||||||
for _, f := range fns {
|
|
||||||
if !bitIsSet(q.bits[:], uint(f)) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
// facility is a bit index for the named facility.
|
|
||||||
type facility uint8
|
|
||||||
|
|
||||||
const (
|
|
||||||
// cryptography facilities
|
|
||||||
msa4 facility = 77 // message-security-assist extension 4
|
|
||||||
msa8 facility = 146 // message-security-assist extension 8
|
|
||||||
)
|
|
||||||
|
|
||||||
// facilityList contains the result of an STFLE call.
|
|
||||||
// Bits are numbered in big endian order so the
|
|
||||||
// leftmost bit (the MSB) is at index 0.
|
|
||||||
type facilityList struct {
|
|
||||||
bits [4]uint64
|
|
||||||
}
|
|
||||||
|
|
||||||
// Has reports whether the given facilities are present.
|
|
||||||
func (s *facilityList) Has(fs ...facility) bool {
|
|
||||||
if len(fs) == 0 {
|
|
||||||
panic("no facility bits provided")
|
|
||||||
}
|
|
||||||
for _, f := range fs {
|
|
||||||
if !bitIsSet(s.bits[:], uint(f)) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func doinit() {
|
|
||||||
// test HWCAP bit vector
|
|
||||||
has := func(featureMask uint) bool {
|
|
||||||
return hwCap&featureMask == featureMask
|
|
||||||
}
|
|
||||||
|
|
||||||
// mandatory
|
|
||||||
S390X.HasZARCH = has(hwcap_ZARCH)
|
|
||||||
|
|
||||||
// optional
|
|
||||||
S390X.HasSTFLE = has(hwcap_STFLE)
|
|
||||||
S390X.HasLDISP = has(hwcap_LDISP)
|
|
||||||
S390X.HasEIMM = has(hwcap_EIMM)
|
|
||||||
S390X.HasETF3EH = has(hwcap_ETF3EH)
|
|
||||||
S390X.HasDFP = has(hwcap_DFP)
|
|
||||||
S390X.HasMSA = has(hwcap_MSA)
|
|
||||||
S390X.HasVX = has(hwcap_VX)
|
|
||||||
if S390X.HasVX {
|
|
||||||
S390X.HasVXE = has(hwcap_VXE)
|
|
||||||
}
|
|
||||||
|
|
||||||
// We need implementations of stfle, km and so on
|
|
||||||
// to detect cryptographic features.
|
|
||||||
if !haveAsmFunctions() {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// optional cryptographic functions
|
|
||||||
if S390X.HasMSA {
|
|
||||||
aes := []function{aes128, aes192, aes256}
|
|
||||||
|
|
||||||
// cipher message
|
|
||||||
km, kmc := kmQuery(), kmcQuery()
|
|
||||||
S390X.HasAES = km.Has(aes...)
|
|
||||||
S390X.HasAESCBC = kmc.Has(aes...)
|
|
||||||
if S390X.HasSTFLE {
|
|
||||||
facilities := stfle()
|
|
||||||
if facilities.Has(msa4) {
|
|
||||||
kmctr := kmctrQuery()
|
|
||||||
S390X.HasAESCTR = kmctr.Has(aes...)
|
|
||||||
}
|
|
||||||
if facilities.Has(msa8) {
|
|
||||||
kma := kmaQuery()
|
|
||||||
S390X.HasAESGCM = kma.Has(aes...)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// compute message digest
|
|
||||||
kimd := kimdQuery() // intermediate (no padding)
|
|
||||||
klmd := klmdQuery() // last (padding)
|
|
||||||
S390X.HasSHA1 = kimd.Has(sha1) && klmd.Has(sha1)
|
|
||||||
S390X.HasSHA256 = kimd.Has(sha256) && klmd.Has(sha256)
|
|
||||||
S390X.HasSHA512 = kimd.Has(sha512) && klmd.Has(sha512)
|
|
||||||
S390X.HasGHASH = kimd.Has(ghash) // KLMD-GHASH does not exist
|
|
||||||
sha3 := []function{
|
|
||||||
sha3_224, sha3_256, sha3_384, sha3_512,
|
|
||||||
shake128, shake256,
|
|
||||||
}
|
|
||||||
S390X.HasSHA3 = kimd.Has(sha3...) && klmd.Has(sha3...)
|
|
||||||
}
|
|
||||||
}
|
|
11
vendor/golang.org/x/sys/cpu/cpu_mips64x.go
generated
vendored
11
vendor/golang.org/x/sys/cpu/cpu_mips64x.go
generated
vendored
@ -1,11 +0,0 @@
|
|||||||
// Copyright 2018 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build mips64 mips64le
|
|
||||||
|
|
||||||
package cpu
|
|
||||||
|
|
||||||
const cacheLineSize = 32
|
|
||||||
|
|
||||||
func doinit() {}
|
|
11
vendor/golang.org/x/sys/cpu/cpu_mipsx.go
generated
vendored
11
vendor/golang.org/x/sys/cpu/cpu_mipsx.go
generated
vendored
@ -1,11 +0,0 @@
|
|||||||
// Copyright 2018 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build mips mipsle
|
|
||||||
|
|
||||||
package cpu
|
|
||||||
|
|
||||||
const cacheLineSize = 32
|
|
||||||
|
|
||||||
func doinit() {}
|
|
11
vendor/golang.org/x/sys/cpu/cpu_other_arm64.go
generated
vendored
11
vendor/golang.org/x/sys/cpu/cpu_other_arm64.go
generated
vendored
@ -1,11 +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.
|
|
||||||
|
|
||||||
// +build !linux,arm64
|
|
||||||
|
|
||||||
package cpu
|
|
||||||
|
|
||||||
const cacheLineSize = 64
|
|
||||||
|
|
||||||
func doinit() {}
|
|
57
vendor/golang.org/x/sys/cpu/cpu_s390x.s
generated
vendored
57
vendor/golang.org/x/sys/cpu/cpu_s390x.s
generated
vendored
@ -1,57 +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.
|
|
||||||
|
|
||||||
// +build !gccgo
|
|
||||||
|
|
||||||
#include "textflag.h"
|
|
||||||
|
|
||||||
// func stfle() facilityList
|
|
||||||
TEXT ·stfle(SB), NOSPLIT|NOFRAME, $0-32
|
|
||||||
MOVD $ret+0(FP), R1
|
|
||||||
MOVD $3, R0 // last doubleword index to store
|
|
||||||
XC $32, (R1), (R1) // clear 4 doublewords (32 bytes)
|
|
||||||
WORD $0xb2b01000 // store facility list extended (STFLE)
|
|
||||||
RET
|
|
||||||
|
|
||||||
// func kmQuery() queryResult
|
|
||||||
TEXT ·kmQuery(SB), NOSPLIT|NOFRAME, $0-16
|
|
||||||
MOVD $0, R0 // set function code to 0 (KM-Query)
|
|
||||||
MOVD $ret+0(FP), R1 // address of 16-byte return value
|
|
||||||
WORD $0xB92E0024 // cipher message (KM)
|
|
||||||
RET
|
|
||||||
|
|
||||||
// func kmcQuery() queryResult
|
|
||||||
TEXT ·kmcQuery(SB), NOSPLIT|NOFRAME, $0-16
|
|
||||||
MOVD $0, R0 // set function code to 0 (KMC-Query)
|
|
||||||
MOVD $ret+0(FP), R1 // address of 16-byte return value
|
|
||||||
WORD $0xB92F0024 // cipher message with chaining (KMC)
|
|
||||||
RET
|
|
||||||
|
|
||||||
// func kmctrQuery() queryResult
|
|
||||||
TEXT ·kmctrQuery(SB), NOSPLIT|NOFRAME, $0-16
|
|
||||||
MOVD $0, R0 // set function code to 0 (KMCTR-Query)
|
|
||||||
MOVD $ret+0(FP), R1 // address of 16-byte return value
|
|
||||||
WORD $0xB92D4024 // cipher message with counter (KMCTR)
|
|
||||||
RET
|
|
||||||
|
|
||||||
// func kmaQuery() queryResult
|
|
||||||
TEXT ·kmaQuery(SB), NOSPLIT|NOFRAME, $0-16
|
|
||||||
MOVD $0, R0 // set function code to 0 (KMA-Query)
|
|
||||||
MOVD $ret+0(FP), R1 // address of 16-byte return value
|
|
||||||
WORD $0xb9296024 // cipher message with authentication (KMA)
|
|
||||||
RET
|
|
||||||
|
|
||||||
// func kimdQuery() queryResult
|
|
||||||
TEXT ·kimdQuery(SB), NOSPLIT|NOFRAME, $0-16
|
|
||||||
MOVD $0, R0 // set function code to 0 (KIMD-Query)
|
|
||||||
MOVD $ret+0(FP), R1 // address of 16-byte return value
|
|
||||||
WORD $0xB93E0024 // compute intermediate message digest (KIMD)
|
|
||||||
RET
|
|
||||||
|
|
||||||
// func klmdQuery() queryResult
|
|
||||||
TEXT ·klmdQuery(SB), NOSPLIT|NOFRAME, $0-16
|
|
||||||
MOVD $0, R0 // set function code to 0 (KLMD-Query)
|
|
||||||
MOVD $ret+0(FP), R1 // address of 16-byte return value
|
|
||||||
WORD $0xB93F0024 // compute last message digest (KLMD)
|
|
||||||
RET
|
|
15
vendor/golang.org/x/sys/cpu/cpu_wasm.go
generated
vendored
15
vendor/golang.org/x/sys/cpu/cpu_wasm.go
generated
vendored
@ -1,15 +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.
|
|
||||||
|
|
||||||
// +build wasm
|
|
||||||
|
|
||||||
package cpu
|
|
||||||
|
|
||||||
// We're compiling the cpu package for an unknown (software-abstracted) CPU.
|
|
||||||
// Make CacheLinePad an empty struct and hope that the usual struct alignment
|
|
||||||
// rules are good enough.
|
|
||||||
|
|
||||||
const cacheLineSize = 0
|
|
||||||
|
|
||||||
func doinit() {}
|
|
59
vendor/golang.org/x/sys/cpu/cpu_x86.go
generated
vendored
59
vendor/golang.org/x/sys/cpu/cpu_x86.go
generated
vendored
@ -1,59 +0,0 @@
|
|||||||
// Copyright 2018 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build 386 amd64 amd64p32
|
|
||||||
|
|
||||||
package cpu
|
|
||||||
|
|
||||||
const cacheLineSize = 64
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
Initialized = true
|
|
||||||
|
|
||||||
maxID, _, _, _ := cpuid(0, 0)
|
|
||||||
|
|
||||||
if maxID < 1 {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
_, _, ecx1, edx1 := cpuid(1, 0)
|
|
||||||
X86.HasSSE2 = isSet(26, edx1)
|
|
||||||
|
|
||||||
X86.HasSSE3 = isSet(0, ecx1)
|
|
||||||
X86.HasPCLMULQDQ = isSet(1, ecx1)
|
|
||||||
X86.HasSSSE3 = isSet(9, ecx1)
|
|
||||||
X86.HasFMA = isSet(12, ecx1)
|
|
||||||
X86.HasSSE41 = isSet(19, ecx1)
|
|
||||||
X86.HasSSE42 = isSet(20, ecx1)
|
|
||||||
X86.HasPOPCNT = isSet(23, ecx1)
|
|
||||||
X86.HasAES = isSet(25, ecx1)
|
|
||||||
X86.HasOSXSAVE = isSet(27, ecx1)
|
|
||||||
X86.HasRDRAND = isSet(30, ecx1)
|
|
||||||
|
|
||||||
osSupportsAVX := false
|
|
||||||
// For XGETBV, OSXSAVE bit is required and sufficient.
|
|
||||||
if X86.HasOSXSAVE {
|
|
||||||
eax, _ := xgetbv()
|
|
||||||
// Check if XMM and YMM registers have OS support.
|
|
||||||
osSupportsAVX = isSet(1, eax) && isSet(2, eax)
|
|
||||||
}
|
|
||||||
|
|
||||||
X86.HasAVX = isSet(28, ecx1) && osSupportsAVX
|
|
||||||
|
|
||||||
if maxID < 7 {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
_, ebx7, _, _ := cpuid(7, 0)
|
|
||||||
X86.HasBMI1 = isSet(3, ebx7)
|
|
||||||
X86.HasAVX2 = isSet(5, ebx7) && osSupportsAVX
|
|
||||||
X86.HasBMI2 = isSet(8, ebx7)
|
|
||||||
X86.HasERMS = isSet(9, ebx7)
|
|
||||||
X86.HasRDSEED = isSet(18, ebx7)
|
|
||||||
X86.HasADX = isSet(19, ebx7)
|
|
||||||
}
|
|
||||||
|
|
||||||
func isSet(bitpos uint, value uint32) bool {
|
|
||||||
return value&(1<<bitpos) != 0
|
|
||||||
}
|
|
27
vendor/golang.org/x/sys/cpu/cpu_x86.s
generated
vendored
27
vendor/golang.org/x/sys/cpu/cpu_x86.s
generated
vendored
@ -1,27 +0,0 @@
|
|||||||
// Copyright 2018 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build 386 amd64 amd64p32
|
|
||||||
// +build !gccgo
|
|
||||||
|
|
||||||
#include "textflag.h"
|
|
||||||
|
|
||||||
// func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32)
|
|
||||||
TEXT ·cpuid(SB), NOSPLIT, $0-24
|
|
||||||
MOVL eaxArg+0(FP), AX
|
|
||||||
MOVL ecxArg+4(FP), CX
|
|
||||||
CPUID
|
|
||||||
MOVL AX, eax+8(FP)
|
|
||||||
MOVL BX, ebx+12(FP)
|
|
||||||
MOVL CX, ecx+16(FP)
|
|
||||||
MOVL DX, edx+20(FP)
|
|
||||||
RET
|
|
||||||
|
|
||||||
// func xgetbv() (eax, edx uint32)
|
|
||||||
TEXT ·xgetbv(SB),NOSPLIT,$0-8
|
|
||||||
MOVL $0, CX
|
|
||||||
XGETBV
|
|
||||||
MOVL AX, eax+0(FP)
|
|
||||||
MOVL DX, edx+4(FP)
|
|
||||||
RET
|
|
2
vendor/golang.org/x/sys/unix/.gitignore
generated
vendored
2
vendor/golang.org/x/sys/unix/.gitignore
generated
vendored
@ -1,2 +0,0 @@
|
|||||||
_obj/
|
|
||||||
unix.test
|
|
173
vendor/golang.org/x/sys/unix/README.md
generated
vendored
173
vendor/golang.org/x/sys/unix/README.md
generated
vendored
@ -1,173 +0,0 @@
|
|||||||
# Building `sys/unix`
|
|
||||||
|
|
||||||
The sys/unix package provides access to the raw system call interface of the
|
|
||||||
underlying operating system. See: https://godoc.org/golang.org/x/sys/unix
|
|
||||||
|
|
||||||
Porting Go to a new architecture/OS combination or adding syscalls, types, or
|
|
||||||
constants to an existing architecture/OS pair requires some manual effort;
|
|
||||||
however, there are tools that automate much of the process.
|
|
||||||
|
|
||||||
## Build Systems
|
|
||||||
|
|
||||||
There are currently two ways we generate the necessary files. We are currently
|
|
||||||
migrating the build system to use containers so the builds are reproducible.
|
|
||||||
This is being done on an OS-by-OS basis. Please update this documentation as
|
|
||||||
components of the build system change.
|
|
||||||
|
|
||||||
### Old Build System (currently for `GOOS != "linux"`)
|
|
||||||
|
|
||||||
The old build system generates the Go files based on the C header files
|
|
||||||
present on your system. This means that files
|
|
||||||
for a given GOOS/GOARCH pair must be generated on a system with that OS and
|
|
||||||
architecture. This also means that the generated code can differ from system
|
|
||||||
to system, based on differences in the header files.
|
|
||||||
|
|
||||||
To avoid this, if you are using the old build system, only generate the Go
|
|
||||||
files on an installation with unmodified header files. It is also important to
|
|
||||||
keep track of which version of the OS the files were generated from (ex.
|
|
||||||
Darwin 14 vs Darwin 15). This makes it easier to track the progress of changes
|
|
||||||
and have each OS upgrade correspond to a single change.
|
|
||||||
|
|
||||||
To build the files for your current OS and architecture, make sure GOOS and
|
|
||||||
GOARCH are set correctly and run `mkall.sh`. This will generate the files for
|
|
||||||
your specific system. Running `mkall.sh -n` shows the commands that will be run.
|
|
||||||
|
|
||||||
Requirements: bash, go
|
|
||||||
|
|
||||||
### New Build System (currently for `GOOS == "linux"`)
|
|
||||||
|
|
||||||
The new build system uses a Docker container to generate the go files directly
|
|
||||||
from source checkouts of the kernel and various system libraries. This means
|
|
||||||
that on any platform that supports Docker, all the files using the new build
|
|
||||||
system can be generated at once, and generated files will not change based on
|
|
||||||
what the person running the scripts has installed on their computer.
|
|
||||||
|
|
||||||
The OS specific files for the new build system are located in the `${GOOS}`
|
|
||||||
directory, and the build is coordinated by the `${GOOS}/mkall.go` program. When
|
|
||||||
the kernel or system library updates, modify the Dockerfile at
|
|
||||||
`${GOOS}/Dockerfile` to checkout the new release of the source.
|
|
||||||
|
|
||||||
To build all the files under the new build system, you must be on an amd64/Linux
|
|
||||||
system and have your GOOS and GOARCH set accordingly. Running `mkall.sh` will
|
|
||||||
then generate all of the files for all of the GOOS/GOARCH pairs in the new build
|
|
||||||
system. Running `mkall.sh -n` shows the commands that will be run.
|
|
||||||
|
|
||||||
Requirements: bash, go, docker
|
|
||||||
|
|
||||||
## Component files
|
|
||||||
|
|
||||||
This section describes the various files used in the code generation process.
|
|
||||||
It also contains instructions on how to modify these files to add a new
|
|
||||||
architecture/OS or to add additional syscalls, types, or constants. Note that
|
|
||||||
if you are using the new build system, the scripts/programs cannot be called normally.
|
|
||||||
They must be called from within the docker container.
|
|
||||||
|
|
||||||
### asm files
|
|
||||||
|
|
||||||
The hand-written assembly file at `asm_${GOOS}_${GOARCH}.s` implements system
|
|
||||||
call dispatch. There are three entry points:
|
|
||||||
```
|
|
||||||
func Syscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr)
|
|
||||||
func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr)
|
|
||||||
func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr)
|
|
||||||
```
|
|
||||||
The first and second are the standard ones; they differ only in how many
|
|
||||||
arguments can be passed to the kernel. The third is for low-level use by the
|
|
||||||
ForkExec wrapper. Unlike the first two, it does not call into the scheduler to
|
|
||||||
let it know that a system call is running.
|
|
||||||
|
|
||||||
When porting Go to an new architecture/OS, this file must be implemented for
|
|
||||||
each GOOS/GOARCH pair.
|
|
||||||
|
|
||||||
### mksysnum
|
|
||||||
|
|
||||||
Mksysnum is a Go program located at `${GOOS}/mksysnum.go` (or `mksysnum_${GOOS}.go`
|
|
||||||
for the old system). This program takes in a list of header files containing the
|
|
||||||
syscall number declarations and parses them to produce the corresponding list of
|
|
||||||
Go numeric constants. See `zsysnum_${GOOS}_${GOARCH}.go` for the generated
|
|
||||||
constants.
|
|
||||||
|
|
||||||
Adding new syscall numbers is mostly done by running the build on a sufficiently
|
|
||||||
new installation of the target OS (or updating the source checkouts for the
|
|
||||||
new build system). However, depending on the OS, you make need to update the
|
|
||||||
parsing in mksysnum.
|
|
||||||
|
|
||||||
### mksyscall.go
|
|
||||||
|
|
||||||
The `syscall.go`, `syscall_${GOOS}.go`, `syscall_${GOOS}_${GOARCH}.go` are
|
|
||||||
hand-written Go files which implement system calls (for unix, the specific OS,
|
|
||||||
or the specific OS/Architecture pair respectively) that need special handling
|
|
||||||
and list `//sys` comments giving prototypes for ones that can be generated.
|
|
||||||
|
|
||||||
The mksyscall.go program takes the `//sys` and `//sysnb` comments and converts
|
|
||||||
them into syscalls. This requires the name of the prototype in the comment to
|
|
||||||
match a syscall number in the `zsysnum_${GOOS}_${GOARCH}.go` file. The function
|
|
||||||
prototype can be exported (capitalized) or not.
|
|
||||||
|
|
||||||
Adding a new syscall often just requires adding a new `//sys` function prototype
|
|
||||||
with the desired arguments and a capitalized name so it is exported. However, if
|
|
||||||
you want the interface to the syscall to be different, often one will make an
|
|
||||||
unexported `//sys` prototype, an then write a custom wrapper in
|
|
||||||
`syscall_${GOOS}.go`.
|
|
||||||
|
|
||||||
### types files
|
|
||||||
|
|
||||||
For each OS, there is a hand-written Go file at `${GOOS}/types.go` (or
|
|
||||||
`types_${GOOS}.go` on the old system). This file includes standard C headers and
|
|
||||||
creates Go type aliases to the corresponding C types. The file is then fed
|
|
||||||
through godef to get the Go compatible definitions. Finally, the generated code
|
|
||||||
is fed though mkpost.go to format the code correctly and remove any hidden or
|
|
||||||
private identifiers. This cleaned-up code is written to
|
|
||||||
`ztypes_${GOOS}_${GOARCH}.go`.
|
|
||||||
|
|
||||||
The hardest part about preparing this file is figuring out which headers to
|
|
||||||
include and which symbols need to be `#define`d to get the actual data
|
|
||||||
structures that pass through to the kernel system calls. Some C libraries
|
|
||||||
preset alternate versions for binary compatibility and translate them on the
|
|
||||||
way in and out of system calls, but there is almost always a `#define` that can
|
|
||||||
get the real ones.
|
|
||||||
See `types_darwin.go` and `linux/types.go` for examples.
|
|
||||||
|
|
||||||
To add a new type, add in the necessary include statement at the top of the
|
|
||||||
file (if it is not already there) and add in a type alias line. Note that if
|
|
||||||
your type is significantly different on different architectures, you may need
|
|
||||||
some `#if/#elif` macros in your include statements.
|
|
||||||
|
|
||||||
### mkerrors.sh
|
|
||||||
|
|
||||||
This script is used to generate the system's various constants. This doesn't
|
|
||||||
just include the error numbers and error strings, but also the signal numbers
|
|
||||||
an a wide variety of miscellaneous constants. The constants come from the list
|
|
||||||
of include files in the `includes_${uname}` variable. A regex then picks out
|
|
||||||
the desired `#define` statements, and generates the corresponding Go constants.
|
|
||||||
The error numbers and strings are generated from `#include <errno.h>`, and the
|
|
||||||
signal numbers and strings are generated from `#include <signal.h>`. All of
|
|
||||||
these constants are written to `zerrors_${GOOS}_${GOARCH}.go` via a C program,
|
|
||||||
`_errors.c`, which prints out all the constants.
|
|
||||||
|
|
||||||
To add a constant, add the header that includes it to the appropriate variable.
|
|
||||||
Then, edit the regex (if necessary) to match the desired constant. Avoid making
|
|
||||||
the regex too broad to avoid matching unintended constants.
|
|
||||||
|
|
||||||
|
|
||||||
## Generated files
|
|
||||||
|
|
||||||
### `zerror_${GOOS}_${GOARCH}.go`
|
|
||||||
|
|
||||||
A file containing all of the system's generated error numbers, error strings,
|
|
||||||
signal numbers, and constants. Generated by `mkerrors.sh` (see above).
|
|
||||||
|
|
||||||
### `zsyscall_${GOOS}_${GOARCH}.go`
|
|
||||||
|
|
||||||
A file containing all the generated syscalls for a specific GOOS and GOARCH.
|
|
||||||
Generated by `mksyscall.go` (see above).
|
|
||||||
|
|
||||||
### `zsysnum_${GOOS}_${GOARCH}.go`
|
|
||||||
|
|
||||||
A list of numeric constants for all the syscall number of the specific GOOS
|
|
||||||
and GOARCH. Generated by mksysnum (see above).
|
|
||||||
|
|
||||||
### `ztypes_${GOOS}_${GOARCH}.go`
|
|
||||||
|
|
||||||
A file containing Go types for passing into (or returning from) syscalls.
|
|
||||||
Generated by godefs and the types file (see above).
|
|
124
vendor/golang.org/x/sys/unix/affinity_linux.go
generated
vendored
124
vendor/golang.org/x/sys/unix/affinity_linux.go
generated
vendored
@ -1,124 +0,0 @@
|
|||||||
// Copyright 2018 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.
|
|
||||||
|
|
||||||
// CPU affinity functions
|
|
||||||
|
|
||||||
package unix
|
|
||||||
|
|
||||||
import (
|
|
||||||
"unsafe"
|
|
||||||
)
|
|
||||||
|
|
||||||
const cpuSetSize = _CPU_SETSIZE / _NCPUBITS
|
|
||||||
|
|
||||||
// CPUSet represents a CPU affinity mask.
|
|
||||||
type CPUSet [cpuSetSize]cpuMask
|
|
||||||
|
|
||||||
func schedAffinity(trap uintptr, pid int, set *CPUSet) error {
|
|
||||||
_, _, e := RawSyscall(trap, uintptr(pid), uintptr(unsafe.Sizeof(*set)), uintptr(unsafe.Pointer(set)))
|
|
||||||
if e != 0 {
|
|
||||||
return errnoErr(e)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// SchedGetaffinity gets the CPU affinity mask of the thread specified by pid.
|
|
||||||
// If pid is 0 the calling thread is used.
|
|
||||||
func SchedGetaffinity(pid int, set *CPUSet) error {
|
|
||||||
return schedAffinity(SYS_SCHED_GETAFFINITY, pid, set)
|
|
||||||
}
|
|
||||||
|
|
||||||
// SchedSetaffinity sets the CPU affinity mask of the thread specified by pid.
|
|
||||||
// If pid is 0 the calling thread is used.
|
|
||||||
func SchedSetaffinity(pid int, set *CPUSet) error {
|
|
||||||
return schedAffinity(SYS_SCHED_SETAFFINITY, pid, set)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Zero clears the set s, so that it contains no CPUs.
|
|
||||||
func (s *CPUSet) Zero() {
|
|
||||||
for i := range s {
|
|
||||||
s[i] = 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func cpuBitsIndex(cpu int) int {
|
|
||||||
return cpu / _NCPUBITS
|
|
||||||
}
|
|
||||||
|
|
||||||
func cpuBitsMask(cpu int) cpuMask {
|
|
||||||
return cpuMask(1 << (uint(cpu) % _NCPUBITS))
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set adds cpu to the set s.
|
|
||||||
func (s *CPUSet) Set(cpu int) {
|
|
||||||
i := cpuBitsIndex(cpu)
|
|
||||||
if i < len(s) {
|
|
||||||
s[i] |= cpuBitsMask(cpu)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Clear removes cpu from the set s.
|
|
||||||
func (s *CPUSet) Clear(cpu int) {
|
|
||||||
i := cpuBitsIndex(cpu)
|
|
||||||
if i < len(s) {
|
|
||||||
s[i] &^= cpuBitsMask(cpu)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsSet reports whether cpu is in the set s.
|
|
||||||
func (s *CPUSet) IsSet(cpu int) bool {
|
|
||||||
i := cpuBitsIndex(cpu)
|
|
||||||
if i < len(s) {
|
|
||||||
return s[i]&cpuBitsMask(cpu) != 0
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// Count returns the number of CPUs in the set s.
|
|
||||||
func (s *CPUSet) Count() int {
|
|
||||||
c := 0
|
|
||||||
for _, b := range s {
|
|
||||||
c += onesCount64(uint64(b))
|
|
||||||
}
|
|
||||||
return c
|
|
||||||
}
|
|
||||||
|
|
||||||
// onesCount64 is a copy of Go 1.9's math/bits.OnesCount64.
|
|
||||||
// Once this package can require Go 1.9, we can delete this
|
|
||||||
// and update the caller to use bits.OnesCount64.
|
|
||||||
func onesCount64(x uint64) int {
|
|
||||||
const m0 = 0x5555555555555555 // 01010101 ...
|
|
||||||
const m1 = 0x3333333333333333 // 00110011 ...
|
|
||||||
const m2 = 0x0f0f0f0f0f0f0f0f // 00001111 ...
|
|
||||||
const m3 = 0x00ff00ff00ff00ff // etc.
|
|
||||||
const m4 = 0x0000ffff0000ffff
|
|
||||||
|
|
||||||
// Implementation: Parallel summing of adjacent bits.
|
|
||||||
// See "Hacker's Delight", Chap. 5: Counting Bits.
|
|
||||||
// The following pattern shows the general approach:
|
|
||||||
//
|
|
||||||
// x = x>>1&(m0&m) + x&(m0&m)
|
|
||||||
// x = x>>2&(m1&m) + x&(m1&m)
|
|
||||||
// x = x>>4&(m2&m) + x&(m2&m)
|
|
||||||
// x = x>>8&(m3&m) + x&(m3&m)
|
|
||||||
// x = x>>16&(m4&m) + x&(m4&m)
|
|
||||||
// x = x>>32&(m5&m) + x&(m5&m)
|
|
||||||
// return int(x)
|
|
||||||
//
|
|
||||||
// Masking (& operations) can be left away when there's no
|
|
||||||
// danger that a field's sum will carry over into the next
|
|
||||||
// field: Since the result cannot be > 64, 8 bits is enough
|
|
||||||
// and we can ignore the masks for the shifts by 8 and up.
|
|
||||||
// Per "Hacker's Delight", the first line can be simplified
|
|
||||||
// more, but it saves at best one instruction, so we leave
|
|
||||||
// it alone for clarity.
|
|
||||||
const m = 1<<64 - 1
|
|
||||||
x = x>>1&(m0&m) + x&(m0&m)
|
|
||||||
x = x>>2&(m1&m) + x&(m1&m)
|
|
||||||
x = (x>>4 + x) & (m2 & m)
|
|
||||||
x += x >> 8
|
|
||||||
x += x >> 16
|
|
||||||
x += x >> 32
|
|
||||||
return int(x) & (1<<7 - 1)
|
|
||||||
}
|
|
14
vendor/golang.org/x/sys/unix/aliases.go
generated
vendored
14
vendor/golang.org/x/sys/unix/aliases.go
generated
vendored
@ -1,14 +0,0 @@
|
|||||||
// Copyright 2018 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
|
|
||||||
// +build go1.9
|
|
||||||
|
|
||||||
package unix
|
|
||||||
|
|
||||||
import "syscall"
|
|
||||||
|
|
||||||
type Signal = syscall.Signal
|
|
||||||
type Errno = syscall.Errno
|
|
||||||
type SysProcAttr = syscall.SysProcAttr
|
|
17
vendor/golang.org/x/sys/unix/asm_aix_ppc64.s
generated
vendored
17
vendor/golang.org/x/sys/unix/asm_aix_ppc64.s
generated
vendored
@ -1,17 +0,0 @@
|
|||||||
// Copyright 2018 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build !gccgo
|
|
||||||
|
|
||||||
#include "textflag.h"
|
|
||||||
|
|
||||||
//
|
|
||||||
// System calls for ppc64, AIX are implemented in runtime/syscall_aix.go
|
|
||||||
//
|
|
||||||
|
|
||||||
TEXT ·syscall6(SB),NOSPLIT,$0-88
|
|
||||||
JMP syscall·syscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·rawSyscall6(SB),NOSPLIT,$0-88
|
|
||||||
JMP syscall·rawSyscall6(SB)
|
|
29
vendor/golang.org/x/sys/unix/asm_darwin_386.s
generated
vendored
29
vendor/golang.org/x/sys/unix/asm_darwin_386.s
generated
vendored
@ -1,29 +0,0 @@
|
|||||||
// Copyright 2009 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build !gccgo
|
|
||||||
|
|
||||||
#include "textflag.h"
|
|
||||||
|
|
||||||
//
|
|
||||||
// System call support for 386, Darwin
|
|
||||||
//
|
|
||||||
|
|
||||||
// Just jump to package syscall's implementation for all these functions.
|
|
||||||
// The runtime may know about them.
|
|
||||||
|
|
||||||
TEXT ·Syscall(SB),NOSPLIT,$0-28
|
|
||||||
JMP syscall·Syscall(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall6(SB),NOSPLIT,$0-40
|
|
||||||
JMP syscall·Syscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall9(SB),NOSPLIT,$0-52
|
|
||||||
JMP syscall·Syscall9(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-28
|
|
||||||
JMP syscall·RawSyscall(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
|
|
||||||
JMP syscall·RawSyscall6(SB)
|
|
29
vendor/golang.org/x/sys/unix/asm_darwin_amd64.s
generated
vendored
29
vendor/golang.org/x/sys/unix/asm_darwin_amd64.s
generated
vendored
@ -1,29 +0,0 @@
|
|||||||
// Copyright 2009 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build !gccgo
|
|
||||||
|
|
||||||
#include "textflag.h"
|
|
||||||
|
|
||||||
//
|
|
||||||
// System call support for AMD64, Darwin
|
|
||||||
//
|
|
||||||
|
|
||||||
// Just jump to package syscall's implementation for all these functions.
|
|
||||||
// The runtime may know about them.
|
|
||||||
|
|
||||||
TEXT ·Syscall(SB),NOSPLIT,$0-56
|
|
||||||
JMP syscall·Syscall(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall6(SB),NOSPLIT,$0-80
|
|
||||||
JMP syscall·Syscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall9(SB),NOSPLIT,$0-104
|
|
||||||
JMP syscall·Syscall9(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-56
|
|
||||||
JMP syscall·RawSyscall(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
|
|
||||||
JMP syscall·RawSyscall6(SB)
|
|
30
vendor/golang.org/x/sys/unix/asm_darwin_arm.s
generated
vendored
30
vendor/golang.org/x/sys/unix/asm_darwin_arm.s
generated
vendored
@ -1,30 +0,0 @@
|
|||||||
// Copyright 2015 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build !gccgo
|
|
||||||
// +build arm,darwin
|
|
||||||
|
|
||||||
#include "textflag.h"
|
|
||||||
|
|
||||||
//
|
|
||||||
// System call support for ARM, Darwin
|
|
||||||
//
|
|
||||||
|
|
||||||
// Just jump to package syscall's implementation for all these functions.
|
|
||||||
// The runtime may know about them.
|
|
||||||
|
|
||||||
TEXT ·Syscall(SB),NOSPLIT,$0-28
|
|
||||||
B syscall·Syscall(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall6(SB),NOSPLIT,$0-40
|
|
||||||
B syscall·Syscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall9(SB),NOSPLIT,$0-52
|
|
||||||
B syscall·Syscall9(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-28
|
|
||||||
B syscall·RawSyscall(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
|
|
||||||
B syscall·RawSyscall6(SB)
|
|
30
vendor/golang.org/x/sys/unix/asm_darwin_arm64.s
generated
vendored
30
vendor/golang.org/x/sys/unix/asm_darwin_arm64.s
generated
vendored
@ -1,30 +0,0 @@
|
|||||||
// Copyright 2015 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build !gccgo
|
|
||||||
// +build arm64,darwin
|
|
||||||
|
|
||||||
#include "textflag.h"
|
|
||||||
|
|
||||||
//
|
|
||||||
// System call support for AMD64, Darwin
|
|
||||||
//
|
|
||||||
|
|
||||||
// Just jump to package syscall's implementation for all these functions.
|
|
||||||
// The runtime may know about them.
|
|
||||||
|
|
||||||
TEXT ·Syscall(SB),NOSPLIT,$0-56
|
|
||||||
B syscall·Syscall(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall6(SB),NOSPLIT,$0-80
|
|
||||||
B syscall·Syscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall9(SB),NOSPLIT,$0-104
|
|
||||||
B syscall·Syscall9(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-56
|
|
||||||
B syscall·RawSyscall(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
|
|
||||||
B syscall·RawSyscall6(SB)
|
|
29
vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s
generated
vendored
29
vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s
generated
vendored
@ -1,29 +0,0 @@
|
|||||||
// Copyright 2009 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build !gccgo
|
|
||||||
|
|
||||||
#include "textflag.h"
|
|
||||||
|
|
||||||
//
|
|
||||||
// System call support for AMD64, DragonFly
|
|
||||||
//
|
|
||||||
|
|
||||||
// Just jump to package syscall's implementation for all these functions.
|
|
||||||
// The runtime may know about them.
|
|
||||||
|
|
||||||
TEXT ·Syscall(SB),NOSPLIT,$0-56
|
|
||||||
JMP syscall·Syscall(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall6(SB),NOSPLIT,$0-80
|
|
||||||
JMP syscall·Syscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall9(SB),NOSPLIT,$0-104
|
|
||||||
JMP syscall·Syscall9(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-56
|
|
||||||
JMP syscall·RawSyscall(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
|
|
||||||
JMP syscall·RawSyscall6(SB)
|
|
29
vendor/golang.org/x/sys/unix/asm_freebsd_386.s
generated
vendored
29
vendor/golang.org/x/sys/unix/asm_freebsd_386.s
generated
vendored
@ -1,29 +0,0 @@
|
|||||||
// Copyright 2009 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build !gccgo
|
|
||||||
|
|
||||||
#include "textflag.h"
|
|
||||||
|
|
||||||
//
|
|
||||||
// System call support for 386, FreeBSD
|
|
||||||
//
|
|
||||||
|
|
||||||
// Just jump to package syscall's implementation for all these functions.
|
|
||||||
// The runtime may know about them.
|
|
||||||
|
|
||||||
TEXT ·Syscall(SB),NOSPLIT,$0-28
|
|
||||||
JMP syscall·Syscall(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall6(SB),NOSPLIT,$0-40
|
|
||||||
JMP syscall·Syscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall9(SB),NOSPLIT,$0-52
|
|
||||||
JMP syscall·Syscall9(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-28
|
|
||||||
JMP syscall·RawSyscall(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
|
|
||||||
JMP syscall·RawSyscall6(SB)
|
|
29
vendor/golang.org/x/sys/unix/asm_freebsd_amd64.s
generated
vendored
29
vendor/golang.org/x/sys/unix/asm_freebsd_amd64.s
generated
vendored
@ -1,29 +0,0 @@
|
|||||||
// Copyright 2009 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build !gccgo
|
|
||||||
|
|
||||||
#include "textflag.h"
|
|
||||||
|
|
||||||
//
|
|
||||||
// System call support for AMD64, FreeBSD
|
|
||||||
//
|
|
||||||
|
|
||||||
// Just jump to package syscall's implementation for all these functions.
|
|
||||||
// The runtime may know about them.
|
|
||||||
|
|
||||||
TEXT ·Syscall(SB),NOSPLIT,$0-56
|
|
||||||
JMP syscall·Syscall(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall6(SB),NOSPLIT,$0-80
|
|
||||||
JMP syscall·Syscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall9(SB),NOSPLIT,$0-104
|
|
||||||
JMP syscall·Syscall9(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-56
|
|
||||||
JMP syscall·RawSyscall(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
|
|
||||||
JMP syscall·RawSyscall6(SB)
|
|
29
vendor/golang.org/x/sys/unix/asm_freebsd_arm.s
generated
vendored
29
vendor/golang.org/x/sys/unix/asm_freebsd_arm.s
generated
vendored
@ -1,29 +0,0 @@
|
|||||||
// Copyright 2012 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build !gccgo
|
|
||||||
|
|
||||||
#include "textflag.h"
|
|
||||||
|
|
||||||
//
|
|
||||||
// System call support for ARM, FreeBSD
|
|
||||||
//
|
|
||||||
|
|
||||||
// Just jump to package syscall's implementation for all these functions.
|
|
||||||
// The runtime may know about them.
|
|
||||||
|
|
||||||
TEXT ·Syscall(SB),NOSPLIT,$0-28
|
|
||||||
B syscall·Syscall(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall6(SB),NOSPLIT,$0-40
|
|
||||||
B syscall·Syscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall9(SB),NOSPLIT,$0-52
|
|
||||||
B syscall·Syscall9(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-28
|
|
||||||
B syscall·RawSyscall(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
|
|
||||||
B syscall·RawSyscall6(SB)
|
|
29
vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s
generated
vendored
29
vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s
generated
vendored
@ -1,29 +0,0 @@
|
|||||||
// Copyright 2018 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build !gccgo
|
|
||||||
|
|
||||||
#include "textflag.h"
|
|
||||||
|
|
||||||
//
|
|
||||||
// System call support for ARM64, FreeBSD
|
|
||||||
//
|
|
||||||
|
|
||||||
// Just jump to package syscall's implementation for all these functions.
|
|
||||||
// The runtime may know about them.
|
|
||||||
|
|
||||||
TEXT ·Syscall(SB),NOSPLIT,$0-56
|
|
||||||
JMP syscall·Syscall(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall6(SB),NOSPLIT,$0-80
|
|
||||||
JMP syscall·Syscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall9(SB),NOSPLIT,$0-104
|
|
||||||
JMP syscall·Syscall9(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-56
|
|
||||||
JMP syscall·RawSyscall(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
|
|
||||||
JMP syscall·RawSyscall6(SB)
|
|
65
vendor/golang.org/x/sys/unix/asm_linux_386.s
generated
vendored
65
vendor/golang.org/x/sys/unix/asm_linux_386.s
generated
vendored
@ -1,65 +0,0 @@
|
|||||||
// Copyright 2009 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build !gccgo
|
|
||||||
|
|
||||||
#include "textflag.h"
|
|
||||||
|
|
||||||
//
|
|
||||||
// System calls for 386, Linux
|
|
||||||
//
|
|
||||||
|
|
||||||
// See ../runtime/sys_linux_386.s for the reason why we always use int 0x80
|
|
||||||
// instead of the glibc-specific "CALL 0x10(GS)".
|
|
||||||
#define INVOKE_SYSCALL INT $0x80
|
|
||||||
|
|
||||||
// Just jump to package syscall's implementation for all these functions.
|
|
||||||
// The runtime may know about them.
|
|
||||||
|
|
||||||
TEXT ·Syscall(SB),NOSPLIT,$0-28
|
|
||||||
JMP syscall·Syscall(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall6(SB),NOSPLIT,$0-40
|
|
||||||
JMP syscall·Syscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·SyscallNoError(SB),NOSPLIT,$0-24
|
|
||||||
CALL runtime·entersyscall(SB)
|
|
||||||
MOVL trap+0(FP), AX // syscall entry
|
|
||||||
MOVL a1+4(FP), BX
|
|
||||||
MOVL a2+8(FP), CX
|
|
||||||
MOVL a3+12(FP), DX
|
|
||||||
MOVL $0, SI
|
|
||||||
MOVL $0, DI
|
|
||||||
INVOKE_SYSCALL
|
|
||||||
MOVL AX, r1+16(FP)
|
|
||||||
MOVL DX, r2+20(FP)
|
|
||||||
CALL runtime·exitsyscall(SB)
|
|
||||||
RET
|
|
||||||
|
|
||||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-28
|
|
||||||
JMP syscall·RawSyscall(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
|
|
||||||
JMP syscall·RawSyscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24
|
|
||||||
MOVL trap+0(FP), AX // syscall entry
|
|
||||||
MOVL a1+4(FP), BX
|
|
||||||
MOVL a2+8(FP), CX
|
|
||||||
MOVL a3+12(FP), DX
|
|
||||||
MOVL $0, SI
|
|
||||||
MOVL $0, DI
|
|
||||||
INVOKE_SYSCALL
|
|
||||||
MOVL AX, r1+16(FP)
|
|
||||||
MOVL DX, r2+20(FP)
|
|
||||||
RET
|
|
||||||
|
|
||||||
TEXT ·socketcall(SB),NOSPLIT,$0-36
|
|
||||||
JMP syscall·socketcall(SB)
|
|
||||||
|
|
||||||
TEXT ·rawsocketcall(SB),NOSPLIT,$0-36
|
|
||||||
JMP syscall·rawsocketcall(SB)
|
|
||||||
|
|
||||||
TEXT ·seek(SB),NOSPLIT,$0-28
|
|
||||||
JMP syscall·seek(SB)
|
|
57
vendor/golang.org/x/sys/unix/asm_linux_amd64.s
generated
vendored
57
vendor/golang.org/x/sys/unix/asm_linux_amd64.s
generated
vendored
@ -1,57 +0,0 @@
|
|||||||
// Copyright 2009 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build !gccgo
|
|
||||||
|
|
||||||
#include "textflag.h"
|
|
||||||
|
|
||||||
//
|
|
||||||
// System calls for AMD64, Linux
|
|
||||||
//
|
|
||||||
|
|
||||||
// Just jump to package syscall's implementation for all these functions.
|
|
||||||
// The runtime may know about them.
|
|
||||||
|
|
||||||
TEXT ·Syscall(SB),NOSPLIT,$0-56
|
|
||||||
JMP syscall·Syscall(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall6(SB),NOSPLIT,$0-80
|
|
||||||
JMP syscall·Syscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
|
|
||||||
CALL runtime·entersyscall(SB)
|
|
||||||
MOVQ a1+8(FP), DI
|
|
||||||
MOVQ a2+16(FP), SI
|
|
||||||
MOVQ a3+24(FP), DX
|
|
||||||
MOVQ $0, R10
|
|
||||||
MOVQ $0, R8
|
|
||||||
MOVQ $0, R9
|
|
||||||
MOVQ trap+0(FP), AX // syscall entry
|
|
||||||
SYSCALL
|
|
||||||
MOVQ AX, r1+32(FP)
|
|
||||||
MOVQ DX, r2+40(FP)
|
|
||||||
CALL runtime·exitsyscall(SB)
|
|
||||||
RET
|
|
||||||
|
|
||||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-56
|
|
||||||
JMP syscall·RawSyscall(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
|
|
||||||
JMP syscall·RawSyscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
|
|
||||||
MOVQ a1+8(FP), DI
|
|
||||||
MOVQ a2+16(FP), SI
|
|
||||||
MOVQ a3+24(FP), DX
|
|
||||||
MOVQ $0, R10
|
|
||||||
MOVQ $0, R8
|
|
||||||
MOVQ $0, R9
|
|
||||||
MOVQ trap+0(FP), AX // syscall entry
|
|
||||||
SYSCALL
|
|
||||||
MOVQ AX, r1+32(FP)
|
|
||||||
MOVQ DX, r2+40(FP)
|
|
||||||
RET
|
|
||||||
|
|
||||||
TEXT ·gettimeofday(SB),NOSPLIT,$0-16
|
|
||||||
JMP syscall·gettimeofday(SB)
|
|
56
vendor/golang.org/x/sys/unix/asm_linux_arm.s
generated
vendored
56
vendor/golang.org/x/sys/unix/asm_linux_arm.s
generated
vendored
@ -1,56 +0,0 @@
|
|||||||
// Copyright 2009 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build !gccgo
|
|
||||||
|
|
||||||
#include "textflag.h"
|
|
||||||
|
|
||||||
//
|
|
||||||
// System calls for arm, Linux
|
|
||||||
//
|
|
||||||
|
|
||||||
// Just jump to package syscall's implementation for all these functions.
|
|
||||||
// The runtime may know about them.
|
|
||||||
|
|
||||||
TEXT ·Syscall(SB),NOSPLIT,$0-28
|
|
||||||
B syscall·Syscall(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall6(SB),NOSPLIT,$0-40
|
|
||||||
B syscall·Syscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·SyscallNoError(SB),NOSPLIT,$0-24
|
|
||||||
BL runtime·entersyscall(SB)
|
|
||||||
MOVW trap+0(FP), R7
|
|
||||||
MOVW a1+4(FP), R0
|
|
||||||
MOVW a2+8(FP), R1
|
|
||||||
MOVW a3+12(FP), R2
|
|
||||||
MOVW $0, R3
|
|
||||||
MOVW $0, R4
|
|
||||||
MOVW $0, R5
|
|
||||||
SWI $0
|
|
||||||
MOVW R0, r1+16(FP)
|
|
||||||
MOVW $0, R0
|
|
||||||
MOVW R0, r2+20(FP)
|
|
||||||
BL runtime·exitsyscall(SB)
|
|
||||||
RET
|
|
||||||
|
|
||||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-28
|
|
||||||
B syscall·RawSyscall(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
|
|
||||||
B syscall·RawSyscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24
|
|
||||||
MOVW trap+0(FP), R7 // syscall entry
|
|
||||||
MOVW a1+4(FP), R0
|
|
||||||
MOVW a2+8(FP), R1
|
|
||||||
MOVW a3+12(FP), R2
|
|
||||||
SWI $0
|
|
||||||
MOVW R0, r1+16(FP)
|
|
||||||
MOVW $0, R0
|
|
||||||
MOVW R0, r2+20(FP)
|
|
||||||
RET
|
|
||||||
|
|
||||||
TEXT ·seek(SB),NOSPLIT,$0-28
|
|
||||||
B syscall·seek(SB)
|
|
52
vendor/golang.org/x/sys/unix/asm_linux_arm64.s
generated
vendored
52
vendor/golang.org/x/sys/unix/asm_linux_arm64.s
generated
vendored
@ -1,52 +0,0 @@
|
|||||||
// Copyright 2015 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build linux
|
|
||||||
// +build arm64
|
|
||||||
// +build !gccgo
|
|
||||||
|
|
||||||
#include "textflag.h"
|
|
||||||
|
|
||||||
// Just jump to package syscall's implementation for all these functions.
|
|
||||||
// The runtime may know about them.
|
|
||||||
|
|
||||||
TEXT ·Syscall(SB),NOSPLIT,$0-56
|
|
||||||
B syscall·Syscall(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall6(SB),NOSPLIT,$0-80
|
|
||||||
B syscall·Syscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
|
|
||||||
BL runtime·entersyscall(SB)
|
|
||||||
MOVD a1+8(FP), R0
|
|
||||||
MOVD a2+16(FP), R1
|
|
||||||
MOVD a3+24(FP), R2
|
|
||||||
MOVD $0, R3
|
|
||||||
MOVD $0, R4
|
|
||||||
MOVD $0, R5
|
|
||||||
MOVD trap+0(FP), R8 // syscall entry
|
|
||||||
SVC
|
|
||||||
MOVD R0, r1+32(FP) // r1
|
|
||||||
MOVD R1, r2+40(FP) // r2
|
|
||||||
BL runtime·exitsyscall(SB)
|
|
||||||
RET
|
|
||||||
|
|
||||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-56
|
|
||||||
B syscall·RawSyscall(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
|
|
||||||
B syscall·RawSyscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
|
|
||||||
MOVD a1+8(FP), R0
|
|
||||||
MOVD a2+16(FP), R1
|
|
||||||
MOVD a3+24(FP), R2
|
|
||||||
MOVD $0, R3
|
|
||||||
MOVD $0, R4
|
|
||||||
MOVD $0, R5
|
|
||||||
MOVD trap+0(FP), R8 // syscall entry
|
|
||||||
SVC
|
|
||||||
MOVD R0, r1+32(FP)
|
|
||||||
MOVD R1, r2+40(FP)
|
|
||||||
RET
|
|
56
vendor/golang.org/x/sys/unix/asm_linux_mips64x.s
generated
vendored
56
vendor/golang.org/x/sys/unix/asm_linux_mips64x.s
generated
vendored
@ -1,56 +0,0 @@
|
|||||||
// Copyright 2015 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build linux
|
|
||||||
// +build mips64 mips64le
|
|
||||||
// +build !gccgo
|
|
||||||
|
|
||||||
#include "textflag.h"
|
|
||||||
|
|
||||||
//
|
|
||||||
// System calls for mips64, Linux
|
|
||||||
//
|
|
||||||
|
|
||||||
// Just jump to package syscall's implementation for all these functions.
|
|
||||||
// The runtime may know about them.
|
|
||||||
|
|
||||||
TEXT ·Syscall(SB),NOSPLIT,$0-56
|
|
||||||
JMP syscall·Syscall(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall6(SB),NOSPLIT,$0-80
|
|
||||||
JMP syscall·Syscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
|
|
||||||
JAL runtime·entersyscall(SB)
|
|
||||||
MOVV a1+8(FP), R4
|
|
||||||
MOVV a2+16(FP), R5
|
|
||||||
MOVV a3+24(FP), R6
|
|
||||||
MOVV R0, R7
|
|
||||||
MOVV R0, R8
|
|
||||||
MOVV R0, R9
|
|
||||||
MOVV trap+0(FP), R2 // syscall entry
|
|
||||||
SYSCALL
|
|
||||||
MOVV R2, r1+32(FP)
|
|
||||||
MOVV R3, r2+40(FP)
|
|
||||||
JAL runtime·exitsyscall(SB)
|
|
||||||
RET
|
|
||||||
|
|
||||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-56
|
|
||||||
JMP syscall·RawSyscall(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
|
|
||||||
JMP syscall·RawSyscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
|
|
||||||
MOVV a1+8(FP), R4
|
|
||||||
MOVV a2+16(FP), R5
|
|
||||||
MOVV a3+24(FP), R6
|
|
||||||
MOVV R0, R7
|
|
||||||
MOVV R0, R8
|
|
||||||
MOVV R0, R9
|
|
||||||
MOVV trap+0(FP), R2 // syscall entry
|
|
||||||
SYSCALL
|
|
||||||
MOVV R2, r1+32(FP)
|
|
||||||
MOVV R3, r2+40(FP)
|
|
||||||
RET
|
|
54
vendor/golang.org/x/sys/unix/asm_linux_mipsx.s
generated
vendored
54
vendor/golang.org/x/sys/unix/asm_linux_mipsx.s
generated
vendored
@ -1,54 +0,0 @@
|
|||||||
// Copyright 2016 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build linux
|
|
||||||
// +build mips mipsle
|
|
||||||
// +build !gccgo
|
|
||||||
|
|
||||||
#include "textflag.h"
|
|
||||||
|
|
||||||
//
|
|
||||||
// System calls for mips, Linux
|
|
||||||
//
|
|
||||||
|
|
||||||
// Just jump to package syscall's implementation for all these functions.
|
|
||||||
// The runtime may know about them.
|
|
||||||
|
|
||||||
TEXT ·Syscall(SB),NOSPLIT,$0-28
|
|
||||||
JMP syscall·Syscall(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall6(SB),NOSPLIT,$0-40
|
|
||||||
JMP syscall·Syscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall9(SB),NOSPLIT,$0-52
|
|
||||||
JMP syscall·Syscall9(SB)
|
|
||||||
|
|
||||||
TEXT ·SyscallNoError(SB),NOSPLIT,$0-24
|
|
||||||
JAL runtime·entersyscall(SB)
|
|
||||||
MOVW a1+4(FP), R4
|
|
||||||
MOVW a2+8(FP), R5
|
|
||||||
MOVW a3+12(FP), R6
|
|
||||||
MOVW R0, R7
|
|
||||||
MOVW trap+0(FP), R2 // syscall entry
|
|
||||||
SYSCALL
|
|
||||||
MOVW R2, r1+16(FP) // r1
|
|
||||||
MOVW R3, r2+20(FP) // r2
|
|
||||||
JAL runtime·exitsyscall(SB)
|
|
||||||
RET
|
|
||||||
|
|
||||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-28
|
|
||||||
JMP syscall·RawSyscall(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
|
|
||||||
JMP syscall·RawSyscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24
|
|
||||||
MOVW a1+4(FP), R4
|
|
||||||
MOVW a2+8(FP), R5
|
|
||||||
MOVW a3+12(FP), R6
|
|
||||||
MOVW trap+0(FP), R2 // syscall entry
|
|
||||||
SYSCALL
|
|
||||||
MOVW R2, r1+16(FP)
|
|
||||||
MOVW R3, r2+20(FP)
|
|
||||||
RET
|
|
44
vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s
generated
vendored
44
vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s
generated
vendored
@ -1,44 +0,0 @@
|
|||||||
// Copyright 2014 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build linux
|
|
||||||
// +build ppc64 ppc64le
|
|
||||||
// +build !gccgo
|
|
||||||
|
|
||||||
#include "textflag.h"
|
|
||||||
|
|
||||||
//
|
|
||||||
// System calls for ppc64, Linux
|
|
||||||
//
|
|
||||||
|
|
||||||
// Just jump to package syscall's implementation for all these functions.
|
|
||||||
// The runtime may know about them.
|
|
||||||
|
|
||||||
TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
|
|
||||||
BL runtime·entersyscall(SB)
|
|
||||||
MOVD a1+8(FP), R3
|
|
||||||
MOVD a2+16(FP), R4
|
|
||||||
MOVD a3+24(FP), R5
|
|
||||||
MOVD R0, R6
|
|
||||||
MOVD R0, R7
|
|
||||||
MOVD R0, R8
|
|
||||||
MOVD trap+0(FP), R9 // syscall entry
|
|
||||||
SYSCALL R9
|
|
||||||
MOVD R3, r1+32(FP)
|
|
||||||
MOVD R4, r2+40(FP)
|
|
||||||
BL runtime·exitsyscall(SB)
|
|
||||||
RET
|
|
||||||
|
|
||||||
TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
|
|
||||||
MOVD a1+8(FP), R3
|
|
||||||
MOVD a2+16(FP), R4
|
|
||||||
MOVD a3+24(FP), R5
|
|
||||||
MOVD R0, R6
|
|
||||||
MOVD R0, R7
|
|
||||||
MOVD R0, R8
|
|
||||||
MOVD trap+0(FP), R9 // syscall entry
|
|
||||||
SYSCALL R9
|
|
||||||
MOVD R3, r1+32(FP)
|
|
||||||
MOVD R4, r2+40(FP)
|
|
||||||
RET
|
|
56
vendor/golang.org/x/sys/unix/asm_linux_s390x.s
generated
vendored
56
vendor/golang.org/x/sys/unix/asm_linux_s390x.s
generated
vendored
@ -1,56 +0,0 @@
|
|||||||
// Copyright 2016 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build s390x
|
|
||||||
// +build linux
|
|
||||||
// +build !gccgo
|
|
||||||
|
|
||||||
#include "textflag.h"
|
|
||||||
|
|
||||||
//
|
|
||||||
// System calls for s390x, Linux
|
|
||||||
//
|
|
||||||
|
|
||||||
// Just jump to package syscall's implementation for all these functions.
|
|
||||||
// The runtime may know about them.
|
|
||||||
|
|
||||||
TEXT ·Syscall(SB),NOSPLIT,$0-56
|
|
||||||
BR syscall·Syscall(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall6(SB),NOSPLIT,$0-80
|
|
||||||
BR syscall·Syscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
|
|
||||||
BL runtime·entersyscall(SB)
|
|
||||||
MOVD a1+8(FP), R2
|
|
||||||
MOVD a2+16(FP), R3
|
|
||||||
MOVD a3+24(FP), R4
|
|
||||||
MOVD $0, R5
|
|
||||||
MOVD $0, R6
|
|
||||||
MOVD $0, R7
|
|
||||||
MOVD trap+0(FP), R1 // syscall entry
|
|
||||||
SYSCALL
|
|
||||||
MOVD R2, r1+32(FP)
|
|
||||||
MOVD R3, r2+40(FP)
|
|
||||||
BL runtime·exitsyscall(SB)
|
|
||||||
RET
|
|
||||||
|
|
||||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-56
|
|
||||||
BR syscall·RawSyscall(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
|
|
||||||
BR syscall·RawSyscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
|
|
||||||
MOVD a1+8(FP), R2
|
|
||||||
MOVD a2+16(FP), R3
|
|
||||||
MOVD a3+24(FP), R4
|
|
||||||
MOVD $0, R5
|
|
||||||
MOVD $0, R6
|
|
||||||
MOVD $0, R7
|
|
||||||
MOVD trap+0(FP), R1 // syscall entry
|
|
||||||
SYSCALL
|
|
||||||
MOVD R2, r1+32(FP)
|
|
||||||
MOVD R3, r2+40(FP)
|
|
||||||
RET
|
|
29
vendor/golang.org/x/sys/unix/asm_netbsd_386.s
generated
vendored
29
vendor/golang.org/x/sys/unix/asm_netbsd_386.s
generated
vendored
@ -1,29 +0,0 @@
|
|||||||
// Copyright 2009 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build !gccgo
|
|
||||||
|
|
||||||
#include "textflag.h"
|
|
||||||
|
|
||||||
//
|
|
||||||
// System call support for 386, NetBSD
|
|
||||||
//
|
|
||||||
|
|
||||||
// Just jump to package syscall's implementation for all these functions.
|
|
||||||
// The runtime may know about them.
|
|
||||||
|
|
||||||
TEXT ·Syscall(SB),NOSPLIT,$0-28
|
|
||||||
JMP syscall·Syscall(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall6(SB),NOSPLIT,$0-40
|
|
||||||
JMP syscall·Syscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall9(SB),NOSPLIT,$0-52
|
|
||||||
JMP syscall·Syscall9(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-28
|
|
||||||
JMP syscall·RawSyscall(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
|
|
||||||
JMP syscall·RawSyscall6(SB)
|
|
29
vendor/golang.org/x/sys/unix/asm_netbsd_amd64.s
generated
vendored
29
vendor/golang.org/x/sys/unix/asm_netbsd_amd64.s
generated
vendored
@ -1,29 +0,0 @@
|
|||||||
// Copyright 2009 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build !gccgo
|
|
||||||
|
|
||||||
#include "textflag.h"
|
|
||||||
|
|
||||||
//
|
|
||||||
// System call support for AMD64, NetBSD
|
|
||||||
//
|
|
||||||
|
|
||||||
// Just jump to package syscall's implementation for all these functions.
|
|
||||||
// The runtime may know about them.
|
|
||||||
|
|
||||||
TEXT ·Syscall(SB),NOSPLIT,$0-56
|
|
||||||
JMP syscall·Syscall(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall6(SB),NOSPLIT,$0-80
|
|
||||||
JMP syscall·Syscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall9(SB),NOSPLIT,$0-104
|
|
||||||
JMP syscall·Syscall9(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-56
|
|
||||||
JMP syscall·RawSyscall(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
|
|
||||||
JMP syscall·RawSyscall6(SB)
|
|
29
vendor/golang.org/x/sys/unix/asm_netbsd_arm.s
generated
vendored
29
vendor/golang.org/x/sys/unix/asm_netbsd_arm.s
generated
vendored
@ -1,29 +0,0 @@
|
|||||||
// Copyright 2013 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build !gccgo
|
|
||||||
|
|
||||||
#include "textflag.h"
|
|
||||||
|
|
||||||
//
|
|
||||||
// System call support for ARM, NetBSD
|
|
||||||
//
|
|
||||||
|
|
||||||
// Just jump to package syscall's implementation for all these functions.
|
|
||||||
// The runtime may know about them.
|
|
||||||
|
|
||||||
TEXT ·Syscall(SB),NOSPLIT,$0-28
|
|
||||||
B syscall·Syscall(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall6(SB),NOSPLIT,$0-40
|
|
||||||
B syscall·Syscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall9(SB),NOSPLIT,$0-52
|
|
||||||
B syscall·Syscall9(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-28
|
|
||||||
B syscall·RawSyscall(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
|
|
||||||
B syscall·RawSyscall6(SB)
|
|
29
vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s
generated
vendored
29
vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s
generated
vendored
@ -1,29 +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.
|
|
||||||
|
|
||||||
// +build !gccgo
|
|
||||||
|
|
||||||
#include "textflag.h"
|
|
||||||
|
|
||||||
//
|
|
||||||
// System call support for ARM64, NetBSD
|
|
||||||
//
|
|
||||||
|
|
||||||
// Just jump to package syscall's implementation for all these functions.
|
|
||||||
// The runtime may know about them.
|
|
||||||
|
|
||||||
TEXT ·Syscall(SB),NOSPLIT,$0-56
|
|
||||||
B syscall·Syscall(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall6(SB),NOSPLIT,$0-80
|
|
||||||
B syscall·Syscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall9(SB),NOSPLIT,$0-104
|
|
||||||
B syscall·Syscall9(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-56
|
|
||||||
B syscall·RawSyscall(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
|
|
||||||
B syscall·RawSyscall6(SB)
|
|
29
vendor/golang.org/x/sys/unix/asm_openbsd_386.s
generated
vendored
29
vendor/golang.org/x/sys/unix/asm_openbsd_386.s
generated
vendored
@ -1,29 +0,0 @@
|
|||||||
// Copyright 2009 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build !gccgo
|
|
||||||
|
|
||||||
#include "textflag.h"
|
|
||||||
|
|
||||||
//
|
|
||||||
// System call support for 386, OpenBSD
|
|
||||||
//
|
|
||||||
|
|
||||||
// Just jump to package syscall's implementation for all these functions.
|
|
||||||
// The runtime may know about them.
|
|
||||||
|
|
||||||
TEXT ·Syscall(SB),NOSPLIT,$0-28
|
|
||||||
JMP syscall·Syscall(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall6(SB),NOSPLIT,$0-40
|
|
||||||
JMP syscall·Syscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall9(SB),NOSPLIT,$0-52
|
|
||||||
JMP syscall·Syscall9(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-28
|
|
||||||
JMP syscall·RawSyscall(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
|
|
||||||
JMP syscall·RawSyscall6(SB)
|
|
29
vendor/golang.org/x/sys/unix/asm_openbsd_amd64.s
generated
vendored
29
vendor/golang.org/x/sys/unix/asm_openbsd_amd64.s
generated
vendored
@ -1,29 +0,0 @@
|
|||||||
// Copyright 2009 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build !gccgo
|
|
||||||
|
|
||||||
#include "textflag.h"
|
|
||||||
|
|
||||||
//
|
|
||||||
// System call support for AMD64, OpenBSD
|
|
||||||
//
|
|
||||||
|
|
||||||
// Just jump to package syscall's implementation for all these functions.
|
|
||||||
// The runtime may know about them.
|
|
||||||
|
|
||||||
TEXT ·Syscall(SB),NOSPLIT,$0-56
|
|
||||||
JMP syscall·Syscall(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall6(SB),NOSPLIT,$0-80
|
|
||||||
JMP syscall·Syscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall9(SB),NOSPLIT,$0-104
|
|
||||||
JMP syscall·Syscall9(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-56
|
|
||||||
JMP syscall·RawSyscall(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
|
|
||||||
JMP syscall·RawSyscall6(SB)
|
|
29
vendor/golang.org/x/sys/unix/asm_openbsd_arm.s
generated
vendored
29
vendor/golang.org/x/sys/unix/asm_openbsd_arm.s
generated
vendored
@ -1,29 +0,0 @@
|
|||||||
// Copyright 2017 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build !gccgo
|
|
||||||
|
|
||||||
#include "textflag.h"
|
|
||||||
|
|
||||||
//
|
|
||||||
// System call support for ARM, OpenBSD
|
|
||||||
//
|
|
||||||
|
|
||||||
// Just jump to package syscall's implementation for all these functions.
|
|
||||||
// The runtime may know about them.
|
|
||||||
|
|
||||||
TEXT ·Syscall(SB),NOSPLIT,$0-28
|
|
||||||
B syscall·Syscall(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall6(SB),NOSPLIT,$0-40
|
|
||||||
B syscall·Syscall6(SB)
|
|
||||||
|
|
||||||
TEXT ·Syscall9(SB),NOSPLIT,$0-52
|
|
||||||
B syscall·Syscall9(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-28
|
|
||||||
B syscall·RawSyscall(SB)
|
|
||||||
|
|
||||||
TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
|
|
||||||
B syscall·RawSyscall6(SB)
|
|
17
vendor/golang.org/x/sys/unix/asm_solaris_amd64.s
generated
vendored
17
vendor/golang.org/x/sys/unix/asm_solaris_amd64.s
generated
vendored
@ -1,17 +0,0 @@
|
|||||||
// Copyright 2014 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build !gccgo
|
|
||||||
|
|
||||||
#include "textflag.h"
|
|
||||||
|
|
||||||
//
|
|
||||||
// System calls for amd64, Solaris are implemented in runtime/syscall_solaris.go
|
|
||||||
//
|
|
||||||
|
|
||||||
TEXT ·sysvicall6(SB),NOSPLIT,$0-88
|
|
||||||
JMP syscall·sysvicall6(SB)
|
|
||||||
|
|
||||||
TEXT ·rawSysvicall6(SB),NOSPLIT,$0-88
|
|
||||||
JMP syscall·rawSysvicall6(SB)
|
|
35
vendor/golang.org/x/sys/unix/bluetooth_linux.go
generated
vendored
35
vendor/golang.org/x/sys/unix/bluetooth_linux.go
generated
vendored
@ -1,35 +0,0 @@
|
|||||||
// Copyright 2016 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.
|
|
||||||
|
|
||||||
// Bluetooth sockets and messages
|
|
||||||
|
|
||||||
package unix
|
|
||||||
|
|
||||||
// Bluetooth Protocols
|
|
||||||
const (
|
|
||||||
BTPROTO_L2CAP = 0
|
|
||||||
BTPROTO_HCI = 1
|
|
||||||
BTPROTO_SCO = 2
|
|
||||||
BTPROTO_RFCOMM = 3
|
|
||||||
BTPROTO_BNEP = 4
|
|
||||||
BTPROTO_CMTP = 5
|
|
||||||
BTPROTO_HIDP = 6
|
|
||||||
BTPROTO_AVDTP = 7
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
HCI_CHANNEL_RAW = 0
|
|
||||||
HCI_CHANNEL_USER = 1
|
|
||||||
HCI_CHANNEL_MONITOR = 2
|
|
||||||
HCI_CHANNEL_CONTROL = 3
|
|
||||||
)
|
|
||||||
|
|
||||||
// Socketoption Level
|
|
||||||
const (
|
|
||||||
SOL_BLUETOOTH = 0x112
|
|
||||||
SOL_HCI = 0x0
|
|
||||||
SOL_L2CAP = 0x6
|
|
||||||
SOL_RFCOMM = 0x12
|
|
||||||
SOL_SCO = 0x11
|
|
||||||
)
|
|
195
vendor/golang.org/x/sys/unix/cap_freebsd.go
generated
vendored
195
vendor/golang.org/x/sys/unix/cap_freebsd.go
generated
vendored
@ -1,195 +0,0 @@
|
|||||||
// Copyright 2017 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build freebsd
|
|
||||||
|
|
||||||
package unix
|
|
||||||
|
|
||||||
import (
|
|
||||||
"errors"
|
|
||||||
"fmt"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Go implementation of C mostly found in /usr/src/sys/kern/subr_capability.c
|
|
||||||
|
|
||||||
const (
|
|
||||||
// This is the version of CapRights this package understands. See C implementation for parallels.
|
|
||||||
capRightsGoVersion = CAP_RIGHTS_VERSION_00
|
|
||||||
capArSizeMin = CAP_RIGHTS_VERSION_00 + 2
|
|
||||||
capArSizeMax = capRightsGoVersion + 2
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
bit2idx = []int{
|
|
||||||
-1, 0, 1, -1, 2, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1,
|
|
||||||
4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
func capidxbit(right uint64) int {
|
|
||||||
return int((right >> 57) & 0x1f)
|
|
||||||
}
|
|
||||||
|
|
||||||
func rightToIndex(right uint64) (int, error) {
|
|
||||||
idx := capidxbit(right)
|
|
||||||
if idx < 0 || idx >= len(bit2idx) {
|
|
||||||
return -2, fmt.Errorf("index for right 0x%x out of range", right)
|
|
||||||
}
|
|
||||||
return bit2idx[idx], nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func caprver(right uint64) int {
|
|
||||||
return int(right >> 62)
|
|
||||||
}
|
|
||||||
|
|
||||||
func capver(rights *CapRights) int {
|
|
||||||
return caprver(rights.Rights[0])
|
|
||||||
}
|
|
||||||
|
|
||||||
func caparsize(rights *CapRights) int {
|
|
||||||
return capver(rights) + 2
|
|
||||||
}
|
|
||||||
|
|
||||||
// CapRightsSet sets the permissions in setrights in rights.
|
|
||||||
func CapRightsSet(rights *CapRights, setrights []uint64) error {
|
|
||||||
// This is essentially a copy of cap_rights_vset()
|
|
||||||
if capver(rights) != CAP_RIGHTS_VERSION_00 {
|
|
||||||
return fmt.Errorf("bad rights version %d", capver(rights))
|
|
||||||
}
|
|
||||||
|
|
||||||
n := caparsize(rights)
|
|
||||||
if n < capArSizeMin || n > capArSizeMax {
|
|
||||||
return errors.New("bad rights size")
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, right := range setrights {
|
|
||||||
if caprver(right) != CAP_RIGHTS_VERSION_00 {
|
|
||||||
return errors.New("bad right version")
|
|
||||||
}
|
|
||||||
i, err := rightToIndex(right)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if i >= n {
|
|
||||||
return errors.New("index overflow")
|
|
||||||
}
|
|
||||||
if capidxbit(rights.Rights[i]) != capidxbit(right) {
|
|
||||||
return errors.New("index mismatch")
|
|
||||||
}
|
|
||||||
rights.Rights[i] |= right
|
|
||||||
if capidxbit(rights.Rights[i]) != capidxbit(right) {
|
|
||||||
return errors.New("index mismatch (after assign)")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// CapRightsClear clears the permissions in clearrights from rights.
|
|
||||||
func CapRightsClear(rights *CapRights, clearrights []uint64) error {
|
|
||||||
// This is essentially a copy of cap_rights_vclear()
|
|
||||||
if capver(rights) != CAP_RIGHTS_VERSION_00 {
|
|
||||||
return fmt.Errorf("bad rights version %d", capver(rights))
|
|
||||||
}
|
|
||||||
|
|
||||||
n := caparsize(rights)
|
|
||||||
if n < capArSizeMin || n > capArSizeMax {
|
|
||||||
return errors.New("bad rights size")
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, right := range clearrights {
|
|
||||||
if caprver(right) != CAP_RIGHTS_VERSION_00 {
|
|
||||||
return errors.New("bad right version")
|
|
||||||
}
|
|
||||||
i, err := rightToIndex(right)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if i >= n {
|
|
||||||
return errors.New("index overflow")
|
|
||||||
}
|
|
||||||
if capidxbit(rights.Rights[i]) != capidxbit(right) {
|
|
||||||
return errors.New("index mismatch")
|
|
||||||
}
|
|
||||||
rights.Rights[i] &= ^(right & 0x01FFFFFFFFFFFFFF)
|
|
||||||
if capidxbit(rights.Rights[i]) != capidxbit(right) {
|
|
||||||
return errors.New("index mismatch (after assign)")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// CapRightsIsSet checks whether all the permissions in setrights are present in rights.
|
|
||||||
func CapRightsIsSet(rights *CapRights, setrights []uint64) (bool, error) {
|
|
||||||
// This is essentially a copy of cap_rights_is_vset()
|
|
||||||
if capver(rights) != CAP_RIGHTS_VERSION_00 {
|
|
||||||
return false, fmt.Errorf("bad rights version %d", capver(rights))
|
|
||||||
}
|
|
||||||
|
|
||||||
n := caparsize(rights)
|
|
||||||
if n < capArSizeMin || n > capArSizeMax {
|
|
||||||
return false, errors.New("bad rights size")
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, right := range setrights {
|
|
||||||
if caprver(right) != CAP_RIGHTS_VERSION_00 {
|
|
||||||
return false, errors.New("bad right version")
|
|
||||||
}
|
|
||||||
i, err := rightToIndex(right)
|
|
||||||
if err != nil {
|
|
||||||
return false, err
|
|
||||||
}
|
|
||||||
if i >= n {
|
|
||||||
return false, errors.New("index overflow")
|
|
||||||
}
|
|
||||||
if capidxbit(rights.Rights[i]) != capidxbit(right) {
|
|
||||||
return false, errors.New("index mismatch")
|
|
||||||
}
|
|
||||||
if (rights.Rights[i] & right) != right {
|
|
||||||
return false, nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func capright(idx uint64, bit uint64) uint64 {
|
|
||||||
return ((1 << (57 + idx)) | bit)
|
|
||||||
}
|
|
||||||
|
|
||||||
// CapRightsInit returns a pointer to an initialised CapRights structure filled with rights.
|
|
||||||
// See man cap_rights_init(3) and rights(4).
|
|
||||||
func CapRightsInit(rights []uint64) (*CapRights, error) {
|
|
||||||
var r CapRights
|
|
||||||
r.Rights[0] = (capRightsGoVersion << 62) | capright(0, 0)
|
|
||||||
r.Rights[1] = capright(1, 0)
|
|
||||||
|
|
||||||
err := CapRightsSet(&r, rights)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return &r, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// CapRightsLimit reduces the operations permitted on fd to at most those contained in rights.
|
|
||||||
// The capability rights on fd can never be increased by CapRightsLimit.
|
|
||||||
// See man cap_rights_limit(2) and rights(4).
|
|
||||||
func CapRightsLimit(fd uintptr, rights *CapRights) error {
|
|
||||||
return capRightsLimit(int(fd), rights)
|
|
||||||
}
|
|
||||||
|
|
||||||
// CapRightsGet returns a CapRights structure containing the operations permitted on fd.
|
|
||||||
// See man cap_rights_get(3) and rights(4).
|
|
||||||
func CapRightsGet(fd uintptr) (*CapRights, error) {
|
|
||||||
r, err := CapRightsInit(nil)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
err = capRightsGet(capRightsGoVersion, int(fd), r)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return r, nil
|
|
||||||
}
|
|
13
vendor/golang.org/x/sys/unix/constants.go
generated
vendored
13
vendor/golang.org/x/sys/unix/constants.go
generated
vendored
@ -1,13 +0,0 @@
|
|||||||
// Copyright 2015 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
|
|
||||||
|
|
||||||
package unix
|
|
||||||
|
|
||||||
const (
|
|
||||||
R_OK = 0x4
|
|
||||||
W_OK = 0x2
|
|
||||||
X_OK = 0x1
|
|
||||||
)
|
|
27
vendor/golang.org/x/sys/unix/dev_aix_ppc.go
generated
vendored
27
vendor/golang.org/x/sys/unix/dev_aix_ppc.go
generated
vendored
@ -1,27 +0,0 @@
|
|||||||
// Copyright 2018 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build aix
|
|
||||||
// +build ppc
|
|
||||||
|
|
||||||
// Functions to access/create device major and minor numbers matching the
|
|
||||||
// encoding used by AIX.
|
|
||||||
|
|
||||||
package unix
|
|
||||||
|
|
||||||
// Major returns the major component of a Linux device number.
|
|
||||||
func Major(dev uint64) uint32 {
|
|
||||||
return uint32((dev >> 16) & 0xffff)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Minor returns the minor component of a Linux device number.
|
|
||||||
func Minor(dev uint64) uint32 {
|
|
||||||
return uint32(dev & 0xffff)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Mkdev returns a Linux device number generated from the given major and minor
|
|
||||||
// components.
|
|
||||||
func Mkdev(major, minor uint32) uint64 {
|
|
||||||
return uint64(((major) << 16) | (minor))
|
|
||||||
}
|
|
29
vendor/golang.org/x/sys/unix/dev_aix_ppc64.go
generated
vendored
29
vendor/golang.org/x/sys/unix/dev_aix_ppc64.go
generated
vendored
@ -1,29 +0,0 @@
|
|||||||
// Copyright 2018 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build aix
|
|
||||||
// +build ppc64
|
|
||||||
|
|
||||||
// Functions to access/create device major and minor numbers matching the
|
|
||||||
// encoding used AIX.
|
|
||||||
|
|
||||||
package unix
|
|
||||||
|
|
||||||
// Major returns the major component of a Linux device number.
|
|
||||||
func Major(dev uint64) uint32 {
|
|
||||||
return uint32((dev & 0x3fffffff00000000) >> 32)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Minor returns the minor component of a Linux device number.
|
|
||||||
func Minor(dev uint64) uint32 {
|
|
||||||
return uint32((dev & 0x00000000ffffffff) >> 0)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Mkdev returns a Linux device number generated from the given major and minor
|
|
||||||
// components.
|
|
||||||
func Mkdev(major, minor uint32) uint64 {
|
|
||||||
var DEVNO64 uint64
|
|
||||||
DEVNO64 = 0x8000000000000000
|
|
||||||
return ((uint64(major) << 32) | (uint64(minor) & 0x00000000FFFFFFFF) | DEVNO64)
|
|
||||||
}
|
|
24
vendor/golang.org/x/sys/unix/dev_darwin.go
generated
vendored
24
vendor/golang.org/x/sys/unix/dev_darwin.go
generated
vendored
@ -1,24 +0,0 @@
|
|||||||
// Copyright 2017 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.
|
|
||||||
|
|
||||||
// Functions to access/create device major and minor numbers matching the
|
|
||||||
// encoding used in Darwin's sys/types.h header.
|
|
||||||
|
|
||||||
package unix
|
|
||||||
|
|
||||||
// Major returns the major component of a Darwin device number.
|
|
||||||
func Major(dev uint64) uint32 {
|
|
||||||
return uint32((dev >> 24) & 0xff)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Minor returns the minor component of a Darwin device number.
|
|
||||||
func Minor(dev uint64) uint32 {
|
|
||||||
return uint32(dev & 0xffffff)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Mkdev returns a Darwin device number generated from the given major and minor
|
|
||||||
// components.
|
|
||||||
func Mkdev(major, minor uint32) uint64 {
|
|
||||||
return (uint64(major) << 24) | uint64(minor)
|
|
||||||
}
|
|
30
vendor/golang.org/x/sys/unix/dev_dragonfly.go
generated
vendored
30
vendor/golang.org/x/sys/unix/dev_dragonfly.go
generated
vendored
@ -1,30 +0,0 @@
|
|||||||
// Copyright 2017 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.
|
|
||||||
|
|
||||||
// Functions to access/create device major and minor numbers matching the
|
|
||||||
// encoding used in Dragonfly's sys/types.h header.
|
|
||||||
//
|
|
||||||
// The information below is extracted and adapted from sys/types.h:
|
|
||||||
//
|
|
||||||
// Minor gives a cookie instead of an index since in order to avoid changing the
|
|
||||||
// meanings of bits 0-15 or wasting time and space shifting bits 16-31 for
|
|
||||||
// devices that don't use them.
|
|
||||||
|
|
||||||
package unix
|
|
||||||
|
|
||||||
// Major returns the major component of a DragonFlyBSD device number.
|
|
||||||
func Major(dev uint64) uint32 {
|
|
||||||
return uint32((dev >> 8) & 0xff)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Minor returns the minor component of a DragonFlyBSD device number.
|
|
||||||
func Minor(dev uint64) uint32 {
|
|
||||||
return uint32(dev & 0xffff00ff)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Mkdev returns a DragonFlyBSD device number generated from the given major and
|
|
||||||
// minor components.
|
|
||||||
func Mkdev(major, minor uint32) uint64 {
|
|
||||||
return (uint64(major) << 8) | uint64(minor)
|
|
||||||
}
|
|
30
vendor/golang.org/x/sys/unix/dev_freebsd.go
generated
vendored
30
vendor/golang.org/x/sys/unix/dev_freebsd.go
generated
vendored
@ -1,30 +0,0 @@
|
|||||||
// Copyright 2017 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.
|
|
||||||
|
|
||||||
// Functions to access/create device major and minor numbers matching the
|
|
||||||
// encoding used in FreeBSD's sys/types.h header.
|
|
||||||
//
|
|
||||||
// The information below is extracted and adapted from sys/types.h:
|
|
||||||
//
|
|
||||||
// Minor gives a cookie instead of an index since in order to avoid changing the
|
|
||||||
// meanings of bits 0-15 or wasting time and space shifting bits 16-31 for
|
|
||||||
// devices that don't use them.
|
|
||||||
|
|
||||||
package unix
|
|
||||||
|
|
||||||
// Major returns the major component of a FreeBSD device number.
|
|
||||||
func Major(dev uint64) uint32 {
|
|
||||||
return uint32((dev >> 8) & 0xff)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Minor returns the minor component of a FreeBSD device number.
|
|
||||||
func Minor(dev uint64) uint32 {
|
|
||||||
return uint32(dev & 0xffff00ff)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Mkdev returns a FreeBSD device number generated from the given major and
|
|
||||||
// minor components.
|
|
||||||
func Mkdev(major, minor uint32) uint64 {
|
|
||||||
return (uint64(major) << 8) | uint64(minor)
|
|
||||||
}
|
|
42
vendor/golang.org/x/sys/unix/dev_linux.go
generated
vendored
42
vendor/golang.org/x/sys/unix/dev_linux.go
generated
vendored
@ -1,42 +0,0 @@
|
|||||||
// Copyright 2017 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.
|
|
||||||
|
|
||||||
// Functions to access/create device major and minor numbers matching the
|
|
||||||
// encoding used by the Linux kernel and glibc.
|
|
||||||
//
|
|
||||||
// The information below is extracted and adapted from bits/sysmacros.h in the
|
|
||||||
// glibc sources:
|
|
||||||
//
|
|
||||||
// dev_t in glibc is 64-bit, with 32-bit major and minor numbers. glibc's
|
|
||||||
// default encoding is MMMM Mmmm mmmM MMmm, where M is a hex digit of the major
|
|
||||||
// number and m is a hex digit of the minor number. This is backward compatible
|
|
||||||
// with legacy systems where dev_t is 16 bits wide, encoded as MMmm. It is also
|
|
||||||
// backward compatible with the Linux kernel, which for some architectures uses
|
|
||||||
// 32-bit dev_t, encoded as mmmM MMmm.
|
|
||||||
|
|
||||||
package unix
|
|
||||||
|
|
||||||
// Major returns the major component of a Linux device number.
|
|
||||||
func Major(dev uint64) uint32 {
|
|
||||||
major := uint32((dev & 0x00000000000fff00) >> 8)
|
|
||||||
major |= uint32((dev & 0xfffff00000000000) >> 32)
|
|
||||||
return major
|
|
||||||
}
|
|
||||||
|
|
||||||
// Minor returns the minor component of a Linux device number.
|
|
||||||
func Minor(dev uint64) uint32 {
|
|
||||||
minor := uint32((dev & 0x00000000000000ff) >> 0)
|
|
||||||
minor |= uint32((dev & 0x00000ffffff00000) >> 12)
|
|
||||||
return minor
|
|
||||||
}
|
|
||||||
|
|
||||||
// Mkdev returns a Linux device number generated from the given major and minor
|
|
||||||
// components.
|
|
||||||
func Mkdev(major, minor uint32) uint64 {
|
|
||||||
dev := (uint64(major) & 0x00000fff) << 8
|
|
||||||
dev |= (uint64(major) & 0xfffff000) << 32
|
|
||||||
dev |= (uint64(minor) & 0x000000ff) << 0
|
|
||||||
dev |= (uint64(minor) & 0xffffff00) << 12
|
|
||||||
return dev
|
|
||||||
}
|
|
29
vendor/golang.org/x/sys/unix/dev_netbsd.go
generated
vendored
29
vendor/golang.org/x/sys/unix/dev_netbsd.go
generated
vendored
@ -1,29 +0,0 @@
|
|||||||
// Copyright 2017 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.
|
|
||||||
|
|
||||||
// Functions to access/create device major and minor numbers matching the
|
|
||||||
// encoding used in NetBSD's sys/types.h header.
|
|
||||||
|
|
||||||
package unix
|
|
||||||
|
|
||||||
// Major returns the major component of a NetBSD device number.
|
|
||||||
func Major(dev uint64) uint32 {
|
|
||||||
return uint32((dev & 0x000fff00) >> 8)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Minor returns the minor component of a NetBSD device number.
|
|
||||||
func Minor(dev uint64) uint32 {
|
|
||||||
minor := uint32((dev & 0x000000ff) >> 0)
|
|
||||||
minor |= uint32((dev & 0xfff00000) >> 12)
|
|
||||||
return minor
|
|
||||||
}
|
|
||||||
|
|
||||||
// Mkdev returns a NetBSD device number generated from the given major and minor
|
|
||||||
// components.
|
|
||||||
func Mkdev(major, minor uint32) uint64 {
|
|
||||||
dev := (uint64(major) << 8) & 0x000fff00
|
|
||||||
dev |= (uint64(minor) << 12) & 0xfff00000
|
|
||||||
dev |= (uint64(minor) << 0) & 0x000000ff
|
|
||||||
return dev
|
|
||||||
}
|
|
29
vendor/golang.org/x/sys/unix/dev_openbsd.go
generated
vendored
29
vendor/golang.org/x/sys/unix/dev_openbsd.go
generated
vendored
@ -1,29 +0,0 @@
|
|||||||
// Copyright 2017 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.
|
|
||||||
|
|
||||||
// Functions to access/create device major and minor numbers matching the
|
|
||||||
// encoding used in OpenBSD's sys/types.h header.
|
|
||||||
|
|
||||||
package unix
|
|
||||||
|
|
||||||
// Major returns the major component of an OpenBSD device number.
|
|
||||||
func Major(dev uint64) uint32 {
|
|
||||||
return uint32((dev & 0x0000ff00) >> 8)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Minor returns the minor component of an OpenBSD device number.
|
|
||||||
func Minor(dev uint64) uint32 {
|
|
||||||
minor := uint32((dev & 0x000000ff) >> 0)
|
|
||||||
minor |= uint32((dev & 0xffff0000) >> 8)
|
|
||||||
return minor
|
|
||||||
}
|
|
||||||
|
|
||||||
// Mkdev returns an OpenBSD device number generated from the given major and minor
|
|
||||||
// components.
|
|
||||||
func Mkdev(major, minor uint32) uint64 {
|
|
||||||
dev := (uint64(major) << 8) & 0x0000ff00
|
|
||||||
dev |= (uint64(minor) << 8) & 0xffff0000
|
|
||||||
dev |= (uint64(minor) << 0) & 0x000000ff
|
|
||||||
return dev
|
|
||||||
}
|
|
17
vendor/golang.org/x/sys/unix/dirent.go
generated
vendored
17
vendor/golang.org/x/sys/unix/dirent.go
generated
vendored
@ -1,17 +0,0 @@
|
|||||||
// Copyright 2009 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris
|
|
||||||
|
|
||||||
package unix
|
|
||||||
|
|
||||||
import "syscall"
|
|
||||||
|
|
||||||
// ParseDirent parses up to max directory entries in buf,
|
|
||||||
// appending the names to names. It returns the number of
|
|
||||||
// bytes consumed from buf, the number of entries added
|
|
||||||
// to names, and the new names slice.
|
|
||||||
func ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) {
|
|
||||||
return syscall.ParseDirent(buf, max, names)
|
|
||||||
}
|
|
9
vendor/golang.org/x/sys/unix/endian_big.go
generated
vendored
9
vendor/golang.org/x/sys/unix/endian_big.go
generated
vendored
@ -1,9 +0,0 @@
|
|||||||
// Copyright 2016 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
//
|
|
||||||
// +build ppc64 s390x mips mips64
|
|
||||||
|
|
||||||
package unix
|
|
||||||
|
|
||||||
const isBigEndian = true
|
|
9
vendor/golang.org/x/sys/unix/endian_little.go
generated
vendored
9
vendor/golang.org/x/sys/unix/endian_little.go
generated
vendored
@ -1,9 +0,0 @@
|
|||||||
// Copyright 2016 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
//
|
|
||||||
// +build 386 amd64 amd64p32 arm arm64 ppc64le mipsle mips64le
|
|
||||||
|
|
||||||
package unix
|
|
||||||
|
|
||||||
const isBigEndian = false
|
|
31
vendor/golang.org/x/sys/unix/env_unix.go
generated
vendored
31
vendor/golang.org/x/sys/unix/env_unix.go
generated
vendored
@ -1,31 +0,0 @@
|
|||||||
// Copyright 2010 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
|
|
||||||
|
|
||||||
// Unix environment variables.
|
|
||||||
|
|
||||||
package unix
|
|
||||||
|
|
||||||
import "syscall"
|
|
||||||
|
|
||||||
func Getenv(key string) (value string, found bool) {
|
|
||||||
return syscall.Getenv(key)
|
|
||||||
}
|
|
||||||
|
|
||||||
func Setenv(key, value string) error {
|
|
||||||
return syscall.Setenv(key, value)
|
|
||||||
}
|
|
||||||
|
|
||||||
func Clearenv() {
|
|
||||||
syscall.Clearenv()
|
|
||||||
}
|
|
||||||
|
|
||||||
func Environ() []string {
|
|
||||||
return syscall.Environ()
|
|
||||||
}
|
|
||||||
|
|
||||||
func Unsetenv(key string) error {
|
|
||||||
return syscall.Unsetenv(key)
|
|
||||||
}
|
|
227
vendor/golang.org/x/sys/unix/errors_freebsd_386.go
generated
vendored
227
vendor/golang.org/x/sys/unix/errors_freebsd_386.go
generated
vendored
@ -1,227 +0,0 @@
|
|||||||
// Copyright 2017 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.
|
|
||||||
|
|
||||||
// Constants that were deprecated or moved to enums in the FreeBSD headers. Keep
|
|
||||||
// them here for backwards compatibility.
|
|
||||||
|
|
||||||
package unix
|
|
||||||
|
|
||||||
const (
|
|
||||||
IFF_SMART = 0x20
|
|
||||||
IFT_1822 = 0x2
|
|
||||||
IFT_A12MPPSWITCH = 0x82
|
|
||||||
IFT_AAL2 = 0xbb
|
|
||||||
IFT_AAL5 = 0x31
|
|
||||||
IFT_ADSL = 0x5e
|
|
||||||
IFT_AFLANE8023 = 0x3b
|
|
||||||
IFT_AFLANE8025 = 0x3c
|
|
||||||
IFT_ARAP = 0x58
|
|
||||||
IFT_ARCNET = 0x23
|
|
||||||
IFT_ARCNETPLUS = 0x24
|
|
||||||
IFT_ASYNC = 0x54
|
|
||||||
IFT_ATM = 0x25
|
|
||||||
IFT_ATMDXI = 0x69
|
|
||||||
IFT_ATMFUNI = 0x6a
|
|
||||||
IFT_ATMIMA = 0x6b
|
|
||||||
IFT_ATMLOGICAL = 0x50
|
|
||||||
IFT_ATMRADIO = 0xbd
|
|
||||||
IFT_ATMSUBINTERFACE = 0x86
|
|
||||||
IFT_ATMVCIENDPT = 0xc2
|
|
||||||
IFT_ATMVIRTUAL = 0x95
|
|
||||||
IFT_BGPPOLICYACCOUNTING = 0xa2
|
|
||||||
IFT_BSC = 0x53
|
|
||||||
IFT_CCTEMUL = 0x3d
|
|
||||||
IFT_CEPT = 0x13
|
|
||||||
IFT_CES = 0x85
|
|
||||||
IFT_CHANNEL = 0x46
|
|
||||||
IFT_CNR = 0x55
|
|
||||||
IFT_COFFEE = 0x84
|
|
||||||
IFT_COMPOSITELINK = 0x9b
|
|
||||||
IFT_DCN = 0x8d
|
|
||||||
IFT_DIGITALPOWERLINE = 0x8a
|
|
||||||
IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba
|
|
||||||
IFT_DLSW = 0x4a
|
|
||||||
IFT_DOCSCABLEDOWNSTREAM = 0x80
|
|
||||||
IFT_DOCSCABLEMACLAYER = 0x7f
|
|
||||||
IFT_DOCSCABLEUPSTREAM = 0x81
|
|
||||||
IFT_DS0 = 0x51
|
|
||||||
IFT_DS0BUNDLE = 0x52
|
|
||||||
IFT_DS1FDL = 0xaa
|
|
||||||
IFT_DS3 = 0x1e
|
|
||||||
IFT_DTM = 0x8c
|
|
||||||
IFT_DVBASILN = 0xac
|
|
||||||
IFT_DVBASIOUT = 0xad
|
|
||||||
IFT_DVBRCCDOWNSTREAM = 0x93
|
|
||||||
IFT_DVBRCCMACLAYER = 0x92
|
|
||||||
IFT_DVBRCCUPSTREAM = 0x94
|
|
||||||
IFT_ENC = 0xf4
|
|
||||||
IFT_EON = 0x19
|
|
||||||
IFT_EPLRS = 0x57
|
|
||||||
IFT_ESCON = 0x49
|
|
||||||
IFT_ETHER = 0x6
|
|
||||||
IFT_FAITH = 0xf2
|
|
||||||
IFT_FAST = 0x7d
|
|
||||||
IFT_FASTETHER = 0x3e
|
|
||||||
IFT_FASTETHERFX = 0x45
|
|
||||||
IFT_FDDI = 0xf
|
|
||||||
IFT_FIBRECHANNEL = 0x38
|
|
||||||
IFT_FRAMERELAYINTERCONNECT = 0x3a
|
|
||||||
IFT_FRAMERELAYMPI = 0x5c
|
|
||||||
IFT_FRDLCIENDPT = 0xc1
|
|
||||||
IFT_FRELAY = 0x20
|
|
||||||
IFT_FRELAYDCE = 0x2c
|
|
||||||
IFT_FRF16MFRBUNDLE = 0xa3
|
|
||||||
IFT_FRFORWARD = 0x9e
|
|
||||||
IFT_G703AT2MB = 0x43
|
|
||||||
IFT_G703AT64K = 0x42
|
|
||||||
IFT_GIF = 0xf0
|
|
||||||
IFT_GIGABITETHERNET = 0x75
|
|
||||||
IFT_GR303IDT = 0xb2
|
|
||||||
IFT_GR303RDT = 0xb1
|
|
||||||
IFT_H323GATEKEEPER = 0xa4
|
|
||||||
IFT_H323PROXY = 0xa5
|
|
||||||
IFT_HDH1822 = 0x3
|
|
||||||
IFT_HDLC = 0x76
|
|
||||||
IFT_HDSL2 = 0xa8
|
|
||||||
IFT_HIPERLAN2 = 0xb7
|
|
||||||
IFT_HIPPI = 0x2f
|
|
||||||
IFT_HIPPIINTERFACE = 0x39
|
|
||||||
IFT_HOSTPAD = 0x5a
|
|
||||||
IFT_HSSI = 0x2e
|
|
||||||
IFT_HY = 0xe
|
|
||||||
IFT_IBM370PARCHAN = 0x48
|
|
||||||
IFT_IDSL = 0x9a
|
|
||||||
IFT_IEEE80211 = 0x47
|
|
||||||
IFT_IEEE80212 = 0x37
|
|
||||||
IFT_IEEE8023ADLAG = 0xa1
|
|
||||||
IFT_IFGSN = 0x91
|
|
||||||
IFT_IMT = 0xbe
|
|
||||||
IFT_INTERLEAVE = 0x7c
|
|
||||||
IFT_IP = 0x7e
|
|
||||||
IFT_IPFORWARD = 0x8e
|
|
||||||
IFT_IPOVERATM = 0x72
|
|
||||||
IFT_IPOVERCDLC = 0x6d
|
|
||||||
IFT_IPOVERCLAW = 0x6e
|
|
||||||
IFT_IPSWITCH = 0x4e
|
|
||||||
IFT_IPXIP = 0xf9
|
|
||||||
IFT_ISDN = 0x3f
|
|
||||||
IFT_ISDNBASIC = 0x14
|
|
||||||
IFT_ISDNPRIMARY = 0x15
|
|
||||||
IFT_ISDNS = 0x4b
|
|
||||||
IFT_ISDNU = 0x4c
|
|
||||||
IFT_ISO88022LLC = 0x29
|
|
||||||
IFT_ISO88023 = 0x7
|
|
||||||
IFT_ISO88024 = 0x8
|
|
||||||
IFT_ISO88025 = 0x9
|
|
||||||
IFT_ISO88025CRFPINT = 0x62
|
|
||||||
IFT_ISO88025DTR = 0x56
|
|
||||||
IFT_ISO88025FIBER = 0x73
|
|
||||||
IFT_ISO88026 = 0xa
|
|
||||||
IFT_ISUP = 0xb3
|
|
||||||
IFT_L3IPXVLAN = 0x89
|
|
||||||
IFT_LAPB = 0x10
|
|
||||||
IFT_LAPD = 0x4d
|
|
||||||
IFT_LAPF = 0x77
|
|
||||||
IFT_LOCALTALK = 0x2a
|
|
||||||
IFT_LOOP = 0x18
|
|
||||||
IFT_MEDIAMAILOVERIP = 0x8b
|
|
||||||
IFT_MFSIGLINK = 0xa7
|
|
||||||
IFT_MIOX25 = 0x26
|
|
||||||
IFT_MODEM = 0x30
|
|
||||||
IFT_MPC = 0x71
|
|
||||||
IFT_MPLS = 0xa6
|
|
||||||
IFT_MPLSTUNNEL = 0x96
|
|
||||||
IFT_MSDSL = 0x8f
|
|
||||||
IFT_MVL = 0xbf
|
|
||||||
IFT_MYRINET = 0x63
|
|
||||||
IFT_NFAS = 0xaf
|
|
||||||
IFT_NSIP = 0x1b
|
|
||||||
IFT_OPTICALCHANNEL = 0xc3
|
|
||||||
IFT_OPTICALTRANSPORT = 0xc4
|
|
||||||
IFT_OTHER = 0x1
|
|
||||||
IFT_P10 = 0xc
|
|
||||||
IFT_P80 = 0xd
|
|
||||||
IFT_PARA = 0x22
|
|
||||||
IFT_PFLOG = 0xf6
|
|
||||||
IFT_PFSYNC = 0xf7
|
|
||||||
IFT_PLC = 0xae
|
|
||||||
IFT_POS = 0xab
|
|
||||||
IFT_PPPMULTILINKBUNDLE = 0x6c
|
|
||||||
IFT_PROPBWAP2MP = 0xb8
|
|
||||||
IFT_PROPCNLS = 0x59
|
|
||||||
IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5
|
|
||||||
IFT_PROPDOCSWIRELESSMACLAYER = 0xb4
|
|
||||||
IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6
|
|
||||||
IFT_PROPMUX = 0x36
|
|
||||||
IFT_PROPWIRELESSP2P = 0x9d
|
|
||||||
IFT_PTPSERIAL = 0x16
|
|
||||||
IFT_PVC = 0xf1
|
|
||||||
IFT_QLLC = 0x44
|
|
||||||
IFT_RADIOMAC = 0xbc
|
|
||||||
IFT_RADSL = 0x5f
|
|
||||||
IFT_REACHDSL = 0xc0
|
|
||||||
IFT_RFC1483 = 0x9f
|
|
||||||
IFT_RS232 = 0x21
|
|
||||||
IFT_RSRB = 0x4f
|
|
||||||
IFT_SDLC = 0x11
|
|
||||||
IFT_SDSL = 0x60
|
|
||||||
IFT_SHDSL = 0xa9
|
|
||||||
IFT_SIP = 0x1f
|
|
||||||
IFT_SLIP = 0x1c
|
|
||||||
IFT_SMDSDXI = 0x2b
|
|
||||||
IFT_SMDSICIP = 0x34
|
|
||||||
IFT_SONET = 0x27
|
|
||||||
IFT_SONETOVERHEADCHANNEL = 0xb9
|
|
||||||
IFT_SONETPATH = 0x32
|
|
||||||
IFT_SONETVT = 0x33
|
|
||||||
IFT_SRP = 0x97
|
|
||||||
IFT_SS7SIGLINK = 0x9c
|
|
||||||
IFT_STACKTOSTACK = 0x6f
|
|
||||||
IFT_STARLAN = 0xb
|
|
||||||
IFT_STF = 0xd7
|
|
||||||
IFT_T1 = 0x12
|
|
||||||
IFT_TDLC = 0x74
|
|
||||||
IFT_TERMPAD = 0x5b
|
|
||||||
IFT_TR008 = 0xb0
|
|
||||||
IFT_TRANSPHDLC = 0x7b
|
|
||||||
IFT_TUNNEL = 0x83
|
|
||||||
IFT_ULTRA = 0x1d
|
|
||||||
IFT_USB = 0xa0
|
|
||||||
IFT_V11 = 0x40
|
|
||||||
IFT_V35 = 0x2d
|
|
||||||
IFT_V36 = 0x41
|
|
||||||
IFT_V37 = 0x78
|
|
||||||
IFT_VDSL = 0x61
|
|
||||||
IFT_VIRTUALIPADDRESS = 0x70
|
|
||||||
IFT_VOICEEM = 0x64
|
|
||||||
IFT_VOICEENCAP = 0x67
|
|
||||||
IFT_VOICEFXO = 0x65
|
|
||||||
IFT_VOICEFXS = 0x66
|
|
||||||
IFT_VOICEOVERATM = 0x98
|
|
||||||
IFT_VOICEOVERFRAMERELAY = 0x99
|
|
||||||
IFT_VOICEOVERIP = 0x68
|
|
||||||
IFT_X213 = 0x5d
|
|
||||||
IFT_X25 = 0x5
|
|
||||||
IFT_X25DDN = 0x4
|
|
||||||
IFT_X25HUNTGROUP = 0x7a
|
|
||||||
IFT_X25MLP = 0x79
|
|
||||||
IFT_X25PLE = 0x28
|
|
||||||
IFT_XETHER = 0x1a
|
|
||||||
IPPROTO_MAXID = 0x34
|
|
||||||
IPV6_FAITH = 0x1d
|
|
||||||
IP_FAITH = 0x16
|
|
||||||
MAP_NORESERVE = 0x40
|
|
||||||
MAP_RENAME = 0x20
|
|
||||||
NET_RT_MAXID = 0x6
|
|
||||||
RTF_PRCLONING = 0x10000
|
|
||||||
RTM_OLDADD = 0x9
|
|
||||||
RTM_OLDDEL = 0xa
|
|
||||||
SIOCADDRT = 0x8030720a
|
|
||||||
SIOCALIFADDR = 0x8118691b
|
|
||||||
SIOCDELRT = 0x8030720b
|
|
||||||
SIOCDLIFADDR = 0x8118691d
|
|
||||||
SIOCGLIFADDR = 0xc118691c
|
|
||||||
SIOCGLIFPHYADDR = 0xc118694b
|
|
||||||
SIOCSLIFPHYADDR = 0x8118694a
|
|
||||||
)
|
|
227
vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go
generated
vendored
227
vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go
generated
vendored
@ -1,227 +0,0 @@
|
|||||||
// Copyright 2017 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.
|
|
||||||
|
|
||||||
// Constants that were deprecated or moved to enums in the FreeBSD headers. Keep
|
|
||||||
// them here for backwards compatibility.
|
|
||||||
|
|
||||||
package unix
|
|
||||||
|
|
||||||
const (
|
|
||||||
IFF_SMART = 0x20
|
|
||||||
IFT_1822 = 0x2
|
|
||||||
IFT_A12MPPSWITCH = 0x82
|
|
||||||
IFT_AAL2 = 0xbb
|
|
||||||
IFT_AAL5 = 0x31
|
|
||||||
IFT_ADSL = 0x5e
|
|
||||||
IFT_AFLANE8023 = 0x3b
|
|
||||||
IFT_AFLANE8025 = 0x3c
|
|
||||||
IFT_ARAP = 0x58
|
|
||||||
IFT_ARCNET = 0x23
|
|
||||||
IFT_ARCNETPLUS = 0x24
|
|
||||||
IFT_ASYNC = 0x54
|
|
||||||
IFT_ATM = 0x25
|
|
||||||
IFT_ATMDXI = 0x69
|
|
||||||
IFT_ATMFUNI = 0x6a
|
|
||||||
IFT_ATMIMA = 0x6b
|
|
||||||
IFT_ATMLOGICAL = 0x50
|
|
||||||
IFT_ATMRADIO = 0xbd
|
|
||||||
IFT_ATMSUBINTERFACE = 0x86
|
|
||||||
IFT_ATMVCIENDPT = 0xc2
|
|
||||||
IFT_ATMVIRTUAL = 0x95
|
|
||||||
IFT_BGPPOLICYACCOUNTING = 0xa2
|
|
||||||
IFT_BSC = 0x53
|
|
||||||
IFT_CCTEMUL = 0x3d
|
|
||||||
IFT_CEPT = 0x13
|
|
||||||
IFT_CES = 0x85
|
|
||||||
IFT_CHANNEL = 0x46
|
|
||||||
IFT_CNR = 0x55
|
|
||||||
IFT_COFFEE = 0x84
|
|
||||||
IFT_COMPOSITELINK = 0x9b
|
|
||||||
IFT_DCN = 0x8d
|
|
||||||
IFT_DIGITALPOWERLINE = 0x8a
|
|
||||||
IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba
|
|
||||||
IFT_DLSW = 0x4a
|
|
||||||
IFT_DOCSCABLEDOWNSTREAM = 0x80
|
|
||||||
IFT_DOCSCABLEMACLAYER = 0x7f
|
|
||||||
IFT_DOCSCABLEUPSTREAM = 0x81
|
|
||||||
IFT_DS0 = 0x51
|
|
||||||
IFT_DS0BUNDLE = 0x52
|
|
||||||
IFT_DS1FDL = 0xaa
|
|
||||||
IFT_DS3 = 0x1e
|
|
||||||
IFT_DTM = 0x8c
|
|
||||||
IFT_DVBASILN = 0xac
|
|
||||||
IFT_DVBASIOUT = 0xad
|
|
||||||
IFT_DVBRCCDOWNSTREAM = 0x93
|
|
||||||
IFT_DVBRCCMACLAYER = 0x92
|
|
||||||
IFT_DVBRCCUPSTREAM = 0x94
|
|
||||||
IFT_ENC = 0xf4
|
|
||||||
IFT_EON = 0x19
|
|
||||||
IFT_EPLRS = 0x57
|
|
||||||
IFT_ESCON = 0x49
|
|
||||||
IFT_ETHER = 0x6
|
|
||||||
IFT_FAITH = 0xf2
|
|
||||||
IFT_FAST = 0x7d
|
|
||||||
IFT_FASTETHER = 0x3e
|
|
||||||
IFT_FASTETHERFX = 0x45
|
|
||||||
IFT_FDDI = 0xf
|
|
||||||
IFT_FIBRECHANNEL = 0x38
|
|
||||||
IFT_FRAMERELAYINTERCONNECT = 0x3a
|
|
||||||
IFT_FRAMERELAYMPI = 0x5c
|
|
||||||
IFT_FRDLCIENDPT = 0xc1
|
|
||||||
IFT_FRELAY = 0x20
|
|
||||||
IFT_FRELAYDCE = 0x2c
|
|
||||||
IFT_FRF16MFRBUNDLE = 0xa3
|
|
||||||
IFT_FRFORWARD = 0x9e
|
|
||||||
IFT_G703AT2MB = 0x43
|
|
||||||
IFT_G703AT64K = 0x42
|
|
||||||
IFT_GIF = 0xf0
|
|
||||||
IFT_GIGABITETHERNET = 0x75
|
|
||||||
IFT_GR303IDT = 0xb2
|
|
||||||
IFT_GR303RDT = 0xb1
|
|
||||||
IFT_H323GATEKEEPER = 0xa4
|
|
||||||
IFT_H323PROXY = 0xa5
|
|
||||||
IFT_HDH1822 = 0x3
|
|
||||||
IFT_HDLC = 0x76
|
|
||||||
IFT_HDSL2 = 0xa8
|
|
||||||
IFT_HIPERLAN2 = 0xb7
|
|
||||||
IFT_HIPPI = 0x2f
|
|
||||||
IFT_HIPPIINTERFACE = 0x39
|
|
||||||
IFT_HOSTPAD = 0x5a
|
|
||||||
IFT_HSSI = 0x2e
|
|
||||||
IFT_HY = 0xe
|
|
||||||
IFT_IBM370PARCHAN = 0x48
|
|
||||||
IFT_IDSL = 0x9a
|
|
||||||
IFT_IEEE80211 = 0x47
|
|
||||||
IFT_IEEE80212 = 0x37
|
|
||||||
IFT_IEEE8023ADLAG = 0xa1
|
|
||||||
IFT_IFGSN = 0x91
|
|
||||||
IFT_IMT = 0xbe
|
|
||||||
IFT_INTERLEAVE = 0x7c
|
|
||||||
IFT_IP = 0x7e
|
|
||||||
IFT_IPFORWARD = 0x8e
|
|
||||||
IFT_IPOVERATM = 0x72
|
|
||||||
IFT_IPOVERCDLC = 0x6d
|
|
||||||
IFT_IPOVERCLAW = 0x6e
|
|
||||||
IFT_IPSWITCH = 0x4e
|
|
||||||
IFT_IPXIP = 0xf9
|
|
||||||
IFT_ISDN = 0x3f
|
|
||||||
IFT_ISDNBASIC = 0x14
|
|
||||||
IFT_ISDNPRIMARY = 0x15
|
|
||||||
IFT_ISDNS = 0x4b
|
|
||||||
IFT_ISDNU = 0x4c
|
|
||||||
IFT_ISO88022LLC = 0x29
|
|
||||||
IFT_ISO88023 = 0x7
|
|
||||||
IFT_ISO88024 = 0x8
|
|
||||||
IFT_ISO88025 = 0x9
|
|
||||||
IFT_ISO88025CRFPINT = 0x62
|
|
||||||
IFT_ISO88025DTR = 0x56
|
|
||||||
IFT_ISO88025FIBER = 0x73
|
|
||||||
IFT_ISO88026 = 0xa
|
|
||||||
IFT_ISUP = 0xb3
|
|
||||||
IFT_L3IPXVLAN = 0x89
|
|
||||||
IFT_LAPB = 0x10
|
|
||||||
IFT_LAPD = 0x4d
|
|
||||||
IFT_LAPF = 0x77
|
|
||||||
IFT_LOCALTALK = 0x2a
|
|
||||||
IFT_LOOP = 0x18
|
|
||||||
IFT_MEDIAMAILOVERIP = 0x8b
|
|
||||||
IFT_MFSIGLINK = 0xa7
|
|
||||||
IFT_MIOX25 = 0x26
|
|
||||||
IFT_MODEM = 0x30
|
|
||||||
IFT_MPC = 0x71
|
|
||||||
IFT_MPLS = 0xa6
|
|
||||||
IFT_MPLSTUNNEL = 0x96
|
|
||||||
IFT_MSDSL = 0x8f
|
|
||||||
IFT_MVL = 0xbf
|
|
||||||
IFT_MYRINET = 0x63
|
|
||||||
IFT_NFAS = 0xaf
|
|
||||||
IFT_NSIP = 0x1b
|
|
||||||
IFT_OPTICALCHANNEL = 0xc3
|
|
||||||
IFT_OPTICALTRANSPORT = 0xc4
|
|
||||||
IFT_OTHER = 0x1
|
|
||||||
IFT_P10 = 0xc
|
|
||||||
IFT_P80 = 0xd
|
|
||||||
IFT_PARA = 0x22
|
|
||||||
IFT_PFLOG = 0xf6
|
|
||||||
IFT_PFSYNC = 0xf7
|
|
||||||
IFT_PLC = 0xae
|
|
||||||
IFT_POS = 0xab
|
|
||||||
IFT_PPPMULTILINKBUNDLE = 0x6c
|
|
||||||
IFT_PROPBWAP2MP = 0xb8
|
|
||||||
IFT_PROPCNLS = 0x59
|
|
||||||
IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5
|
|
||||||
IFT_PROPDOCSWIRELESSMACLAYER = 0xb4
|
|
||||||
IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6
|
|
||||||
IFT_PROPMUX = 0x36
|
|
||||||
IFT_PROPWIRELESSP2P = 0x9d
|
|
||||||
IFT_PTPSERIAL = 0x16
|
|
||||||
IFT_PVC = 0xf1
|
|
||||||
IFT_QLLC = 0x44
|
|
||||||
IFT_RADIOMAC = 0xbc
|
|
||||||
IFT_RADSL = 0x5f
|
|
||||||
IFT_REACHDSL = 0xc0
|
|
||||||
IFT_RFC1483 = 0x9f
|
|
||||||
IFT_RS232 = 0x21
|
|
||||||
IFT_RSRB = 0x4f
|
|
||||||
IFT_SDLC = 0x11
|
|
||||||
IFT_SDSL = 0x60
|
|
||||||
IFT_SHDSL = 0xa9
|
|
||||||
IFT_SIP = 0x1f
|
|
||||||
IFT_SLIP = 0x1c
|
|
||||||
IFT_SMDSDXI = 0x2b
|
|
||||||
IFT_SMDSICIP = 0x34
|
|
||||||
IFT_SONET = 0x27
|
|
||||||
IFT_SONETOVERHEADCHANNEL = 0xb9
|
|
||||||
IFT_SONETPATH = 0x32
|
|
||||||
IFT_SONETVT = 0x33
|
|
||||||
IFT_SRP = 0x97
|
|
||||||
IFT_SS7SIGLINK = 0x9c
|
|
||||||
IFT_STACKTOSTACK = 0x6f
|
|
||||||
IFT_STARLAN = 0xb
|
|
||||||
IFT_STF = 0xd7
|
|
||||||
IFT_T1 = 0x12
|
|
||||||
IFT_TDLC = 0x74
|
|
||||||
IFT_TERMPAD = 0x5b
|
|
||||||
IFT_TR008 = 0xb0
|
|
||||||
IFT_TRANSPHDLC = 0x7b
|
|
||||||
IFT_TUNNEL = 0x83
|
|
||||||
IFT_ULTRA = 0x1d
|
|
||||||
IFT_USB = 0xa0
|
|
||||||
IFT_V11 = 0x40
|
|
||||||
IFT_V35 = 0x2d
|
|
||||||
IFT_V36 = 0x41
|
|
||||||
IFT_V37 = 0x78
|
|
||||||
IFT_VDSL = 0x61
|
|
||||||
IFT_VIRTUALIPADDRESS = 0x70
|
|
||||||
IFT_VOICEEM = 0x64
|
|
||||||
IFT_VOICEENCAP = 0x67
|
|
||||||
IFT_VOICEFXO = 0x65
|
|
||||||
IFT_VOICEFXS = 0x66
|
|
||||||
IFT_VOICEOVERATM = 0x98
|
|
||||||
IFT_VOICEOVERFRAMERELAY = 0x99
|
|
||||||
IFT_VOICEOVERIP = 0x68
|
|
||||||
IFT_X213 = 0x5d
|
|
||||||
IFT_X25 = 0x5
|
|
||||||
IFT_X25DDN = 0x4
|
|
||||||
IFT_X25HUNTGROUP = 0x7a
|
|
||||||
IFT_X25MLP = 0x79
|
|
||||||
IFT_X25PLE = 0x28
|
|
||||||
IFT_XETHER = 0x1a
|
|
||||||
IPPROTO_MAXID = 0x34
|
|
||||||
IPV6_FAITH = 0x1d
|
|
||||||
IP_FAITH = 0x16
|
|
||||||
MAP_NORESERVE = 0x40
|
|
||||||
MAP_RENAME = 0x20
|
|
||||||
NET_RT_MAXID = 0x6
|
|
||||||
RTF_PRCLONING = 0x10000
|
|
||||||
RTM_OLDADD = 0x9
|
|
||||||
RTM_OLDDEL = 0xa
|
|
||||||
SIOCADDRT = 0x8040720a
|
|
||||||
SIOCALIFADDR = 0x8118691b
|
|
||||||
SIOCDELRT = 0x8040720b
|
|
||||||
SIOCDLIFADDR = 0x8118691d
|
|
||||||
SIOCGLIFADDR = 0xc118691c
|
|
||||||
SIOCGLIFPHYADDR = 0xc118694b
|
|
||||||
SIOCSLIFPHYADDR = 0x8118694a
|
|
||||||
)
|
|
226
vendor/golang.org/x/sys/unix/errors_freebsd_arm.go
generated
vendored
226
vendor/golang.org/x/sys/unix/errors_freebsd_arm.go
generated
vendored
@ -1,226 +0,0 @@
|
|||||||
// Copyright 2017 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 unix
|
|
||||||
|
|
||||||
const (
|
|
||||||
IFT_1822 = 0x2
|
|
||||||
IFT_A12MPPSWITCH = 0x82
|
|
||||||
IFT_AAL2 = 0xbb
|
|
||||||
IFT_AAL5 = 0x31
|
|
||||||
IFT_ADSL = 0x5e
|
|
||||||
IFT_AFLANE8023 = 0x3b
|
|
||||||
IFT_AFLANE8025 = 0x3c
|
|
||||||
IFT_ARAP = 0x58
|
|
||||||
IFT_ARCNET = 0x23
|
|
||||||
IFT_ARCNETPLUS = 0x24
|
|
||||||
IFT_ASYNC = 0x54
|
|
||||||
IFT_ATM = 0x25
|
|
||||||
IFT_ATMDXI = 0x69
|
|
||||||
IFT_ATMFUNI = 0x6a
|
|
||||||
IFT_ATMIMA = 0x6b
|
|
||||||
IFT_ATMLOGICAL = 0x50
|
|
||||||
IFT_ATMRADIO = 0xbd
|
|
||||||
IFT_ATMSUBINTERFACE = 0x86
|
|
||||||
IFT_ATMVCIENDPT = 0xc2
|
|
||||||
IFT_ATMVIRTUAL = 0x95
|
|
||||||
IFT_BGPPOLICYACCOUNTING = 0xa2
|
|
||||||
IFT_BSC = 0x53
|
|
||||||
IFT_CCTEMUL = 0x3d
|
|
||||||
IFT_CEPT = 0x13
|
|
||||||
IFT_CES = 0x85
|
|
||||||
IFT_CHANNEL = 0x46
|
|
||||||
IFT_CNR = 0x55
|
|
||||||
IFT_COFFEE = 0x84
|
|
||||||
IFT_COMPOSITELINK = 0x9b
|
|
||||||
IFT_DCN = 0x8d
|
|
||||||
IFT_DIGITALPOWERLINE = 0x8a
|
|
||||||
IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba
|
|
||||||
IFT_DLSW = 0x4a
|
|
||||||
IFT_DOCSCABLEDOWNSTREAM = 0x80
|
|
||||||
IFT_DOCSCABLEMACLAYER = 0x7f
|
|
||||||
IFT_DOCSCABLEUPSTREAM = 0x81
|
|
||||||
IFT_DS0 = 0x51
|
|
||||||
IFT_DS0BUNDLE = 0x52
|
|
||||||
IFT_DS1FDL = 0xaa
|
|
||||||
IFT_DS3 = 0x1e
|
|
||||||
IFT_DTM = 0x8c
|
|
||||||
IFT_DVBASILN = 0xac
|
|
||||||
IFT_DVBASIOUT = 0xad
|
|
||||||
IFT_DVBRCCDOWNSTREAM = 0x93
|
|
||||||
IFT_DVBRCCMACLAYER = 0x92
|
|
||||||
IFT_DVBRCCUPSTREAM = 0x94
|
|
||||||
IFT_ENC = 0xf4
|
|
||||||
IFT_EON = 0x19
|
|
||||||
IFT_EPLRS = 0x57
|
|
||||||
IFT_ESCON = 0x49
|
|
||||||
IFT_ETHER = 0x6
|
|
||||||
IFT_FAST = 0x7d
|
|
||||||
IFT_FASTETHER = 0x3e
|
|
||||||
IFT_FASTETHERFX = 0x45
|
|
||||||
IFT_FDDI = 0xf
|
|
||||||
IFT_FIBRECHANNEL = 0x38
|
|
||||||
IFT_FRAMERELAYINTERCONNECT = 0x3a
|
|
||||||
IFT_FRAMERELAYMPI = 0x5c
|
|
||||||
IFT_FRDLCIENDPT = 0xc1
|
|
||||||
IFT_FRELAY = 0x20
|
|
||||||
IFT_FRELAYDCE = 0x2c
|
|
||||||
IFT_FRF16MFRBUNDLE = 0xa3
|
|
||||||
IFT_FRFORWARD = 0x9e
|
|
||||||
IFT_G703AT2MB = 0x43
|
|
||||||
IFT_G703AT64K = 0x42
|
|
||||||
IFT_GIF = 0xf0
|
|
||||||
IFT_GIGABITETHERNET = 0x75
|
|
||||||
IFT_GR303IDT = 0xb2
|
|
||||||
IFT_GR303RDT = 0xb1
|
|
||||||
IFT_H323GATEKEEPER = 0xa4
|
|
||||||
IFT_H323PROXY = 0xa5
|
|
||||||
IFT_HDH1822 = 0x3
|
|
||||||
IFT_HDLC = 0x76
|
|
||||||
IFT_HDSL2 = 0xa8
|
|
||||||
IFT_HIPERLAN2 = 0xb7
|
|
||||||
IFT_HIPPI = 0x2f
|
|
||||||
IFT_HIPPIINTERFACE = 0x39
|
|
||||||
IFT_HOSTPAD = 0x5a
|
|
||||||
IFT_HSSI = 0x2e
|
|
||||||
IFT_HY = 0xe
|
|
||||||
IFT_IBM370PARCHAN = 0x48
|
|
||||||
IFT_IDSL = 0x9a
|
|
||||||
IFT_IEEE80211 = 0x47
|
|
||||||
IFT_IEEE80212 = 0x37
|
|
||||||
IFT_IEEE8023ADLAG = 0xa1
|
|
||||||
IFT_IFGSN = 0x91
|
|
||||||
IFT_IMT = 0xbe
|
|
||||||
IFT_INTERLEAVE = 0x7c
|
|
||||||
IFT_IP = 0x7e
|
|
||||||
IFT_IPFORWARD = 0x8e
|
|
||||||
IFT_IPOVERATM = 0x72
|
|
||||||
IFT_IPOVERCDLC = 0x6d
|
|
||||||
IFT_IPOVERCLAW = 0x6e
|
|
||||||
IFT_IPSWITCH = 0x4e
|
|
||||||
IFT_ISDN = 0x3f
|
|
||||||
IFT_ISDNBASIC = 0x14
|
|
||||||
IFT_ISDNPRIMARY = 0x15
|
|
||||||
IFT_ISDNS = 0x4b
|
|
||||||
IFT_ISDNU = 0x4c
|
|
||||||
IFT_ISO88022LLC = 0x29
|
|
||||||
IFT_ISO88023 = 0x7
|
|
||||||
IFT_ISO88024 = 0x8
|
|
||||||
IFT_ISO88025 = 0x9
|
|
||||||
IFT_ISO88025CRFPINT = 0x62
|
|
||||||
IFT_ISO88025DTR = 0x56
|
|
||||||
IFT_ISO88025FIBER = 0x73
|
|
||||||
IFT_ISO88026 = 0xa
|
|
||||||
IFT_ISUP = 0xb3
|
|
||||||
IFT_L3IPXVLAN = 0x89
|
|
||||||
IFT_LAPB = 0x10
|
|
||||||
IFT_LAPD = 0x4d
|
|
||||||
IFT_LAPF = 0x77
|
|
||||||
IFT_LOCALTALK = 0x2a
|
|
||||||
IFT_LOOP = 0x18
|
|
||||||
IFT_MEDIAMAILOVERIP = 0x8b
|
|
||||||
IFT_MFSIGLINK = 0xa7
|
|
||||||
IFT_MIOX25 = 0x26
|
|
||||||
IFT_MODEM = 0x30
|
|
||||||
IFT_MPC = 0x71
|
|
||||||
IFT_MPLS = 0xa6
|
|
||||||
IFT_MPLSTUNNEL = 0x96
|
|
||||||
IFT_MSDSL = 0x8f
|
|
||||||
IFT_MVL = 0xbf
|
|
||||||
IFT_MYRINET = 0x63
|
|
||||||
IFT_NFAS = 0xaf
|
|
||||||
IFT_NSIP = 0x1b
|
|
||||||
IFT_OPTICALCHANNEL = 0xc3
|
|
||||||
IFT_OPTICALTRANSPORT = 0xc4
|
|
||||||
IFT_OTHER = 0x1
|
|
||||||
IFT_P10 = 0xc
|
|
||||||
IFT_P80 = 0xd
|
|
||||||
IFT_PARA = 0x22
|
|
||||||
IFT_PFLOG = 0xf6
|
|
||||||
IFT_PFSYNC = 0xf7
|
|
||||||
IFT_PLC = 0xae
|
|
||||||
IFT_POS = 0xab
|
|
||||||
IFT_PPPMULTILINKBUNDLE = 0x6c
|
|
||||||
IFT_PROPBWAP2MP = 0xb8
|
|
||||||
IFT_PROPCNLS = 0x59
|
|
||||||
IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5
|
|
||||||
IFT_PROPDOCSWIRELESSMACLAYER = 0xb4
|
|
||||||
IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6
|
|
||||||
IFT_PROPMUX = 0x36
|
|
||||||
IFT_PROPWIRELESSP2P = 0x9d
|
|
||||||
IFT_PTPSERIAL = 0x16
|
|
||||||
IFT_PVC = 0xf1
|
|
||||||
IFT_QLLC = 0x44
|
|
||||||
IFT_RADIOMAC = 0xbc
|
|
||||||
IFT_RADSL = 0x5f
|
|
||||||
IFT_REACHDSL = 0xc0
|
|
||||||
IFT_RFC1483 = 0x9f
|
|
||||||
IFT_RS232 = 0x21
|
|
||||||
IFT_RSRB = 0x4f
|
|
||||||
IFT_SDLC = 0x11
|
|
||||||
IFT_SDSL = 0x60
|
|
||||||
IFT_SHDSL = 0xa9
|
|
||||||
IFT_SIP = 0x1f
|
|
||||||
IFT_SLIP = 0x1c
|
|
||||||
IFT_SMDSDXI = 0x2b
|
|
||||||
IFT_SMDSICIP = 0x34
|
|
||||||
IFT_SONET = 0x27
|
|
||||||
IFT_SONETOVERHEADCHANNEL = 0xb9
|
|
||||||
IFT_SONETPATH = 0x32
|
|
||||||
IFT_SONETVT = 0x33
|
|
||||||
IFT_SRP = 0x97
|
|
||||||
IFT_SS7SIGLINK = 0x9c
|
|
||||||
IFT_STACKTOSTACK = 0x6f
|
|
||||||
IFT_STARLAN = 0xb
|
|
||||||
IFT_STF = 0xd7
|
|
||||||
IFT_T1 = 0x12
|
|
||||||
IFT_TDLC = 0x74
|
|
||||||
IFT_TERMPAD = 0x5b
|
|
||||||
IFT_TR008 = 0xb0
|
|
||||||
IFT_TRANSPHDLC = 0x7b
|
|
||||||
IFT_TUNNEL = 0x83
|
|
||||||
IFT_ULTRA = 0x1d
|
|
||||||
IFT_USB = 0xa0
|
|
||||||
IFT_V11 = 0x40
|
|
||||||
IFT_V35 = 0x2d
|
|
||||||
IFT_V36 = 0x41
|
|
||||||
IFT_V37 = 0x78
|
|
||||||
IFT_VDSL = 0x61
|
|
||||||
IFT_VIRTUALIPADDRESS = 0x70
|
|
||||||
IFT_VOICEEM = 0x64
|
|
||||||
IFT_VOICEENCAP = 0x67
|
|
||||||
IFT_VOICEFXO = 0x65
|
|
||||||
IFT_VOICEFXS = 0x66
|
|
||||||
IFT_VOICEOVERATM = 0x98
|
|
||||||
IFT_VOICEOVERFRAMERELAY = 0x99
|
|
||||||
IFT_VOICEOVERIP = 0x68
|
|
||||||
IFT_X213 = 0x5d
|
|
||||||
IFT_X25 = 0x5
|
|
||||||
IFT_X25DDN = 0x4
|
|
||||||
IFT_X25HUNTGROUP = 0x7a
|
|
||||||
IFT_X25MLP = 0x79
|
|
||||||
IFT_X25PLE = 0x28
|
|
||||||
IFT_XETHER = 0x1a
|
|
||||||
|
|
||||||
// missing constants on FreeBSD-11.1-RELEASE, copied from old values in ztypes_freebsd_arm.go
|
|
||||||
IFF_SMART = 0x20
|
|
||||||
IFT_FAITH = 0xf2
|
|
||||||
IFT_IPXIP = 0xf9
|
|
||||||
IPPROTO_MAXID = 0x34
|
|
||||||
IPV6_FAITH = 0x1d
|
|
||||||
IP_FAITH = 0x16
|
|
||||||
MAP_NORESERVE = 0x40
|
|
||||||
MAP_RENAME = 0x20
|
|
||||||
NET_RT_MAXID = 0x6
|
|
||||||
RTF_PRCLONING = 0x10000
|
|
||||||
RTM_OLDADD = 0x9
|
|
||||||
RTM_OLDDEL = 0xa
|
|
||||||
SIOCADDRT = 0x8030720a
|
|
||||||
SIOCALIFADDR = 0x8118691b
|
|
||||||
SIOCDELRT = 0x8030720b
|
|
||||||
SIOCDLIFADDR = 0x8118691d
|
|
||||||
SIOCGLIFADDR = 0xc118691c
|
|
||||||
SIOCGLIFPHYADDR = 0xc118694b
|
|
||||||
SIOCSLIFPHYADDR = 0x8118694a
|
|
||||||
)
|
|
32
vendor/golang.org/x/sys/unix/fcntl.go
generated
vendored
32
vendor/golang.org/x/sys/unix/fcntl.go
generated
vendored
@ -1,32 +0,0 @@
|
|||||||
// Copyright 2014 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build dragonfly freebsd linux netbsd openbsd
|
|
||||||
|
|
||||||
package unix
|
|
||||||
|
|
||||||
import "unsafe"
|
|
||||||
|
|
||||||
// fcntl64Syscall is usually SYS_FCNTL, but is overridden on 32-bit Linux
|
|
||||||
// systems by flock_linux_32bit.go to be SYS_FCNTL64.
|
|
||||||
var fcntl64Syscall uintptr = SYS_FCNTL
|
|
||||||
|
|
||||||
// FcntlInt performs a fcntl syscall on fd with the provided command and argument.
|
|
||||||
func FcntlInt(fd uintptr, cmd, arg int) (int, error) {
|
|
||||||
valptr, _, errno := Syscall(fcntl64Syscall, fd, uintptr(cmd), uintptr(arg))
|
|
||||||
var err error
|
|
||||||
if errno != 0 {
|
|
||||||
err = errno
|
|
||||||
}
|
|
||||||
return int(valptr), err
|
|
||||||
}
|
|
||||||
|
|
||||||
// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.
|
|
||||||
func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {
|
|
||||||
_, _, errno := Syscall(fcntl64Syscall, fd, uintptr(cmd), uintptr(unsafe.Pointer(lk)))
|
|
||||||
if errno == 0 {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return errno
|
|
||||||
}
|
|
18
vendor/golang.org/x/sys/unix/fcntl_darwin.go
generated
vendored
18
vendor/golang.org/x/sys/unix/fcntl_darwin.go
generated
vendored
@ -1,18 +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 unix
|
|
||||||
|
|
||||||
import "unsafe"
|
|
||||||
|
|
||||||
// FcntlInt performs a fcntl syscall on fd with the provided command and argument.
|
|
||||||
func FcntlInt(fd uintptr, cmd, arg int) (int, error) {
|
|
||||||
return fcntl(int(fd), cmd, arg)
|
|
||||||
}
|
|
||||||
|
|
||||||
// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.
|
|
||||||
func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {
|
|
||||||
_, err := fcntl(int(fd), cmd, int(uintptr(unsafe.Pointer(lk))))
|
|
||||||
return err
|
|
||||||
}
|
|
13
vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go
generated
vendored
13
vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go
generated
vendored
@ -1,13 +0,0 @@
|
|||||||
// +build linux,386 linux,arm linux,mips linux,mipsle
|
|
||||||
|
|
||||||
// Copyright 2014 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 unix
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
// On 32-bit Linux systems, the fcntl syscall that matches Go's
|
|
||||||
// Flock_t type is SYS_FCNTL64, not SYS_FCNTL.
|
|
||||||
fcntl64Syscall = SYS_FCNTL64
|
|
||||||
}
|
|
62
vendor/golang.org/x/sys/unix/gccgo.go
generated
vendored
62
vendor/golang.org/x/sys/unix/gccgo.go
generated
vendored
@ -1,62 +0,0 @@
|
|||||||
// Copyright 2015 The Go Authors. All rights reserved.
|
|
||||||
// Use of this source code is governed by a BSD-style
|
|
||||||
// license that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
// +build gccgo
|
|
||||||
// +build !aix
|
|
||||||
|
|
||||||
package unix
|
|
||||||
|
|
||||||
import "syscall"
|
|
||||||
|
|
||||||
// We can't use the gc-syntax .s files for gccgo. On the plus side
|
|
||||||
// much of the functionality can be written directly in Go.
|
|
||||||
|
|
||||||
//extern gccgoRealSyscallNoError
|
|
||||||
func realSyscallNoError(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r uintptr)
|
|
||||||
|
|
||||||
//extern gccgoRealSyscall
|
|
||||||
func realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r, errno uintptr)
|
|
||||||
|
|
||||||
func SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) {
|
|
||||||
syscall.Entersyscall()
|
|
||||||
r := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
|
|
||||||
syscall.Exitsyscall()
|
|
||||||
return r, 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {
|
|
||||||
syscall.Entersyscall()
|
|
||||||
r, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
|
|
||||||
syscall.Exitsyscall()
|
|
||||||
return r, 0, syscall.Errno(errno)
|
|
||||||
}
|
|
||||||
|
|
||||||
func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {
|
|
||||||
syscall.Entersyscall()
|
|
||||||
r, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0)
|
|
||||||
syscall.Exitsyscall()
|
|
||||||
return r, 0, syscall.Errno(errno)
|
|
||||||
}
|
|
||||||
|
|
||||||
func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) {
|
|
||||||
syscall.Entersyscall()
|
|
||||||
r, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9)
|
|
||||||
syscall.Exitsyscall()
|
|
||||||
return r, 0, syscall.Errno(errno)
|
|
||||||
}
|
|
||||||
|
|
||||||
func RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) {
|
|
||||||
r := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
|
|
||||||
return r, 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {
|
|
||||||
r, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
|
|
||||||
return r, 0, syscall.Errno(errno)
|
|
||||||
}
|
|
||||||
|
|
||||||
func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {
|
|
||||||
r, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0)
|
|
||||||
return r, 0, syscall.Errno(errno)
|
|
||||||
}
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user