mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	golang.org/x/sys v0.0.0-20190209173611-3b5209105503 (release-branch.go1.12)
This commit is contained in:
		
							
								
								
									
										4
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								go.mod
									
									
									
									
									
								
							@@ -168,7 +168,7 @@ require (
 | 
			
		||||
	golang.org/x/lint v0.0.0-20181217174547-8f45f776aaf1
 | 
			
		||||
	golang.org/x/net v0.0.0-20190206173232-65e2d4e15006
 | 
			
		||||
	golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181
 | 
			
		||||
	golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5
 | 
			
		||||
	golang.org/x/sys v0.0.0-20190209173611-3b5209105503
 | 
			
		||||
	golang.org/x/time v0.0.0-20161028155119-f51c12702a4d
 | 
			
		||||
	golang.org/x/tools v0.0.0-20190328211700-ab21143f2384
 | 
			
		||||
	gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485
 | 
			
		||||
@@ -438,7 +438,7 @@ replace (
 | 
			
		||||
	golang.org/x/net => golang.org/x/net v0.0.0-20190206173232-65e2d4e15006
 | 
			
		||||
	golang.org/x/oauth2 => golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181
 | 
			
		||||
	golang.org/x/sync => golang.org/x/sync v0.0.0-20181108010431-42b317875d0f
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20171031081856-95c657629925
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20190209173611-3b5209105503
 | 
			
		||||
	golang.org/x/text => golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db
 | 
			
		||||
	golang.org/x/time => golang.org/x/time v0.0.0-20161028155119-f51c12702a4d
 | 
			
		||||
	golang.org/x/tools => golang.org/x/tools v0.0.0-20190205050122-7f7074d5bcfd
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								go.sum
									
									
									
									
									
								
							@@ -446,8 +446,8 @@ golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181 h1:/4OaQ4bC66Oq9JDhUnxTjB
 | 
			
		||||
golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f h1:Bl/8QSvNqXvPGPGXa2z5xUTmV7VDcZyvRZ+QQXkXTZQ=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925 h1:nCH33NboKIsT4HoXBsXTWX8ul303HxWgkc5s2Ezwacg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503 h1:5SvYFrOM3W8Mexn9/oA44Ji7vhXAZQ9hiP+1Q/DMrWg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db h1:6/JqlYfC1CCaLnGceQTI+sDGhC9UBSPAsBqI0Gun6kU=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
 | 
			
		||||
golang.org/x/time v0.0.0-20161028155119-f51c12702a4d h1:TnM+PKb3ylGmZvyPXmo9m/wktg7Jn/a/fNmr33HSj8g=
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								staging/src/k8s.io/api/go.mod
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								staging/src/k8s.io/api/go.mod
									
									
									
										generated
									
									
									
								
							@@ -35,7 +35,7 @@ replace (
 | 
			
		||||
	github.com/stretchr/testify => github.com/stretchr/testify v1.2.2
 | 
			
		||||
	golang.org/x/net => golang.org/x/net v0.0.0-20190206173232-65e2d4e15006
 | 
			
		||||
	golang.org/x/sync => golang.org/x/sync v0.0.0-20181108010431-42b317875d0f
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20171031081856-95c657629925
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20190209173611-3b5209105503
 | 
			
		||||
	golang.org/x/text => golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db
 | 
			
		||||
	golang.org/x/tools => golang.org/x/tools v0.0.0-20190205050122-7f7074d5bcfd
 | 
			
		||||
	gopkg.in/check.v1 => gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								staging/src/k8s.io/api/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								staging/src/k8s.io/api/go.sum
									
									
									
										generated
									
									
									
								
							@@ -34,7 +34,7 @@ golang.org/x/net v0.0.0-20190206173232-65e2d4e15006 h1:bfLnR+k0tq5Lqt6dflRLcZiz6
 | 
			
		||||
golang.org/x/net v0.0.0-20190206173232-65e2d4e15006/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f h1:Bl/8QSvNqXvPGPGXa2z5xUTmV7VDcZyvRZ+QQXkXTZQ=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db h1:6/JqlYfC1CCaLnGceQTI+sDGhC9UBSPAsBqI0Gun6kU=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
 | 
			
		||||
golang.org/x/tools v0.0.0-20190205050122-7f7074d5bcfd/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 | 
			
		||||
 
 | 
			
		||||
@@ -145,7 +145,7 @@ replace (
 | 
			
		||||
	golang.org/x/net => golang.org/x/net v0.0.0-20190206173232-65e2d4e15006
 | 
			
		||||
	golang.org/x/oauth2 => golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181
 | 
			
		||||
	golang.org/x/sync => golang.org/x/sync v0.0.0-20181108010431-42b317875d0f
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20171031081856-95c657629925
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20190209173611-3b5209105503
 | 
			
		||||
	golang.org/x/text => golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db
 | 
			
		||||
	golang.org/x/time => golang.org/x/time v0.0.0-20161028155119-f51c12702a4d
 | 
			
		||||
	golang.org/x/tools => golang.org/x/tools v0.0.0-20190205050122-7f7074d5bcfd
 | 
			
		||||
 
 | 
			
		||||
@@ -184,8 +184,8 @@ golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181 h1:/4OaQ4bC66Oq9JDhUnxTjB
 | 
			
		||||
golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f h1:Bl/8QSvNqXvPGPGXa2z5xUTmV7VDcZyvRZ+QQXkXTZQ=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925 h1:nCH33NboKIsT4HoXBsXTWX8ul303HxWgkc5s2Ezwacg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503 h1:5SvYFrOM3W8Mexn9/oA44Ji7vhXAZQ9hiP+1Q/DMrWg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db h1:6/JqlYfC1CCaLnGceQTI+sDGhC9UBSPAsBqI0Gun6kU=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
 | 
			
		||||
golang.org/x/time v0.0.0-20161028155119-f51c12702a4d h1:TnM+PKb3ylGmZvyPXmo9m/wktg7Jn/a/fNmr33HSj8g=
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								staging/src/k8s.io/apimachinery/go.mod
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								staging/src/k8s.io/apimachinery/go.mod
									
									
									
										generated
									
									
									
								
							@@ -26,7 +26,7 @@ require (
 | 
			
		||||
	github.com/stretchr/testify v1.2.2
 | 
			
		||||
	golang.org/x/net v0.0.0-20190206173232-65e2d4e15006
 | 
			
		||||
	golang.org/x/sync v0.0.0-20181108010431-42b317875d0f // indirect
 | 
			
		||||
	golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5 // indirect
 | 
			
		||||
	golang.org/x/sys v0.0.0-20190209173611-3b5209105503 // indirect
 | 
			
		||||
	golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db // indirect
 | 
			
		||||
	gopkg.in/inf.v0 v0.9.0
 | 
			
		||||
	gopkg.in/yaml.v2 v2.2.1
 | 
			
		||||
@@ -60,7 +60,7 @@ replace (
 | 
			
		||||
	github.com/stretchr/testify => github.com/stretchr/testify v1.2.2
 | 
			
		||||
	golang.org/x/net => golang.org/x/net v0.0.0-20190206173232-65e2d4e15006
 | 
			
		||||
	golang.org/x/sync => golang.org/x/sync v0.0.0-20181108010431-42b317875d0f
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20171031081856-95c657629925
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20190209173611-3b5209105503
 | 
			
		||||
	golang.org/x/text => golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db
 | 
			
		||||
	golang.org/x/tools => golang.org/x/tools v0.0.0-20190205050122-7f7074d5bcfd
 | 
			
		||||
	gopkg.in/check.v1 => gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								staging/src/k8s.io/apimachinery/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								staging/src/k8s.io/apimachinery/go.sum
									
									
									
										generated
									
									
									
								
							@@ -44,8 +44,8 @@ golang.org/x/net v0.0.0-20190206173232-65e2d4e15006 h1:bfLnR+k0tq5Lqt6dflRLcZiz6
 | 
			
		||||
golang.org/x/net v0.0.0-20190206173232-65e2d4e15006/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f h1:Bl/8QSvNqXvPGPGXa2z5xUTmV7VDcZyvRZ+QQXkXTZQ=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925 h1:nCH33NboKIsT4HoXBsXTWX8ul303HxWgkc5s2Ezwacg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503 h1:5SvYFrOM3W8Mexn9/oA44Ji7vhXAZQ9hiP+1Q/DMrWg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db h1:6/JqlYfC1CCaLnGceQTI+sDGhC9UBSPAsBqI0Gun6kU=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
 | 
			
		||||
golang.org/x/tools v0.0.0-20190205050122-7f7074d5bcfd/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								staging/src/k8s.io/apiserver/go.mod
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								staging/src/k8s.io/apiserver/go.mod
									
									
									
										generated
									
									
									
								
							@@ -167,7 +167,7 @@ replace (
 | 
			
		||||
	golang.org/x/net => golang.org/x/net v0.0.0-20190206173232-65e2d4e15006
 | 
			
		||||
	golang.org/x/oauth2 => golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181
 | 
			
		||||
	golang.org/x/sync => golang.org/x/sync v0.0.0-20181108010431-42b317875d0f
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20171031081856-95c657629925
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20190209173611-3b5209105503
 | 
			
		||||
	golang.org/x/text => golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db
 | 
			
		||||
	golang.org/x/time => golang.org/x/time v0.0.0-20161028155119-f51c12702a4d
 | 
			
		||||
	golang.org/x/tools => golang.org/x/tools v0.0.0-20190205050122-7f7074d5bcfd
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								staging/src/k8s.io/apiserver/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								staging/src/k8s.io/apiserver/go.sum
									
									
									
										generated
									
									
									
								
							@@ -165,8 +165,8 @@ golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181 h1:/4OaQ4bC66Oq9JDhUnxTjB
 | 
			
		||||
golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f h1:Bl/8QSvNqXvPGPGXa2z5xUTmV7VDcZyvRZ+QQXkXTZQ=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925 h1:nCH33NboKIsT4HoXBsXTWX8ul303HxWgkc5s2Ezwacg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503 h1:5SvYFrOM3W8Mexn9/oA44Ji7vhXAZQ9hiP+1Q/DMrWg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db h1:6/JqlYfC1CCaLnGceQTI+sDGhC9UBSPAsBqI0Gun6kU=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
 | 
			
		||||
golang.org/x/time v0.0.0-20161028155119-f51c12702a4d h1:TnM+PKb3ylGmZvyPXmo9m/wktg7Jn/a/fNmr33HSj8g=
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								staging/src/k8s.io/cli-runtime/go.mod
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								staging/src/k8s.io/cli-runtime/go.mod
									
									
									
										generated
									
									
									
								
							@@ -73,7 +73,7 @@ replace (
 | 
			
		||||
	golang.org/x/net => golang.org/x/net v0.0.0-20190206173232-65e2d4e15006
 | 
			
		||||
	golang.org/x/oauth2 => golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181
 | 
			
		||||
	golang.org/x/sync => golang.org/x/sync v0.0.0-20181108010431-42b317875d0f
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20171031081856-95c657629925
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20190209173611-3b5209105503
 | 
			
		||||
	golang.org/x/text => golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db
 | 
			
		||||
	golang.org/x/time => golang.org/x/time v0.0.0-20161028155119-f51c12702a4d
 | 
			
		||||
	golang.org/x/tools => golang.org/x/tools v0.0.0-20190205050122-7f7074d5bcfd
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								staging/src/k8s.io/cli-runtime/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								staging/src/k8s.io/cli-runtime/go.sum
									
									
									
										generated
									
									
									
								
							@@ -78,8 +78,8 @@ golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181 h1:/4OaQ4bC66Oq9JDhUnxTjB
 | 
			
		||||
golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f h1:Bl/8QSvNqXvPGPGXa2z5xUTmV7VDcZyvRZ+QQXkXTZQ=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925 h1:nCH33NboKIsT4HoXBsXTWX8ul303HxWgkc5s2Ezwacg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503 h1:5SvYFrOM3W8Mexn9/oA44Ji7vhXAZQ9hiP+1Q/DMrWg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db h1:6/JqlYfC1CCaLnGceQTI+sDGhC9UBSPAsBqI0Gun6kU=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
 | 
			
		||||
golang.org/x/time v0.0.0-20161028155119-f51c12702a4d h1:TnM+PKb3ylGmZvyPXmo9m/wktg7Jn/a/fNmr33HSj8g=
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								staging/src/k8s.io/client-go/go.mod
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								staging/src/k8s.io/client-go/go.mod
									
									
									
										generated
									
									
									
								
							@@ -69,7 +69,7 @@ replace (
 | 
			
		||||
	golang.org/x/net => golang.org/x/net v0.0.0-20190206173232-65e2d4e15006
 | 
			
		||||
	golang.org/x/oauth2 => golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181
 | 
			
		||||
	golang.org/x/sync => golang.org/x/sync v0.0.0-20181108010431-42b317875d0f
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20171031081856-95c657629925
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20190209173611-3b5209105503
 | 
			
		||||
	golang.org/x/text => golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db
 | 
			
		||||
	golang.org/x/time => golang.org/x/time v0.0.0-20161028155119-f51c12702a4d
 | 
			
		||||
	golang.org/x/tools => golang.org/x/tools v0.0.0-20190205050122-7f7074d5bcfd
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								staging/src/k8s.io/client-go/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								staging/src/k8s.io/client-go/go.sum
									
									
									
										generated
									
									
									
								
							@@ -62,8 +62,8 @@ golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181 h1:/4OaQ4bC66Oq9JDhUnxTjB
 | 
			
		||||
golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f h1:Bl/8QSvNqXvPGPGXa2z5xUTmV7VDcZyvRZ+QQXkXTZQ=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925 h1:nCH33NboKIsT4HoXBsXTWX8ul303HxWgkc5s2Ezwacg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503 h1:5SvYFrOM3W8Mexn9/oA44Ji7vhXAZQ9hiP+1Q/DMrWg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db h1:6/JqlYfC1CCaLnGceQTI+sDGhC9UBSPAsBqI0Gun6kU=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
 | 
			
		||||
golang.org/x/time v0.0.0-20161028155119-f51c12702a4d h1:TnM+PKb3ylGmZvyPXmo9m/wktg7Jn/a/fNmr33HSj8g=
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								staging/src/k8s.io/cloud-provider/go.mod
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								staging/src/k8s.io/cloud-provider/go.mod
									
									
									
										generated
									
									
									
								
							@@ -107,7 +107,7 @@ replace (
 | 
			
		||||
	golang.org/x/net => golang.org/x/net v0.0.0-20190206173232-65e2d4e15006
 | 
			
		||||
	golang.org/x/oauth2 => golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181
 | 
			
		||||
	golang.org/x/sync => golang.org/x/sync v0.0.0-20181108010431-42b317875d0f
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20171031081856-95c657629925
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20190209173611-3b5209105503
 | 
			
		||||
	golang.org/x/text => golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db
 | 
			
		||||
	golang.org/x/time => golang.org/x/time v0.0.0-20161028155119-f51c12702a4d
 | 
			
		||||
	golang.org/x/tools => golang.org/x/tools v0.0.0-20190205050122-7f7074d5bcfd
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								staging/src/k8s.io/cloud-provider/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								staging/src/k8s.io/cloud-provider/go.sum
									
									
									
										generated
									
									
									
								
							@@ -110,8 +110,8 @@ golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181 h1:/4OaQ4bC66Oq9JDhUnxTjB
 | 
			
		||||
golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f h1:Bl/8QSvNqXvPGPGXa2z5xUTmV7VDcZyvRZ+QQXkXTZQ=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925 h1:nCH33NboKIsT4HoXBsXTWX8ul303HxWgkc5s2Ezwacg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503 h1:5SvYFrOM3W8Mexn9/oA44Ji7vhXAZQ9hiP+1Q/DMrWg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db h1:6/JqlYfC1CCaLnGceQTI+sDGhC9UBSPAsBqI0Gun6kU=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
 | 
			
		||||
golang.org/x/time v0.0.0-20161028155119-f51c12702a4d h1:TnM+PKb3ylGmZvyPXmo9m/wktg7Jn/a/fNmr33HSj8g=
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								staging/src/k8s.io/cluster-bootstrap/go.mod
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								staging/src/k8s.io/cluster-bootstrap/go.mod
									
									
									
										generated
									
									
									
								
							@@ -34,7 +34,7 @@ replace (
 | 
			
		||||
	github.com/stretchr/testify => github.com/stretchr/testify v1.2.2
 | 
			
		||||
	golang.org/x/net => golang.org/x/net v0.0.0-20190206173232-65e2d4e15006
 | 
			
		||||
	golang.org/x/sync => golang.org/x/sync v0.0.0-20181108010431-42b317875d0f
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20171031081856-95c657629925
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20190209173611-3b5209105503
 | 
			
		||||
	golang.org/x/text => golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db
 | 
			
		||||
	golang.org/x/tools => golang.org/x/tools v0.0.0-20190205050122-7f7074d5bcfd
 | 
			
		||||
	gopkg.in/check.v1 => gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								staging/src/k8s.io/cluster-bootstrap/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								staging/src/k8s.io/cluster-bootstrap/go.sum
									
									
									
										generated
									
									
									
								
							@@ -32,7 +32,7 @@ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf
 | 
			
		||||
golang.org/x/net v0.0.0-20190206173232-65e2d4e15006 h1:bfLnR+k0tq5Lqt6dflRLcZiz6UaXCMt3vhYJ1l4FQ80=
 | 
			
		||||
golang.org/x/net v0.0.0-20190206173232-65e2d4e15006/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db h1:6/JqlYfC1CCaLnGceQTI+sDGhC9UBSPAsBqI0Gun6kU=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
 | 
			
		||||
golang.org/x/tools v0.0.0-20190205050122-7f7074d5bcfd/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								staging/src/k8s.io/component-base/go.mod
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								staging/src/k8s.io/component-base/go.mod
									
									
									
										generated
									
									
									
								
							@@ -36,7 +36,7 @@ replace (
 | 
			
		||||
	github.com/stretchr/testify => github.com/stretchr/testify v1.2.2
 | 
			
		||||
	golang.org/x/net => golang.org/x/net v0.0.0-20190206173232-65e2d4e15006
 | 
			
		||||
	golang.org/x/sync => golang.org/x/sync v0.0.0-20181108010431-42b317875d0f
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20171031081856-95c657629925
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20190209173611-3b5209105503
 | 
			
		||||
	golang.org/x/text => golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db
 | 
			
		||||
	golang.org/x/tools => golang.org/x/tools v0.0.0-20190205050122-7f7074d5bcfd
 | 
			
		||||
	gopkg.in/check.v1 => gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								staging/src/k8s.io/component-base/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								staging/src/k8s.io/component-base/go.sum
									
									
									
										generated
									
									
									
								
							@@ -32,7 +32,7 @@ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf
 | 
			
		||||
golang.org/x/net v0.0.0-20190206173232-65e2d4e15006 h1:bfLnR+k0tq5Lqt6dflRLcZiz6UaXCMt3vhYJ1l4FQ80=
 | 
			
		||||
golang.org/x/net v0.0.0-20190206173232-65e2d4e15006/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db h1:6/JqlYfC1CCaLnGceQTI+sDGhC9UBSPAsBqI0Gun6kU=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
 | 
			
		||||
golang.org/x/tools v0.0.0-20190205050122-7f7074d5bcfd/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								staging/src/k8s.io/csi-translation-lib/go.mod
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								staging/src/k8s.io/csi-translation-lib/go.mod
									
									
									
										generated
									
									
									
								
							@@ -104,7 +104,7 @@ replace (
 | 
			
		||||
	golang.org/x/net => golang.org/x/net v0.0.0-20190206173232-65e2d4e15006
 | 
			
		||||
	golang.org/x/oauth2 => golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181
 | 
			
		||||
	golang.org/x/sync => golang.org/x/sync v0.0.0-20181108010431-42b317875d0f
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20171031081856-95c657629925
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20190209173611-3b5209105503
 | 
			
		||||
	golang.org/x/text => golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db
 | 
			
		||||
	golang.org/x/time => golang.org/x/time v0.0.0-20161028155119-f51c12702a4d
 | 
			
		||||
	golang.org/x/tools => golang.org/x/tools v0.0.0-20190205050122-7f7074d5bcfd
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								staging/src/k8s.io/csi-translation-lib/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								staging/src/k8s.io/csi-translation-lib/go.sum
									
									
									
										generated
									
									
									
								
							@@ -101,7 +101,7 @@ golang.org/x/net v0.0.0-20190206173232-65e2d4e15006 h1:bfLnR+k0tq5Lqt6dflRLcZiz6
 | 
			
		||||
golang.org/x/net v0.0.0-20190206173232-65e2d4e15006/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 | 
			
		||||
golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db h1:6/JqlYfC1CCaLnGceQTI+sDGhC9UBSPAsBqI0Gun6kU=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
 | 
			
		||||
golang.org/x/time v0.0.0-20161028155119-f51c12702a4d/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								staging/src/k8s.io/kube-aggregator/go.mod
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								staging/src/k8s.io/kube-aggregator/go.mod
									
									
									
										generated
									
									
									
								
							@@ -124,7 +124,7 @@ replace (
 | 
			
		||||
	golang.org/x/net => golang.org/x/net v0.0.0-20190206173232-65e2d4e15006
 | 
			
		||||
	golang.org/x/oauth2 => golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181
 | 
			
		||||
	golang.org/x/sync => golang.org/x/sync v0.0.0-20181108010431-42b317875d0f
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20171031081856-95c657629925
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20190209173611-3b5209105503
 | 
			
		||||
	golang.org/x/text => golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db
 | 
			
		||||
	golang.org/x/time => golang.org/x/time v0.0.0-20161028155119-f51c12702a4d
 | 
			
		||||
	golang.org/x/tools => golang.org/x/tools v0.0.0-20190205050122-7f7074d5bcfd
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								staging/src/k8s.io/kube-aggregator/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								staging/src/k8s.io/kube-aggregator/go.sum
									
									
									
										generated
									
									
									
								
							@@ -168,8 +168,8 @@ golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181 h1:/4OaQ4bC66Oq9JDhUnxTjB
 | 
			
		||||
golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f h1:Bl/8QSvNqXvPGPGXa2z5xUTmV7VDcZyvRZ+QQXkXTZQ=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925 h1:nCH33NboKIsT4HoXBsXTWX8ul303HxWgkc5s2Ezwacg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503 h1:5SvYFrOM3W8Mexn9/oA44Ji7vhXAZQ9hiP+1Q/DMrWg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db h1:6/JqlYfC1CCaLnGceQTI+sDGhC9UBSPAsBqI0Gun6kU=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
 | 
			
		||||
golang.org/x/time v0.0.0-20161028155119-f51c12702a4d h1:TnM+PKb3ylGmZvyPXmo9m/wktg7Jn/a/fNmr33HSj8g=
 | 
			
		||||
 
 | 
			
		||||
@@ -34,7 +34,7 @@ replace (
 | 
			
		||||
	github.com/stretchr/testify => github.com/stretchr/testify v1.2.2
 | 
			
		||||
	golang.org/x/net => golang.org/x/net v0.0.0-20190206173232-65e2d4e15006
 | 
			
		||||
	golang.org/x/sync => golang.org/x/sync v0.0.0-20181108010431-42b317875d0f
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20171031081856-95c657629925
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20190209173611-3b5209105503
 | 
			
		||||
	golang.org/x/text => golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db
 | 
			
		||||
	golang.org/x/tools => golang.org/x/tools v0.0.0-20190205050122-7f7074d5bcfd
 | 
			
		||||
	gopkg.in/check.v1 => gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405
 | 
			
		||||
 
 | 
			
		||||
@@ -32,7 +32,7 @@ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf
 | 
			
		||||
golang.org/x/net v0.0.0-20190206173232-65e2d4e15006 h1:bfLnR+k0tq5Lqt6dflRLcZiz6UaXCMt3vhYJ1l4FQ80=
 | 
			
		||||
golang.org/x/net v0.0.0-20190206173232-65e2d4e15006/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db h1:6/JqlYfC1CCaLnGceQTI+sDGhC9UBSPAsBqI0Gun6kU=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
 | 
			
		||||
golang.org/x/tools v0.0.0-20190205050122-7f7074d5bcfd/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								staging/src/k8s.io/kube-proxy/go.mod
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								staging/src/k8s.io/kube-proxy/go.mod
									
									
									
										generated
									
									
									
								
							@@ -34,7 +34,7 @@ replace (
 | 
			
		||||
	github.com/stretchr/testify => github.com/stretchr/testify v1.2.2
 | 
			
		||||
	golang.org/x/net => golang.org/x/net v0.0.0-20190206173232-65e2d4e15006
 | 
			
		||||
	golang.org/x/sync => golang.org/x/sync v0.0.0-20181108010431-42b317875d0f
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20171031081856-95c657629925
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20190209173611-3b5209105503
 | 
			
		||||
	golang.org/x/text => golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db
 | 
			
		||||
	golang.org/x/tools => golang.org/x/tools v0.0.0-20190205050122-7f7074d5bcfd
 | 
			
		||||
	gopkg.in/check.v1 => gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								staging/src/k8s.io/kube-proxy/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								staging/src/k8s.io/kube-proxy/go.sum
									
									
									
										generated
									
									
									
								
							@@ -32,7 +32,7 @@ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf
 | 
			
		||||
golang.org/x/net v0.0.0-20190206173232-65e2d4e15006 h1:bfLnR+k0tq5Lqt6dflRLcZiz6UaXCMt3vhYJ1l4FQ80=
 | 
			
		||||
golang.org/x/net v0.0.0-20190206173232-65e2d4e15006/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db h1:6/JqlYfC1CCaLnGceQTI+sDGhC9UBSPAsBqI0Gun6kU=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
 | 
			
		||||
golang.org/x/tools v0.0.0-20190205050122-7f7074d5bcfd/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								staging/src/k8s.io/kube-scheduler/go.mod
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								staging/src/k8s.io/kube-scheduler/go.mod
									
									
									
										generated
									
									
									
								
							@@ -34,7 +34,7 @@ replace (
 | 
			
		||||
	github.com/stretchr/testify => github.com/stretchr/testify v1.2.2
 | 
			
		||||
	golang.org/x/net => golang.org/x/net v0.0.0-20190206173232-65e2d4e15006
 | 
			
		||||
	golang.org/x/sync => golang.org/x/sync v0.0.0-20181108010431-42b317875d0f
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20171031081856-95c657629925
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20190209173611-3b5209105503
 | 
			
		||||
	golang.org/x/text => golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db
 | 
			
		||||
	golang.org/x/tools => golang.org/x/tools v0.0.0-20190205050122-7f7074d5bcfd
 | 
			
		||||
	gopkg.in/check.v1 => gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								staging/src/k8s.io/kube-scheduler/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								staging/src/k8s.io/kube-scheduler/go.sum
									
									
									
										generated
									
									
									
								
							@@ -32,7 +32,7 @@ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf
 | 
			
		||||
golang.org/x/net v0.0.0-20190206173232-65e2d4e15006 h1:bfLnR+k0tq5Lqt6dflRLcZiz6UaXCMt3vhYJ1l4FQ80=
 | 
			
		||||
golang.org/x/net v0.0.0-20190206173232-65e2d4e15006/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db h1:6/JqlYfC1CCaLnGceQTI+sDGhC9UBSPAsBqI0Gun6kU=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
 | 
			
		||||
golang.org/x/tools v0.0.0-20190205050122-7f7074d5bcfd/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								staging/src/k8s.io/kubelet/go.mod
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								staging/src/k8s.io/kubelet/go.mod
									
									
									
										generated
									
									
									
								
							@@ -34,7 +34,7 @@ replace (
 | 
			
		||||
	github.com/stretchr/testify => github.com/stretchr/testify v1.2.2
 | 
			
		||||
	golang.org/x/net => golang.org/x/net v0.0.0-20190206173232-65e2d4e15006
 | 
			
		||||
	golang.org/x/sync => golang.org/x/sync v0.0.0-20181108010431-42b317875d0f
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20171031081856-95c657629925
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20190209173611-3b5209105503
 | 
			
		||||
	golang.org/x/text => golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db
 | 
			
		||||
	golang.org/x/tools => golang.org/x/tools v0.0.0-20190205050122-7f7074d5bcfd
 | 
			
		||||
	gopkg.in/check.v1 => gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								staging/src/k8s.io/kubelet/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								staging/src/k8s.io/kubelet/go.sum
									
									
									
										generated
									
									
									
								
							@@ -32,7 +32,7 @@ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf
 | 
			
		||||
golang.org/x/net v0.0.0-20190206173232-65e2d4e15006 h1:bfLnR+k0tq5Lqt6dflRLcZiz6UaXCMt3vhYJ1l4FQ80=
 | 
			
		||||
golang.org/x/net v0.0.0-20190206173232-65e2d4e15006/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db h1:6/JqlYfC1CCaLnGceQTI+sDGhC9UBSPAsBqI0Gun6kU=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
 | 
			
		||||
golang.org/x/tools v0.0.0-20190205050122-7f7074d5bcfd/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								staging/src/k8s.io/metrics/go.mod
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								staging/src/k8s.io/metrics/go.mod
									
									
									
										generated
									
									
									
								
							@@ -50,7 +50,7 @@ replace (
 | 
			
		||||
	golang.org/x/net => golang.org/x/net v0.0.0-20190206173232-65e2d4e15006
 | 
			
		||||
	golang.org/x/oauth2 => golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181
 | 
			
		||||
	golang.org/x/sync => golang.org/x/sync v0.0.0-20181108010431-42b317875d0f
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20171031081856-95c657629925
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20190209173611-3b5209105503
 | 
			
		||||
	golang.org/x/text => golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db
 | 
			
		||||
	golang.org/x/time => golang.org/x/time v0.0.0-20161028155119-f51c12702a4d
 | 
			
		||||
	golang.org/x/tools => golang.org/x/tools v0.0.0-20190205050122-7f7074d5bcfd
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								staging/src/k8s.io/metrics/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								staging/src/k8s.io/metrics/go.sum
									
									
									
										generated
									
									
									
								
							@@ -52,8 +52,8 @@ golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181 h1:/4OaQ4bC66Oq9JDhUnxTjB
 | 
			
		||||
golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f h1:Bl/8QSvNqXvPGPGXa2z5xUTmV7VDcZyvRZ+QQXkXTZQ=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925 h1:nCH33NboKIsT4HoXBsXTWX8ul303HxWgkc5s2Ezwacg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503 h1:5SvYFrOM3W8Mexn9/oA44Ji7vhXAZQ9hiP+1Q/DMrWg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db h1:6/JqlYfC1CCaLnGceQTI+sDGhC9UBSPAsBqI0Gun6kU=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
 | 
			
		||||
golang.org/x/time v0.0.0-20161028155119-f51c12702a4d h1:TnM+PKb3ylGmZvyPXmo9m/wktg7Jn/a/fNmr33HSj8g=
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								staging/src/k8s.io/node-api/go.mod
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								staging/src/k8s.io/node-api/go.mod
									
									
									
										generated
									
									
									
								
							@@ -47,7 +47,7 @@ replace (
 | 
			
		||||
	golang.org/x/net => golang.org/x/net v0.0.0-20190206173232-65e2d4e15006
 | 
			
		||||
	golang.org/x/oauth2 => golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181
 | 
			
		||||
	golang.org/x/sync => golang.org/x/sync v0.0.0-20181108010431-42b317875d0f
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20171031081856-95c657629925
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20190209173611-3b5209105503
 | 
			
		||||
	golang.org/x/text => golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db
 | 
			
		||||
	golang.org/x/time => golang.org/x/time v0.0.0-20161028155119-f51c12702a4d
 | 
			
		||||
	golang.org/x/tools => golang.org/x/tools v0.0.0-20190205050122-7f7074d5bcfd
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								staging/src/k8s.io/node-api/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								staging/src/k8s.io/node-api/go.sum
									
									
									
										generated
									
									
									
								
							@@ -54,8 +54,8 @@ golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181 h1:/4OaQ4bC66Oq9JDhUnxTjB
 | 
			
		||||
golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f h1:Bl/8QSvNqXvPGPGXa2z5xUTmV7VDcZyvRZ+QQXkXTZQ=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925 h1:nCH33NboKIsT4HoXBsXTWX8ul303HxWgkc5s2Ezwacg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503 h1:5SvYFrOM3W8Mexn9/oA44Ji7vhXAZQ9hiP+1Q/DMrWg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db h1:6/JqlYfC1CCaLnGceQTI+sDGhC9UBSPAsBqI0Gun6kU=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
 | 
			
		||||
golang.org/x/time v0.0.0-20161028155119-f51c12702a4d h1:TnM+PKb3ylGmZvyPXmo9m/wktg7Jn/a/fNmr33HSj8g=
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								staging/src/k8s.io/sample-apiserver/go.mod
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								staging/src/k8s.io/sample-apiserver/go.mod
									
									
									
										generated
									
									
									
								
							@@ -114,7 +114,7 @@ replace (
 | 
			
		||||
	golang.org/x/net => golang.org/x/net v0.0.0-20190206173232-65e2d4e15006
 | 
			
		||||
	golang.org/x/oauth2 => golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181
 | 
			
		||||
	golang.org/x/sync => golang.org/x/sync v0.0.0-20181108010431-42b317875d0f
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20171031081856-95c657629925
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20190209173611-3b5209105503
 | 
			
		||||
	golang.org/x/text => golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db
 | 
			
		||||
	golang.org/x/time => golang.org/x/time v0.0.0-20161028155119-f51c12702a4d
 | 
			
		||||
	golang.org/x/tools => golang.org/x/tools v0.0.0-20190205050122-7f7074d5bcfd
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								staging/src/k8s.io/sample-apiserver/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								staging/src/k8s.io/sample-apiserver/go.sum
									
									
									
										generated
									
									
									
								
							@@ -165,8 +165,8 @@ golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181 h1:/4OaQ4bC66Oq9JDhUnxTjB
 | 
			
		||||
golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f h1:Bl/8QSvNqXvPGPGXa2z5xUTmV7VDcZyvRZ+QQXkXTZQ=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925 h1:nCH33NboKIsT4HoXBsXTWX8ul303HxWgkc5s2Ezwacg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503 h1:5SvYFrOM3W8Mexn9/oA44Ji7vhXAZQ9hiP+1Q/DMrWg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db h1:6/JqlYfC1CCaLnGceQTI+sDGhC9UBSPAsBqI0Gun6kU=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
 | 
			
		||||
golang.org/x/time v0.0.0-20161028155119-f51c12702a4d h1:TnM+PKb3ylGmZvyPXmo9m/wktg7Jn/a/fNmr33HSj8g=
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								staging/src/k8s.io/sample-cli-plugin/go.mod
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								staging/src/k8s.io/sample-cli-plugin/go.mod
									
									
									
										generated
									
									
									
								
							@@ -58,7 +58,7 @@ replace (
 | 
			
		||||
	golang.org/x/net => golang.org/x/net v0.0.0-20190206173232-65e2d4e15006
 | 
			
		||||
	golang.org/x/oauth2 => golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181
 | 
			
		||||
	golang.org/x/sync => golang.org/x/sync v0.0.0-20181108010431-42b317875d0f
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20171031081856-95c657629925
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20190209173611-3b5209105503
 | 
			
		||||
	golang.org/x/text => golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db
 | 
			
		||||
	golang.org/x/time => golang.org/x/time v0.0.0-20161028155119-f51c12702a4d
 | 
			
		||||
	golang.org/x/tools => golang.org/x/tools v0.0.0-20190205050122-7f7074d5bcfd
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								staging/src/k8s.io/sample-cli-plugin/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								staging/src/k8s.io/sample-cli-plugin/go.sum
									
									
									
										generated
									
									
									
								
							@@ -78,8 +78,8 @@ golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181 h1:/4OaQ4bC66Oq9JDhUnxTjB
 | 
			
		||||
golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f h1:Bl/8QSvNqXvPGPGXa2z5xUTmV7VDcZyvRZ+QQXkXTZQ=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925 h1:nCH33NboKIsT4HoXBsXTWX8ul303HxWgkc5s2Ezwacg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503 h1:5SvYFrOM3W8Mexn9/oA44Ji7vhXAZQ9hiP+1Q/DMrWg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db h1:6/JqlYfC1CCaLnGceQTI+sDGhC9UBSPAsBqI0Gun6kU=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
 | 
			
		||||
golang.org/x/time v0.0.0-20161028155119-f51c12702a4d h1:TnM+PKb3ylGmZvyPXmo9m/wktg7Jn/a/fNmr33HSj8g=
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								staging/src/k8s.io/sample-controller/go.mod
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								staging/src/k8s.io/sample-controller/go.mod
									
									
									
										generated
									
									
									
								
							@@ -49,7 +49,7 @@ replace (
 | 
			
		||||
	golang.org/x/net => golang.org/x/net v0.0.0-20190206173232-65e2d4e15006
 | 
			
		||||
	golang.org/x/oauth2 => golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181
 | 
			
		||||
	golang.org/x/sync => golang.org/x/sync v0.0.0-20181108010431-42b317875d0f
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20171031081856-95c657629925
 | 
			
		||||
	golang.org/x/sys => golang.org/x/sys v0.0.0-20190209173611-3b5209105503
 | 
			
		||||
	golang.org/x/text => golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db
 | 
			
		||||
	golang.org/x/time => golang.org/x/time v0.0.0-20161028155119-f51c12702a4d
 | 
			
		||||
	golang.org/x/tools => golang.org/x/tools v0.0.0-20190205050122-7f7074d5bcfd
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								staging/src/k8s.io/sample-controller/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								staging/src/k8s.io/sample-controller/go.sum
									
									
									
										generated
									
									
									
								
							@@ -55,8 +55,8 @@ golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181 h1:/4OaQ4bC66Oq9JDhUnxTjB
 | 
			
		||||
golang.org/x/oauth2 v0.0.0-20170412232759-a6bd8cefa181/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f h1:Bl/8QSvNqXvPGPGXa2z5xUTmV7VDcZyvRZ+QQXkXTZQ=
 | 
			
		||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925 h1:nCH33NboKIsT4HoXBsXTWX8ul303HxWgkc5s2Ezwacg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20171031081856-95c657629925/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503 h1:5SvYFrOM3W8Mexn9/oA44Ji7vhXAZQ9hiP+1Q/DMrWg=
 | 
			
		||||
golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db h1:6/JqlYfC1CCaLnGceQTI+sDGhC9UBSPAsBqI0Gun6kU=
 | 
			
		||||
golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
 | 
			
		||||
golang.org/x/time v0.0.0-20161028155119-f51c12702a4d h1:TnM+PKb3ylGmZvyPXmo9m/wktg7Jn/a/fNmr33HSj8g=
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								vendor/golang.org/x/sys/unix/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/golang.org/x/sys/unix/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1 +1,2 @@
 | 
			
		||||
_obj/
 | 
			
		||||
unix.test
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										27
									
								
								vendor/golang.org/x/sys/unix/BUILD
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										27
									
								
								vendor/golang.org/x/sys/unix/BUILD
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -3,6 +3,9 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library")
 | 
			
		||||
go_library(
 | 
			
		||||
    name = "go_default_library",
 | 
			
		||||
    srcs = [
 | 
			
		||||
        "affinity_linux.go",
 | 
			
		||||
        "aliases.go",
 | 
			
		||||
        "asm_aix_ppc64.s",
 | 
			
		||||
        "asm_darwin_386.s",
 | 
			
		||||
        "asm_darwin_amd64.s",
 | 
			
		||||
        "asm_darwin_arm.s",
 | 
			
		||||
@@ -39,14 +42,15 @@ go_library(
 | 
			
		||||
        "endian_big.go",
 | 
			
		||||
        "endian_little.go",
 | 
			
		||||
        "env_unix.go",
 | 
			
		||||
        "env_unset.go",
 | 
			
		||||
        "errors_freebsd_386.go",
 | 
			
		||||
        "errors_freebsd_amd64.go",
 | 
			
		||||
        "errors_freebsd_arm.go",
 | 
			
		||||
        "file_unix.go",
 | 
			
		||||
        "flock.go",
 | 
			
		||||
        "flock_linux_32bit.go",
 | 
			
		||||
        "fcntl.go",
 | 
			
		||||
        "fcntl_darwin.go",
 | 
			
		||||
        "fcntl_linux_32bit.go",
 | 
			
		||||
        "ioctl.go",
 | 
			
		||||
        "openbsd_pledge.go",
 | 
			
		||||
        "openbsd_unveil.go",
 | 
			
		||||
        "pagesize_unix.go",
 | 
			
		||||
        "race.go",
 | 
			
		||||
        "race0.go",
 | 
			
		||||
@@ -60,6 +64,7 @@ go_library(
 | 
			
		||||
        "syscall_darwin_amd64.go",
 | 
			
		||||
        "syscall_darwin_arm.go",
 | 
			
		||||
        "syscall_darwin_arm64.go",
 | 
			
		||||
        "syscall_darwin_libSystem.go",
 | 
			
		||||
        "syscall_dragonfly.go",
 | 
			
		||||
        "syscall_dragonfly_amd64.go",
 | 
			
		||||
        "syscall_freebsd.go",
 | 
			
		||||
@@ -72,6 +77,8 @@ go_library(
 | 
			
		||||
        "syscall_linux_amd64_gc.go",
 | 
			
		||||
        "syscall_linux_arm.go",
 | 
			
		||||
        "syscall_linux_arm64.go",
 | 
			
		||||
        "syscall_linux_gc.go",
 | 
			
		||||
        "syscall_linux_gc_386.go",
 | 
			
		||||
        "syscall_linux_mips64x.go",
 | 
			
		||||
        "syscall_linux_mipsx.go",
 | 
			
		||||
        "syscall_linux_ppc64x.go",
 | 
			
		||||
@@ -80,7 +87,6 @@ go_library(
 | 
			
		||||
        "syscall_netbsd_386.go",
 | 
			
		||||
        "syscall_netbsd_amd64.go",
 | 
			
		||||
        "syscall_netbsd_arm.go",
 | 
			
		||||
        "syscall_no_getwd.go",
 | 
			
		||||
        "syscall_openbsd.go",
 | 
			
		||||
        "syscall_openbsd_386.go",
 | 
			
		||||
        "syscall_openbsd_amd64.go",
 | 
			
		||||
@@ -89,7 +95,9 @@ go_library(
 | 
			
		||||
        "syscall_solaris_amd64.go",
 | 
			
		||||
        "syscall_unix.go",
 | 
			
		||||
        "syscall_unix_gc.go",
 | 
			
		||||
        "syscall_unix_gc_ppc64x.go",
 | 
			
		||||
        "timestruct.go",
 | 
			
		||||
        "xattr_bsd.go",
 | 
			
		||||
        "zerrors_darwin_386.go",
 | 
			
		||||
        "zerrors_darwin_amd64.go",
 | 
			
		||||
        "zerrors_darwin_arm.go",
 | 
			
		||||
@@ -120,10 +128,18 @@ go_library(
 | 
			
		||||
        "zptracearm_linux.go",
 | 
			
		||||
        "zptracemips_linux.go",
 | 
			
		||||
        "zptracemipsle_linux.go",
 | 
			
		||||
        "zsyscall_darwin_386.1_11.go",
 | 
			
		||||
        "zsyscall_darwin_386.go",
 | 
			
		||||
        "zsyscall_darwin_386.s",
 | 
			
		||||
        "zsyscall_darwin_amd64.1_11.go",
 | 
			
		||||
        "zsyscall_darwin_amd64.go",
 | 
			
		||||
        "zsyscall_darwin_amd64.s",
 | 
			
		||||
        "zsyscall_darwin_arm.1_11.go",
 | 
			
		||||
        "zsyscall_darwin_arm.go",
 | 
			
		||||
        "zsyscall_darwin_arm.s",
 | 
			
		||||
        "zsyscall_darwin_arm64.1_11.go",
 | 
			
		||||
        "zsyscall_darwin_arm64.go",
 | 
			
		||||
        "zsyscall_darwin_arm64.s",
 | 
			
		||||
        "zsyscall_dragonfly_amd64.go",
 | 
			
		||||
        "zsyscall_freebsd_386.go",
 | 
			
		||||
        "zsyscall_freebsd_amd64.go",
 | 
			
		||||
@@ -174,7 +190,6 @@ go_library(
 | 
			
		||||
        "zsysnum_openbsd_386.go",
 | 
			
		||||
        "zsysnum_openbsd_amd64.go",
 | 
			
		||||
        "zsysnum_openbsd_arm.go",
 | 
			
		||||
        "zsysnum_solaris_amd64.go",
 | 
			
		||||
        "ztypes_darwin_386.go",
 | 
			
		||||
        "ztypes_darwin_amd64.go",
 | 
			
		||||
        "ztypes_darwin_arm.go",
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								vendor/golang.org/x/sys/unix/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/golang.org/x/sys/unix/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -14,7 +14,7 @@ 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" || GOARCH == "sparc64"`)
 | 
			
		||||
### 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
 | 
			
		||||
@@ -34,7 +34,7 @@ your specific system. Running `mkall.sh -n` shows the commands that will be run.
 | 
			
		||||
 | 
			
		||||
Requirements: bash, perl, go
 | 
			
		||||
 | 
			
		||||
### New Build System (currently for `GOOS == "Linux" && GOARCH != "sparc64"`)
 | 
			
		||||
### 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
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										124
									
								
								vendor/golang.org/x/sys/unix/affinity_linux.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										124
									
								
								vendor/golang.org/x/sys/unix/affinity_linux.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,124 @@
 | 
			
		||||
// 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
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								vendor/golang.org/x/sys/unix/aliases.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
			
		||||
// 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
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								vendor/golang.org/x/sys/unix/asm_aix_ppc64.s
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
			
		||||
// 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)
 | 
			
		||||
							
								
								
									
										10
									
								
								vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -13,17 +13,17 @@
 | 
			
		||||
// Just jump to package syscall's implementation for all these functions.
 | 
			
		||||
// The runtime may know about them.
 | 
			
		||||
 | 
			
		||||
TEXT	·Syscall(SB),NOSPLIT,$0-64
 | 
			
		||||
TEXT	·Syscall(SB),NOSPLIT,$0-56
 | 
			
		||||
	JMP	syscall·Syscall(SB)
 | 
			
		||||
 | 
			
		||||
TEXT	·Syscall6(SB),NOSPLIT,$0-88
 | 
			
		||||
TEXT	·Syscall6(SB),NOSPLIT,$0-80
 | 
			
		||||
	JMP	syscall·Syscall6(SB)
 | 
			
		||||
 | 
			
		||||
TEXT	·Syscall9(SB),NOSPLIT,$0-112
 | 
			
		||||
TEXT	·Syscall9(SB),NOSPLIT,$0-104
 | 
			
		||||
	JMP	syscall·Syscall9(SB)
 | 
			
		||||
 | 
			
		||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-64
 | 
			
		||||
TEXT ·RawSyscall(SB),NOSPLIT,$0-56
 | 
			
		||||
	JMP	syscall·RawSyscall(SB)
 | 
			
		||||
 | 
			
		||||
TEXT	·RawSyscall6(SB),NOSPLIT,$0-88
 | 
			
		||||
TEXT	·RawSyscall6(SB),NOSPLIT,$0-80
 | 
			
		||||
	JMP	syscall·RawSyscall6(SB)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										29
									
								
								vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
			
		||||
// 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)
 | 
			
		||||
							
								
								
									
										30
									
								
								vendor/golang.org/x/sys/unix/asm_linux_386.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										30
									
								
								vendor/golang.org/x/sys/unix/asm_linux_386.s
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -10,6 +10,10 @@
 | 
			
		||||
// 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.
 | 
			
		||||
 | 
			
		||||
@@ -19,12 +23,38 @@ TEXT	·Syscall(SB),NOSPLIT,$0-28
 | 
			
		||||
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)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										28
									
								
								vendor/golang.org/x/sys/unix/asm_linux_amd64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										28
									
								
								vendor/golang.org/x/sys/unix/asm_linux_amd64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -19,11 +19,39 @@ TEXT	·Syscall(SB),NOSPLIT,$0-56
 | 
			
		||||
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)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										29
									
								
								vendor/golang.org/x/sys/unix/asm_linux_arm.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										29
									
								
								vendor/golang.org/x/sys/unix/asm_linux_arm.s
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -19,11 +19,38 @@ TEXT	·Syscall(SB),NOSPLIT,$0-28
 | 
			
		||||
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 ·seek(SB),NOSPLIT,$0-32
 | 
			
		||||
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)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										28
									
								
								vendor/golang.org/x/sys/unix/asm_linux_arm64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										28
									
								
								vendor/golang.org/x/sys/unix/asm_linux_arm64.s
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -17,8 +17,36 @@ TEXT	·Syscall(SB),NOSPLIT,$0-56
 | 
			
		||||
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
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										28
									
								
								vendor/golang.org/x/sys/unix/asm_linux_mips64x.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										28
									
								
								vendor/golang.org/x/sys/unix/asm_linux_mips64x.s
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -21,8 +21,36 @@ TEXT	·Syscall(SB),NOSPLIT,$0-56
 | 
			
		||||
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
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										23
									
								
								vendor/golang.org/x/sys/unix/asm_linux_mipsx.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										23
									
								
								vendor/golang.org/x/sys/unix/asm_linux_mipsx.s
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -24,8 +24,31 @@ TEXT	·Syscall6(SB),NOSPLIT,$0-40
 | 
			
		||||
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
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										36
									
								
								vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										36
									
								
								vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -15,14 +15,30 @@
 | 
			
		||||
// 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 ·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 ·Syscall6(SB),NOSPLIT,$0-80
 | 
			
		||||
	BR	syscall·Syscall6(SB)
 | 
			
		||||
 | 
			
		||||
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), 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
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										28
									
								
								vendor/golang.org/x/sys/unix/asm_linux_s390x.s
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										28
									
								
								vendor/golang.org/x/sys/unix/asm_linux_s390x.s
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -21,8 +21,36 @@ TEXT ·Syscall(SB),NOSPLIT,$0-56
 | 
			
		||||
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_arm64.s
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
			
		||||
// Copyright 2019 The Go Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +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)
 | 
			
		||||
							
								
								
									
										30
									
								
								vendor/golang.org/x/sys/unix/cap_freebsd.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										30
									
								
								vendor/golang.org/x/sys/unix/cap_freebsd.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -7,7 +7,7 @@
 | 
			
		||||
package unix
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	errorspkg "errors"
 | 
			
		||||
	"errors"
 | 
			
		||||
	"fmt"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -60,26 +60,26 @@ func CapRightsSet(rights *CapRights, setrights []uint64) error {
 | 
			
		||||
 | 
			
		||||
	n := caparsize(rights)
 | 
			
		||||
	if n < capArSizeMin || n > capArSizeMax {
 | 
			
		||||
		return errorspkg.New("bad rights size")
 | 
			
		||||
		return errors.New("bad rights size")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, right := range setrights {
 | 
			
		||||
		if caprver(right) != CAP_RIGHTS_VERSION_00 {
 | 
			
		||||
			return errorspkg.New("bad right version")
 | 
			
		||||
			return errors.New("bad right version")
 | 
			
		||||
		}
 | 
			
		||||
		i, err := rightToIndex(right)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		if i >= n {
 | 
			
		||||
			return errorspkg.New("index overflow")
 | 
			
		||||
			return errors.New("index overflow")
 | 
			
		||||
		}
 | 
			
		||||
		if capidxbit(rights.Rights[i]) != capidxbit(right) {
 | 
			
		||||
			return errorspkg.New("index mismatch")
 | 
			
		||||
			return errors.New("index mismatch")
 | 
			
		||||
		}
 | 
			
		||||
		rights.Rights[i] |= right
 | 
			
		||||
		if capidxbit(rights.Rights[i]) != capidxbit(right) {
 | 
			
		||||
			return errorspkg.New("index mismatch (after assign)")
 | 
			
		||||
			return errors.New("index mismatch (after assign)")
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -95,26 +95,26 @@ func CapRightsClear(rights *CapRights, clearrights []uint64) error {
 | 
			
		||||
 | 
			
		||||
	n := caparsize(rights)
 | 
			
		||||
	if n < capArSizeMin || n > capArSizeMax {
 | 
			
		||||
		return errorspkg.New("bad rights size")
 | 
			
		||||
		return errors.New("bad rights size")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, right := range clearrights {
 | 
			
		||||
		if caprver(right) != CAP_RIGHTS_VERSION_00 {
 | 
			
		||||
			return errorspkg.New("bad right version")
 | 
			
		||||
			return errors.New("bad right version")
 | 
			
		||||
		}
 | 
			
		||||
		i, err := rightToIndex(right)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		if i >= n {
 | 
			
		||||
			return errorspkg.New("index overflow")
 | 
			
		||||
			return errors.New("index overflow")
 | 
			
		||||
		}
 | 
			
		||||
		if capidxbit(rights.Rights[i]) != capidxbit(right) {
 | 
			
		||||
			return errorspkg.New("index mismatch")
 | 
			
		||||
			return errors.New("index mismatch")
 | 
			
		||||
		}
 | 
			
		||||
		rights.Rights[i] &= ^(right & 0x01FFFFFFFFFFFFFF)
 | 
			
		||||
		if capidxbit(rights.Rights[i]) != capidxbit(right) {
 | 
			
		||||
			return errorspkg.New("index mismatch (after assign)")
 | 
			
		||||
			return errors.New("index mismatch (after assign)")
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -130,22 +130,22 @@ func CapRightsIsSet(rights *CapRights, setrights []uint64) (bool, error) {
 | 
			
		||||
 | 
			
		||||
	n := caparsize(rights)
 | 
			
		||||
	if n < capArSizeMin || n > capArSizeMax {
 | 
			
		||||
		return false, errorspkg.New("bad rights size")
 | 
			
		||||
		return false, errors.New("bad rights size")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, right := range setrights {
 | 
			
		||||
		if caprver(right) != CAP_RIGHTS_VERSION_00 {
 | 
			
		||||
			return false, errorspkg.New("bad right version")
 | 
			
		||||
			return false, errors.New("bad right version")
 | 
			
		||||
		}
 | 
			
		||||
		i, err := rightToIndex(right)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return false, err
 | 
			
		||||
		}
 | 
			
		||||
		if i >= n {
 | 
			
		||||
			return false, errorspkg.New("index overflow")
 | 
			
		||||
			return false, errors.New("index overflow")
 | 
			
		||||
		}
 | 
			
		||||
		if capidxbit(rights.Rights[i]) != capidxbit(right) {
 | 
			
		||||
			return false, errorspkg.New("index mismatch")
 | 
			
		||||
			return false, errors.New("index mismatch")
 | 
			
		||||
		}
 | 
			
		||||
		if (rights.Rights[i] & right) != right {
 | 
			
		||||
			return false, nil
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								vendor/golang.org/x/sys/unix/constants.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/golang.org/x/sys/unix/constants.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,7 +2,7 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build darwin dragonfly freebsd linux netbsd openbsd solaris
 | 
			
		||||
// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
 | 
			
		||||
 | 
			
		||||
package unix
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										27
									
								
								vendor/golang.org/x/sys/unix/dev_aix_ppc.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								vendor/golang.org/x/sys/unix/dev_aix_ppc.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,27 @@
 | 
			
		||||
// 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
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								vendor/golang.org/x/sys/unix/dev_aix_ppc64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
			
		||||
// 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)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										91
									
								
								vendor/golang.org/x/sys/unix/dirent.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										91
									
								
								vendor/golang.org/x/sys/unix/dirent.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,101 +2,16 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris
 | 
			
		||||
// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris
 | 
			
		||||
 | 
			
		||||
package unix
 | 
			
		||||
 | 
			
		||||
import "unsafe"
 | 
			
		||||
 | 
			
		||||
// readInt returns the size-bytes unsigned integer in native byte order at offset off.
 | 
			
		||||
func readInt(b []byte, off, size uintptr) (u uint64, ok bool) {
 | 
			
		||||
	if len(b) < int(off+size) {
 | 
			
		||||
		return 0, false
 | 
			
		||||
	}
 | 
			
		||||
	if isBigEndian {
 | 
			
		||||
		return readIntBE(b[off:], size), true
 | 
			
		||||
	}
 | 
			
		||||
	return readIntLE(b[off:], size), true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func readIntBE(b []byte, size uintptr) uint64 {
 | 
			
		||||
	switch size {
 | 
			
		||||
	case 1:
 | 
			
		||||
		return uint64(b[0])
 | 
			
		||||
	case 2:
 | 
			
		||||
		_ = b[1] // bounds check hint to compiler; see golang.org/issue/14808
 | 
			
		||||
		return uint64(b[1]) | uint64(b[0])<<8
 | 
			
		||||
	case 4:
 | 
			
		||||
		_ = b[3] // bounds check hint to compiler; see golang.org/issue/14808
 | 
			
		||||
		return uint64(b[3]) | uint64(b[2])<<8 | uint64(b[1])<<16 | uint64(b[0])<<24
 | 
			
		||||
	case 8:
 | 
			
		||||
		_ = b[7] // bounds check hint to compiler; see golang.org/issue/14808
 | 
			
		||||
		return uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 |
 | 
			
		||||
			uint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56
 | 
			
		||||
	default:
 | 
			
		||||
		panic("syscall: readInt with unsupported size")
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func readIntLE(b []byte, size uintptr) uint64 {
 | 
			
		||||
	switch size {
 | 
			
		||||
	case 1:
 | 
			
		||||
		return uint64(b[0])
 | 
			
		||||
	case 2:
 | 
			
		||||
		_ = b[1] // bounds check hint to compiler; see golang.org/issue/14808
 | 
			
		||||
		return uint64(b[0]) | uint64(b[1])<<8
 | 
			
		||||
	case 4:
 | 
			
		||||
		_ = b[3] // bounds check hint to compiler; see golang.org/issue/14808
 | 
			
		||||
		return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24
 | 
			
		||||
	case 8:
 | 
			
		||||
		_ = b[7] // bounds check hint to compiler; see golang.org/issue/14808
 | 
			
		||||
		return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 |
 | 
			
		||||
			uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56
 | 
			
		||||
	default:
 | 
			
		||||
		panic("syscall: readInt with unsupported size")
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
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) {
 | 
			
		||||
	origlen := len(buf)
 | 
			
		||||
	count = 0
 | 
			
		||||
	for max != 0 && len(buf) > 0 {
 | 
			
		||||
		reclen, ok := direntReclen(buf)
 | 
			
		||||
		if !ok || reclen > uint64(len(buf)) {
 | 
			
		||||
			return origlen, count, names
 | 
			
		||||
		}
 | 
			
		||||
		rec := buf[:reclen]
 | 
			
		||||
		buf = buf[reclen:]
 | 
			
		||||
		ino, ok := direntIno(rec)
 | 
			
		||||
		if !ok {
 | 
			
		||||
			break
 | 
			
		||||
		}
 | 
			
		||||
		if ino == 0 { // File absent in directory.
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		const namoff = uint64(unsafe.Offsetof(Dirent{}.Name))
 | 
			
		||||
		namlen, ok := direntNamlen(rec)
 | 
			
		||||
		if !ok || namoff+namlen > uint64(len(rec)) {
 | 
			
		||||
			break
 | 
			
		||||
		}
 | 
			
		||||
		name := rec[namoff : namoff+namlen]
 | 
			
		||||
		for i, c := range name {
 | 
			
		||||
			if c == 0 {
 | 
			
		||||
				name = name[:i]
 | 
			
		||||
				break
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		// Check for useless names before allocating a string.
 | 
			
		||||
		if string(name) == "." || string(name) == ".." {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		max--
 | 
			
		||||
		count++
 | 
			
		||||
		names = append(names, string(name))
 | 
			
		||||
	}
 | 
			
		||||
	return origlen - len(buf), count, names
 | 
			
		||||
	return syscall.ParseDirent(buf, max, names)
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								vendor/golang.org/x/sys/unix/env_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/golang.org/x/sys/unix/env_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,7 +2,7 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build darwin dragonfly freebsd linux netbsd openbsd solaris
 | 
			
		||||
// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
 | 
			
		||||
 | 
			
		||||
// Unix environment variables.
 | 
			
		||||
 | 
			
		||||
@@ -25,3 +25,7 @@ func Clearenv() {
 | 
			
		||||
func Environ() []string {
 | 
			
		||||
	return syscall.Environ()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Unsetenv(key string) error {
 | 
			
		||||
	return syscall.Unsetenv(key)
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										14
									
								
								vendor/golang.org/x/sys/unix/env_unset.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								vendor/golang.org/x/sys/unix/env_unset.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,14 +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 unix
 | 
			
		||||
 | 
			
		||||
import "syscall"
 | 
			
		||||
 | 
			
		||||
func Unsetenv(key string) error {
 | 
			
		||||
	// This was added in Go 1.4.
 | 
			
		||||
	return syscall.Unsetenv(key)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										12
									
								
								vendor/golang.org/x/sys/unix/flock.go → vendor/golang.org/x/sys/unix/fcntl.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								vendor/golang.org/x/sys/unix/flock.go → vendor/golang.org/x/sys/unix/fcntl.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,7 +2,7 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build darwin dragonfly freebsd linux netbsd openbsd
 | 
			
		||||
// +build dragonfly freebsd linux netbsd openbsd
 | 
			
		||||
 | 
			
		||||
package unix
 | 
			
		||||
 | 
			
		||||
@@ -12,6 +12,16 @@ import "unsafe"
 | 
			
		||||
// 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)))
 | 
			
		||||
							
								
								
									
										18
									
								
								vendor/golang.org/x/sys/unix/fcntl_darwin.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								vendor/golang.org/x/sys/unix/fcntl_darwin.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
// Copyright 2019 The Go Authors. All rights reserved.
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
package 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
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										27
									
								
								vendor/golang.org/x/sys/unix/file_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										27
									
								
								vendor/golang.org/x/sys/unix/file_unix.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.
 | 
			
		||||
 | 
			
		||||
package unix
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"os"
 | 
			
		||||
	"syscall"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// FIXME: unexported function from os
 | 
			
		||||
// syscallMode returns the syscall-specific mode bits from Go's portable mode bits.
 | 
			
		||||
func syscallMode(i os.FileMode) (o uint32) {
 | 
			
		||||
	o |= uint32(i.Perm())
 | 
			
		||||
	if i&os.ModeSetuid != 0 {
 | 
			
		||||
		o |= syscall.S_ISUID
 | 
			
		||||
	}
 | 
			
		||||
	if i&os.ModeSetgid != 0 {
 | 
			
		||||
		o |= syscall.S_ISGID
 | 
			
		||||
	}
 | 
			
		||||
	if i&os.ModeSticky != 0 {
 | 
			
		||||
		o |= syscall.S_ISVTX
 | 
			
		||||
	}
 | 
			
		||||
	// No mapping for Go's ModeTemporary (plan9 only).
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										16
									
								
								vendor/golang.org/x/sys/unix/gccgo.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										16
									
								
								vendor/golang.org/x/sys/unix/gccgo.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -3,6 +3,7 @@
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build gccgo
 | 
			
		||||
// +build !aix
 | 
			
		||||
 | 
			
		||||
package unix
 | 
			
		||||
 | 
			
		||||
@@ -11,9 +12,19 @@ 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)
 | 
			
		||||
@@ -35,6 +46,11 @@ func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr,
 | 
			
		||||
	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)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								vendor/golang.org/x/sys/unix/gccgo_c.c
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								vendor/golang.org/x/sys/unix/gccgo_c.c
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -3,6 +3,7 @@
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build gccgo
 | 
			
		||||
// +build !aix
 | 
			
		||||
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
@@ -31,11 +32,8 @@ gccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintp
 | 
			
		||||
	return r;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Define the use function in C so that it is not inlined.
 | 
			
		||||
 | 
			
		||||
extern void use(void *) __asm__ (GOSYM_PREFIX GOPKGPATH ".use") __attribute__((noinline));
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
use(void *p __attribute__ ((unused)))
 | 
			
		||||
uintptr_t
 | 
			
		||||
gccgoRealSyscallNoError(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)
 | 
			
		||||
{
 | 
			
		||||
	return syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										30
									
								
								vendor/golang.org/x/sys/unix/ioctl.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								vendor/golang.org/x/sys/unix/ioctl.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
			
		||||
// 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
 | 
			
		||||
 | 
			
		||||
package unix
 | 
			
		||||
 | 
			
		||||
import "runtime"
 | 
			
		||||
 | 
			
		||||
// IoctlSetWinsize performs an ioctl on fd with a *Winsize argument.
 | 
			
		||||
//
 | 
			
		||||
// To change fd's window size, the req argument should be TIOCSWINSZ.
 | 
			
		||||
func IoctlSetWinsize(fd int, req uint, value *Winsize) error {
 | 
			
		||||
	// TODO: if we get the chance, remove the req parameter and
 | 
			
		||||
	// hardcode TIOCSWINSZ.
 | 
			
		||||
	err := ioctlSetWinsize(fd, req, value)
 | 
			
		||||
	runtime.KeepAlive(value)
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IoctlSetTermios performs an ioctl on fd with a *Termios.
 | 
			
		||||
//
 | 
			
		||||
// The req value will usually be TCSETA or TIOCSETA.
 | 
			
		||||
func IoctlSetTermios(fd int, req uint, value *Termios) error {
 | 
			
		||||
	// TODO: if we get the chance, remove the req parameter.
 | 
			
		||||
	err := ioctlSetTermios(fd, req, value)
 | 
			
		||||
	runtime.KeepAlive(value)
 | 
			
		||||
	return err
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										98
									
								
								vendor/golang.org/x/sys/unix/mkall.sh
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										98
									
								
								vendor/golang.org/x/sys/unix/mkall.sh
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -10,13 +10,14 @@
 | 
			
		||||
GOOSARCH="${GOOS}_${GOARCH}"
 | 
			
		||||
 | 
			
		||||
# defaults
 | 
			
		||||
mksyscall="./mksyscall.pl"
 | 
			
		||||
mksyscall="go run mksyscall.go"
 | 
			
		||||
mkerrors="./mkerrors.sh"
 | 
			
		||||
zerrors="zerrors_$GOOSARCH.go"
 | 
			
		||||
mksysctl=""
 | 
			
		||||
zsysctl="zsysctl_$GOOSARCH.go"
 | 
			
		||||
mksysnum=
 | 
			
		||||
mktypes=
 | 
			
		||||
mkasm=
 | 
			
		||||
run="sh"
 | 
			
		||||
cmd=""
 | 
			
		||||
 | 
			
		||||
@@ -45,8 +46,8 @@ case "$#" in
 | 
			
		||||
	exit 2
 | 
			
		||||
esac
 | 
			
		||||
 | 
			
		||||
if [[ "$GOOS" = "linux" ]] && [[ "$GOARCH" != "sparc64" ]]; then
 | 
			
		||||
	# Use then new build system
 | 
			
		||||
if [[ "$GOOS" = "linux" ]]; then
 | 
			
		||||
	# Use the Docker-based build system
 | 
			
		||||
	# Files generated through docker (use $cmd so you can Ctl-C the build or run)
 | 
			
		||||
	$cmd docker build --tag generate:$GOOS $GOOS
 | 
			
		||||
	$cmd docker run --interactive --tty --volume $(dirname "$(readlink -f "$0")"):/build generate:$GOOS
 | 
			
		||||
@@ -59,104 +60,111 @@ _* | *_ | _)
 | 
			
		||||
	echo 'undefined $GOOS_$GOARCH:' "$GOOSARCH" 1>&2
 | 
			
		||||
	exit 1
 | 
			
		||||
	;;
 | 
			
		||||
aix_ppc)
 | 
			
		||||
	mkerrors="$mkerrors -maix32"
 | 
			
		||||
	mksyscall="go run mksyscall_aix_ppc.go -aix"
 | 
			
		||||
	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
 | 
			
		||||
	;;
 | 
			
		||||
aix_ppc64)
 | 
			
		||||
	mkerrors="$mkerrors -maix64"
 | 
			
		||||
	mksyscall="go run mksyscall_aix_ppc64.go -aix"
 | 
			
		||||
	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
 | 
			
		||||
	;;
 | 
			
		||||
darwin_386)
 | 
			
		||||
	mkerrors="$mkerrors -m32"
 | 
			
		||||
	mksyscall="./mksyscall.pl -l32"
 | 
			
		||||
	mksysnum="./mksysnum_darwin.pl $(xcrun --show-sdk-path --sdk macosx)/usr/include/sys/syscall.h"
 | 
			
		||||
	mksyscall="go run mksyscall.go -l32"
 | 
			
		||||
	mksysnum="go run mksysnum.go $(xcrun --show-sdk-path --sdk macosx)/usr/include/sys/syscall.h"
 | 
			
		||||
	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
 | 
			
		||||
	mkasm="go run mkasm_darwin.go"
 | 
			
		||||
	;;
 | 
			
		||||
darwin_amd64)
 | 
			
		||||
	mkerrors="$mkerrors -m64"
 | 
			
		||||
	mksysnum="./mksysnum_darwin.pl $(xcrun --show-sdk-path --sdk macosx)/usr/include/sys/syscall.h"
 | 
			
		||||
	mksysnum="go run mksysnum.go $(xcrun --show-sdk-path --sdk macosx)/usr/include/sys/syscall.h"
 | 
			
		||||
	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
 | 
			
		||||
	mkasm="go run mkasm_darwin.go"
 | 
			
		||||
	;;
 | 
			
		||||
darwin_arm)
 | 
			
		||||
	mkerrors="$mkerrors"
 | 
			
		||||
	mksysnum="./mksysnum_darwin.pl $(xcrun --show-sdk-path --sdk iphoneos)/usr/include/sys/syscall.h"
 | 
			
		||||
	mksyscall="go run mksyscall.go -l32"
 | 
			
		||||
	mksysnum="go run mksysnum.go $(xcrun --show-sdk-path --sdk iphoneos)/usr/include/sys/syscall.h"
 | 
			
		||||
	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
 | 
			
		||||
	mkasm="go run mkasm_darwin.go"
 | 
			
		||||
	;;
 | 
			
		||||
darwin_arm64)
 | 
			
		||||
	mkerrors="$mkerrors -m64"
 | 
			
		||||
	mksysnum="./mksysnum_darwin.pl $(xcrun --show-sdk-path --sdk iphoneos)/usr/include/sys/syscall.h"
 | 
			
		||||
	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
 | 
			
		||||
	;;
 | 
			
		||||
dragonfly_386)
 | 
			
		||||
	mkerrors="$mkerrors -m32"
 | 
			
		||||
	mksyscall="./mksyscall.pl -l32 -dragonfly"
 | 
			
		||||
	mksysnum="curl -s 'http://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master' | ./mksysnum_dragonfly.pl"
 | 
			
		||||
	mksysnum="go run mksysnum.go $(xcrun --show-sdk-path --sdk iphoneos)/usr/include/sys/syscall.h"
 | 
			
		||||
	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
 | 
			
		||||
	mkasm="go run mkasm_darwin.go"
 | 
			
		||||
	;;
 | 
			
		||||
dragonfly_amd64)
 | 
			
		||||
	mkerrors="$mkerrors -m64"
 | 
			
		||||
	mksyscall="./mksyscall.pl -dragonfly"
 | 
			
		||||
	mksysnum="curl -s 'http://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master' | ./mksysnum_dragonfly.pl"
 | 
			
		||||
	mksyscall="go run mksyscall.go -dragonfly"
 | 
			
		||||
	mksysnum="go run mksysnum.go 'https://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master'"
 | 
			
		||||
	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
 | 
			
		||||
	;;
 | 
			
		||||
freebsd_386)
 | 
			
		||||
	mkerrors="$mkerrors -m32"
 | 
			
		||||
	mksyscall="./mksyscall.pl -l32"
 | 
			
		||||
	mksysnum="curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl"
 | 
			
		||||
	mksyscall="go run mksyscall.go -l32"
 | 
			
		||||
	mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master'"
 | 
			
		||||
	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
 | 
			
		||||
	;;
 | 
			
		||||
freebsd_amd64)
 | 
			
		||||
	mkerrors="$mkerrors -m64"
 | 
			
		||||
	mksysnum="curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl"
 | 
			
		||||
	mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master'"
 | 
			
		||||
	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
 | 
			
		||||
	;;
 | 
			
		||||
freebsd_arm)
 | 
			
		||||
	mkerrors="$mkerrors"
 | 
			
		||||
	mksyscall="./mksyscall.pl -l32 -arm"
 | 
			
		||||
	mksysnum="curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl"
 | 
			
		||||
	mksyscall="go run mksyscall.go -l32 -arm"
 | 
			
		||||
	mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master'"
 | 
			
		||||
	# Let the type of C char be signed for making the bare syscall
 | 
			
		||||
	# API consistent across platforms.
 | 
			
		||||
	mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char"
 | 
			
		||||
	;;
 | 
			
		||||
linux_sparc64)
 | 
			
		||||
	GOOSARCH_in=syscall_linux_sparc64.go
 | 
			
		||||
	unistd_h=/usr/include/sparc64-linux-gnu/asm/unistd.h
 | 
			
		||||
freebsd_arm64)
 | 
			
		||||
	mkerrors="$mkerrors -m64"
 | 
			
		||||
	mksysnum="./mksysnum_linux.pl $unistd_h"
 | 
			
		||||
	mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master'"
 | 
			
		||||
	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
 | 
			
		||||
	;;
 | 
			
		||||
netbsd_386)
 | 
			
		||||
	mkerrors="$mkerrors -m32"
 | 
			
		||||
	mksyscall="./mksyscall.pl -l32 -netbsd"
 | 
			
		||||
	mksysnum="curl -s 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_netbsd.pl"
 | 
			
		||||
	mksyscall="go run mksyscall.go -l32 -netbsd"
 | 
			
		||||
	mksysnum="go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'"
 | 
			
		||||
	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
 | 
			
		||||
	;;
 | 
			
		||||
netbsd_amd64)
 | 
			
		||||
	mkerrors="$mkerrors -m64"
 | 
			
		||||
	mksyscall="./mksyscall.pl -netbsd"
 | 
			
		||||
	mksysnum="curl -s 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_netbsd.pl"
 | 
			
		||||
	mksyscall="go run mksyscall.go -netbsd"
 | 
			
		||||
	mksysnum="go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'"
 | 
			
		||||
	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
 | 
			
		||||
	;;
 | 
			
		||||
netbsd_arm)
 | 
			
		||||
	mkerrors="$mkerrors"
 | 
			
		||||
	mksyscall="./mksyscall.pl -l32 -netbsd -arm"
 | 
			
		||||
	mksysnum="curl -s 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_netbsd.pl"
 | 
			
		||||
	mksyscall="go run mksyscall.go -l32 -netbsd -arm"
 | 
			
		||||
	mksysnum="go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'"
 | 
			
		||||
	# Let the type of C char be signed for making the bare syscall
 | 
			
		||||
	# API consistent across platforms.
 | 
			
		||||
	mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char"
 | 
			
		||||
	;;
 | 
			
		||||
openbsd_386)
 | 
			
		||||
	mkerrors="$mkerrors -m32"
 | 
			
		||||
	mksyscall="./mksyscall.pl -l32 -openbsd"
 | 
			
		||||
	mksyscall="go run mksyscall.go -l32 -openbsd"
 | 
			
		||||
	mksysctl="./mksysctl_openbsd.pl"
 | 
			
		||||
	mksysnum="curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl"
 | 
			
		||||
	mksysnum="go run mksysnum.go 'https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master'"
 | 
			
		||||
	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
 | 
			
		||||
	;;
 | 
			
		||||
openbsd_amd64)
 | 
			
		||||
	mkerrors="$mkerrors -m64"
 | 
			
		||||
	mksyscall="./mksyscall.pl -openbsd"
 | 
			
		||||
	mksyscall="go run mksyscall.go -openbsd"
 | 
			
		||||
	mksysctl="./mksysctl_openbsd.pl"
 | 
			
		||||
	mksysnum="curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl"
 | 
			
		||||
	mksysnum="go run mksysnum.go 'https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master'"
 | 
			
		||||
	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
 | 
			
		||||
	;;
 | 
			
		||||
openbsd_arm)
 | 
			
		||||
	mkerrors="$mkerrors"
 | 
			
		||||
	mksyscall="./mksyscall.pl -l32 -openbsd -arm"
 | 
			
		||||
	mksyscall="go run mksyscall.go -l32 -openbsd -arm"
 | 
			
		||||
	mksysctl="./mksysctl_openbsd.pl"
 | 
			
		||||
	mksysnum="curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl"
 | 
			
		||||
	mksysnum="go run mksysnum.go 'https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master'"
 | 
			
		||||
	# Let the type of C char be signed for making the bare syscall
 | 
			
		||||
	# API consistent across platforms.
 | 
			
		||||
	mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char"
 | 
			
		||||
@@ -183,12 +191,24 @@ esac
 | 
			
		||||
			syscall_goos="syscall_bsd.go $syscall_goos"
 | 
			
		||||
			;;
 | 
			
		||||
		esac
 | 
			
		||||
		if [ -n "$mksyscall" ]; then echo "$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go"; fi
 | 
			
		||||
		;;
 | 
			
		||||
		if [ -n "$mksyscall" ]; then
 | 
			
		||||
			if [ "$GOOSARCH" == "aix_ppc64" ]; then
 | 
			
		||||
				# aix/ppc64 script generates files instead of writing to stdin.
 | 
			
		||||
				echo "$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in && gofmt -w zsyscall_$GOOSARCH.go && gofmt -w zsyscall_"$GOOSARCH"_gccgo.go && gofmt -w zsyscall_"$GOOSARCH"_gc.go " ;
 | 
			
		||||
			elif [ "$GOOS" == "darwin" ]; then
 | 
			
		||||
			        # pre-1.12, direct syscalls
 | 
			
		||||
			        echo "$mksyscall -tags $GOOS,$GOARCH,!go1.12 $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.1_11.go";
 | 
			
		||||
			        # 1.12 and later, syscalls via libSystem
 | 
			
		||||
				echo "$mksyscall -tags $GOOS,$GOARCH,go1.12 $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go";
 | 
			
		||||
			else
 | 
			
		||||
				echo "$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go";
 | 
			
		||||
			fi
 | 
			
		||||
		fi
 | 
			
		||||
	esac
 | 
			
		||||
	if [ -n "$mksysctl" ]; then echo "$mksysctl |gofmt >$zsysctl"; fi
 | 
			
		||||
	if [ -n "$mksysnum" ]; then echo "$mksysnum |gofmt >zsysnum_$GOOSARCH.go"; fi
 | 
			
		||||
	if [ -n "$mktypes" ]; then
 | 
			
		||||
		echo "$mktypes types_$GOOS.go | go run mkpost.go > ztypes_$GOOSARCH.go";
 | 
			
		||||
	if [ -n "$mkasm" ]; then echo "$mkasm $GOARCH"; fi
 | 
			
		||||
	fi
 | 
			
		||||
) | $run
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										61
									
								
								vendor/golang.org/x/sys/unix/mkasm_darwin.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								vendor/golang.org/x/sys/unix/mkasm_darwin.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,61 @@
 | 
			
		||||
// 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 ignore
 | 
			
		||||
 | 
			
		||||
// mkasm_darwin.go generates assembly trampolines to call libSystem routines from Go.
 | 
			
		||||
//This program must be run after mksyscall.go.
 | 
			
		||||
package main
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bytes"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io/ioutil"
 | 
			
		||||
	"log"
 | 
			
		||||
	"os"
 | 
			
		||||
	"strings"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
	in1, err := ioutil.ReadFile("syscall_darwin.go")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Fatalf("can't open syscall_darwin.go: %s", err)
 | 
			
		||||
	}
 | 
			
		||||
	arch := os.Args[1]
 | 
			
		||||
	in2, err := ioutil.ReadFile(fmt.Sprintf("syscall_darwin_%s.go", arch))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Fatalf("can't open syscall_darwin_%s.go: %s", arch, err)
 | 
			
		||||
	}
 | 
			
		||||
	in3, err := ioutil.ReadFile(fmt.Sprintf("zsyscall_darwin_%s.go", arch))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Fatalf("can't open zsyscall_darwin_%s.go: %s", arch, err)
 | 
			
		||||
	}
 | 
			
		||||
	in := string(in1) + string(in2) + string(in3)
 | 
			
		||||
 | 
			
		||||
	trampolines := map[string]bool{}
 | 
			
		||||
 | 
			
		||||
	var out bytes.Buffer
 | 
			
		||||
 | 
			
		||||
	fmt.Fprintf(&out, "// go run mkasm_darwin.go %s\n", strings.Join(os.Args[1:], " "))
 | 
			
		||||
	fmt.Fprintf(&out, "// Code generated by the command above; DO NOT EDIT.\n")
 | 
			
		||||
	fmt.Fprintf(&out, "\n")
 | 
			
		||||
	fmt.Fprintf(&out, "// +build go1.12\n")
 | 
			
		||||
	fmt.Fprintf(&out, "\n")
 | 
			
		||||
	fmt.Fprintf(&out, "#include \"textflag.h\"\n")
 | 
			
		||||
	for _, line := range strings.Split(in, "\n") {
 | 
			
		||||
		if !strings.HasPrefix(line, "func ") || !strings.HasSuffix(line, "_trampoline()") {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		fn := line[5 : len(line)-13]
 | 
			
		||||
		if !trampolines[fn] {
 | 
			
		||||
			trampolines[fn] = true
 | 
			
		||||
			fmt.Fprintf(&out, "TEXT ·%s_trampoline(SB),NOSPLIT,$0-0\n", fn)
 | 
			
		||||
			fmt.Fprintf(&out, "\tJMP\t%s(SB)\n", fn)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	err = ioutil.WriteFile(fmt.Sprintf("zsyscall_darwin_%s.s", arch), out.Bytes(), 0644)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Fatalf("can't write zsyscall_darwin_%s.s: %s", arch, err)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										148
									
								
								vendor/golang.org/x/sys/unix/mkerrors.sh
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										148
									
								
								vendor/golang.org/x/sys/unix/mkerrors.sh
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -17,15 +17,17 @@ if test -z "$GOARCH" -o -z "$GOOS"; then
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Check that we are using the new build system if we should
 | 
			
		||||
if [[ "$GOOS" = "linux" ]] && [[ "$GOARCH" != "sparc64" ]]; then
 | 
			
		||||
	if [[ "$GOLANG_SYS_BUILD" != "docker" ]]; then
 | 
			
		||||
		echo 1>&2 "In the new build system, mkerrors should not be called directly."
 | 
			
		||||
if [[ "$GOOS" = "linux" ]] && [[ "$GOLANG_SYS_BUILD" != "docker" ]]; then
 | 
			
		||||
	echo 1>&2 "In the Docker based build system, mkerrors should not be called directly."
 | 
			
		||||
	echo 1>&2 "See README.md"
 | 
			
		||||
	exit 1
 | 
			
		||||
	fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
CC=${CC:-cc}
 | 
			
		||||
if [[ "$GOOS" = "aix" ]]; then
 | 
			
		||||
	CC=${CC:-gcc}
 | 
			
		||||
else
 | 
			
		||||
	CC=${CC:-cc}
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [[ "$GOOS" = "solaris" ]]; then
 | 
			
		||||
	# Assumes GNU versions of utilities in PATH.
 | 
			
		||||
@@ -34,10 +36,27 @@ fi
 | 
			
		||||
 | 
			
		||||
uname=$(uname)
 | 
			
		||||
 | 
			
		||||
includes_AIX='
 | 
			
		||||
#include <net/if.h>
 | 
			
		||||
#include <net/netopt.h>
 | 
			
		||||
#include <netinet/ip_mroute.h>
 | 
			
		||||
#include <sys/protosw.h>
 | 
			
		||||
#include <sys/stropts.h>
 | 
			
		||||
#include <sys/mman.h>
 | 
			
		||||
#include <sys/poll.h>
 | 
			
		||||
#include <sys/termio.h>
 | 
			
		||||
#include <termios.h>
 | 
			
		||||
#include <fcntl.h>
 | 
			
		||||
 | 
			
		||||
#define AF_LOCAL AF_UNIX
 | 
			
		||||
'
 | 
			
		||||
 | 
			
		||||
includes_Darwin='
 | 
			
		||||
#define _DARWIN_C_SOURCE
 | 
			
		||||
#define KERNEL
 | 
			
		||||
#define _DARWIN_USE_64_BIT_INODE
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#include <sys/attr.h>
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#include <sys/event.h>
 | 
			
		||||
#include <sys/ptrace.h>
 | 
			
		||||
@@ -46,7 +65,9 @@ includes_Darwin='
 | 
			
		||||
#include <sys/sysctl.h>
 | 
			
		||||
#include <sys/mman.h>
 | 
			
		||||
#include <sys/mount.h>
 | 
			
		||||
#include <sys/utsname.h>
 | 
			
		||||
#include <sys/wait.h>
 | 
			
		||||
#include <sys/xattr.h>
 | 
			
		||||
#include <net/bpf.h>
 | 
			
		||||
#include <net/if.h>
 | 
			
		||||
#include <net/if_types.h>
 | 
			
		||||
@@ -61,8 +82,10 @@ includes_DragonFly='
 | 
			
		||||
#include <sys/event.h>
 | 
			
		||||
#include <sys/socket.h>
 | 
			
		||||
#include <sys/sockio.h>
 | 
			
		||||
#include <sys/stat.h>
 | 
			
		||||
#include <sys/sysctl.h>
 | 
			
		||||
#include <sys/mman.h>
 | 
			
		||||
#include <sys/mount.h>
 | 
			
		||||
#include <sys/wait.h>
 | 
			
		||||
#include <sys/ioctl.h>
 | 
			
		||||
#include <net/bpf.h>
 | 
			
		||||
@@ -76,12 +99,13 @@ includes_DragonFly='
 | 
			
		||||
'
 | 
			
		||||
 | 
			
		||||
includes_FreeBSD='
 | 
			
		||||
#include <sys/capability.h>
 | 
			
		||||
#include <sys/capsicum.h>
 | 
			
		||||
#include <sys/param.h>
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#include <sys/event.h>
 | 
			
		||||
#include <sys/socket.h>
 | 
			
		||||
#include <sys/sockio.h>
 | 
			
		||||
#include <sys/stat.h>
 | 
			
		||||
#include <sys/sysctl.h>
 | 
			
		||||
#include <sys/mman.h>
 | 
			
		||||
#include <sys/mount.h>
 | 
			
		||||
@@ -155,20 +179,29 @@ struct ltchars {
 | 
			
		||||
#include <sys/stat.h>
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#include <sys/time.h>
 | 
			
		||||
#include <sys/signalfd.h>
 | 
			
		||||
#include <sys/socket.h>
 | 
			
		||||
#include <sys/xattr.h>
 | 
			
		||||
#include <linux/errqueue.h>
 | 
			
		||||
#include <linux/if.h>
 | 
			
		||||
#include <linux/if_alg.h>
 | 
			
		||||
#include <linux/if_arp.h>
 | 
			
		||||
#include <linux/if_ether.h>
 | 
			
		||||
#include <linux/if_ppp.h>
 | 
			
		||||
#include <linux/if_tun.h>
 | 
			
		||||
#include <linux/if_packet.h>
 | 
			
		||||
#include <linux/if_addr.h>
 | 
			
		||||
#include <linux/falloc.h>
 | 
			
		||||
#include <linux/filter.h>
 | 
			
		||||
#include <linux/fs.h>
 | 
			
		||||
#include <linux/kexec.h>
 | 
			
		||||
#include <linux/keyctl.h>
 | 
			
		||||
#include <linux/magic.h>
 | 
			
		||||
#include <linux/memfd.h>
 | 
			
		||||
#include <linux/module.h>
 | 
			
		||||
#include <linux/netfilter/nfnetlink.h>
 | 
			
		||||
#include <linux/netlink.h>
 | 
			
		||||
#include <linux/net_namespace.h>
 | 
			
		||||
#include <linux/perf_event.h>
 | 
			
		||||
#include <linux/random.h>
 | 
			
		||||
#include <linux/reboot.h>
 | 
			
		||||
@@ -185,8 +218,20 @@ struct ltchars {
 | 
			
		||||
#include <linux/taskstats.h>
 | 
			
		||||
#include <linux/genetlink.h>
 | 
			
		||||
#include <linux/watchdog.h>
 | 
			
		||||
#include <linux/hdreg.h>
 | 
			
		||||
#include <linux/rtc.h>
 | 
			
		||||
#include <linux/if_xdp.h>
 | 
			
		||||
#include <mtd/ubi-user.h>
 | 
			
		||||
#include <net/route.h>
 | 
			
		||||
 | 
			
		||||
#if defined(__sparc__)
 | 
			
		||||
// On sparc{,64}, the kernel defines struct termios2 itself which clashes with the
 | 
			
		||||
// definition in glibc. As only the error constants are needed here, include the
 | 
			
		||||
// generic termibits.h (which is included by termbits.h on sparc).
 | 
			
		||||
#include <asm-generic/termbits.h>
 | 
			
		||||
#else
 | 
			
		||||
#include <asm/termbits.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef MSG_FASTOPEN
 | 
			
		||||
#define MSG_FASTOPEN    0x20000000
 | 
			
		||||
@@ -220,7 +265,9 @@ includes_NetBSD='
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#include <sys/param.h>
 | 
			
		||||
#include <sys/event.h>
 | 
			
		||||
#include <sys/extattr.h>
 | 
			
		||||
#include <sys/mman.h>
 | 
			
		||||
#include <sys/mount.h>
 | 
			
		||||
#include <sys/socket.h>
 | 
			
		||||
#include <sys/sockio.h>
 | 
			
		||||
#include <sys/sysctl.h>
 | 
			
		||||
@@ -246,11 +293,14 @@ includes_OpenBSD='
 | 
			
		||||
#include <sys/param.h>
 | 
			
		||||
#include <sys/event.h>
 | 
			
		||||
#include <sys/mman.h>
 | 
			
		||||
#include <sys/mount.h>
 | 
			
		||||
#include <sys/socket.h>
 | 
			
		||||
#include <sys/sockio.h>
 | 
			
		||||
#include <sys/stat.h>
 | 
			
		||||
#include <sys/sysctl.h>
 | 
			
		||||
#include <sys/termios.h>
 | 
			
		||||
#include <sys/ttycom.h>
 | 
			
		||||
#include <sys/unistd.h>
 | 
			
		||||
#include <sys/wait.h>
 | 
			
		||||
#include <net/bpf.h>
 | 
			
		||||
#include <net/if.h>
 | 
			
		||||
@@ -282,6 +332,7 @@ includes_SunOS='
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#include <sys/socket.h>
 | 
			
		||||
#include <sys/sockio.h>
 | 
			
		||||
#include <sys/stat.h>
 | 
			
		||||
#include <sys/mman.h>
 | 
			
		||||
#include <sys/wait.h>
 | 
			
		||||
#include <sys/ioctl.h>
 | 
			
		||||
@@ -344,6 +395,7 @@ ccflags="$@"
 | 
			
		||||
		$2 ~ /^EXTATTR_NAMESPACE_NAMES/ ||
 | 
			
		||||
		$2 ~ /^EXTATTR_NAMESPACE_[A-Z]+_STRING/ {next}
 | 
			
		||||
 | 
			
		||||
		$2 !~ /^ECCAPBITS/ &&
 | 
			
		||||
		$2 !~ /^ETH_/ &&
 | 
			
		||||
		$2 !~ /^EPROC_/ &&
 | 
			
		||||
		$2 !~ /^EQUIV_/ &&
 | 
			
		||||
@@ -360,6 +412,7 @@ ccflags="$@"
 | 
			
		||||
		$2 ~ /^IGN/ ||
 | 
			
		||||
		$2 ~ /^IX(ON|ANY|OFF)$/ ||
 | 
			
		||||
		$2 ~ /^IN(LCR|PCK)$/ ||
 | 
			
		||||
		$2 !~ "X86_CR3_PCID_NOFLUSH" &&
 | 
			
		||||
		$2 ~ /(^FLU?SH)|(FLU?SH$)/ ||
 | 
			
		||||
		$2 ~ /^C(LOCAL|READ|MSPAR|RTSCTS)$/ ||
 | 
			
		||||
		$2 == "BRKINT" ||
 | 
			
		||||
@@ -378,21 +431,27 @@ ccflags="$@"
 | 
			
		||||
		$2 ~ /^TC[IO](ON|OFF)$/ ||
 | 
			
		||||
		$2 ~ /^IN_/ ||
 | 
			
		||||
		$2 ~ /^LOCK_(SH|EX|NB|UN)$/ ||
 | 
			
		||||
		$2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|ICMP6|TCP|EVFILT|NOTE|EV|SHUT|PROT|MAP|PACKET|MSG|SCM|MCL|DT|MADV|PR)_/ ||
 | 
			
		||||
		$2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|ICMP6|TCP|EVFILT|NOTE|EV|SHUT|PROT|MAP|MFD|T?PACKET|MSG|SCM|MCL|DT|MADV|PR)_/ ||
 | 
			
		||||
		$2 ~ /^TP_STATUS_/ ||
 | 
			
		||||
		$2 ~ /^FALLOC_/ ||
 | 
			
		||||
		$2 == "ICMPV6_FILTER" ||
 | 
			
		||||
		$2 == "SOMAXCONN" ||
 | 
			
		||||
		$2 == "NAME_MAX" ||
 | 
			
		||||
		$2 == "IFNAMSIZ" ||
 | 
			
		||||
		$2 ~ /^CTL_(MAXNAME|NET|QUERY)$/ ||
 | 
			
		||||
		$2 ~ /^CTL_(HW|KERN|MAXNAME|NET|QUERY)$/ ||
 | 
			
		||||
		$2 ~ /^KERN_(HOSTNAME|OS(RELEASE|TYPE)|VERSION)$/ ||
 | 
			
		||||
		$2 ~ /^HW_MACHINE$/ ||
 | 
			
		||||
		$2 ~ /^SYSCTL_VERS/ ||
 | 
			
		||||
		$2 !~ "MNT_BITS" &&
 | 
			
		||||
		$2 ~ /^(MS|MNT|UMOUNT)_/ ||
 | 
			
		||||
		$2 ~ /^TUN(SET|GET|ATTACH|DETACH)/ ||
 | 
			
		||||
		$2 ~ /^(O|F|E?FD|NAME|S|PTRACE|PT)_/ ||
 | 
			
		||||
		$2 ~ /^(O|F|[ES]?FD|NAME|S|PTRACE|PT)_/ ||
 | 
			
		||||
		$2 ~ /^KEXEC_/ ||
 | 
			
		||||
		$2 ~ /^LINUX_REBOOT_CMD_/ ||
 | 
			
		||||
		$2 ~ /^LINUX_REBOOT_MAGIC[12]$/ ||
 | 
			
		||||
		$2 ~ /^MODULE_INIT_/ ||
 | 
			
		||||
		$2 !~ "NLA_TYPE_MASK" &&
 | 
			
		||||
		$2 ~ /^(NETLINK|NLM|NLMSG|NLA|IFA|IFAN|RT|RTCF|RTN|RTPROT|RTNH|ARPHRD|ETH_P)_/ ||
 | 
			
		||||
		$2 ~ /^(NETLINK|NLM|NLMSG|NLA|IFA|IFAN|RT|RTC|RTCF|RTN|RTPROT|RTNH|ARPHRD|ETH_P|NETNSA)_/ ||
 | 
			
		||||
		$2 ~ /^SIOC/ ||
 | 
			
		||||
		$2 ~ /^TIOC/ ||
 | 
			
		||||
		$2 ~ /^TCGET/ ||
 | 
			
		||||
@@ -407,25 +466,41 @@ ccflags="$@"
 | 
			
		||||
		$2 ~ /^CLONE_[A-Z_]+/ ||
 | 
			
		||||
		$2 !~ /^(BPF_TIMEVAL)$/ &&
 | 
			
		||||
		$2 ~ /^(BPF|DLT)_/ ||
 | 
			
		||||
		$2 ~ /^CLOCK_/ ||
 | 
			
		||||
		$2 ~ /^(CLOCK|TIMER)_/ ||
 | 
			
		||||
		$2 ~ /^CAN_/ ||
 | 
			
		||||
		$2 ~ /^CAP_/ ||
 | 
			
		||||
		$2 ~ /^ALG_/ ||
 | 
			
		||||
		$2 ~ /^FS_(POLICY_FLAGS|KEY_DESC|ENCRYPTION_MODE|[A-Z0-9_]+_KEY_SIZE|IOC_(GET|SET)_ENCRYPTION)/ ||
 | 
			
		||||
		$2 ~ /^GRND_/ ||
 | 
			
		||||
		$2 ~ /^RND/ ||
 | 
			
		||||
		$2 ~ /^KEY_(SPEC|REQKEY_DEFL)_/ ||
 | 
			
		||||
		$2 ~ /^KEYCTL_/ ||
 | 
			
		||||
		$2 ~ /^PERF_EVENT_IOC_/ ||
 | 
			
		||||
		$2 ~ /^SECCOMP_MODE_/ ||
 | 
			
		||||
		$2 ~ /^SPLICE_/ ||
 | 
			
		||||
		$2 ~ /^SYNC_FILE_RANGE_/ ||
 | 
			
		||||
		$2 !~ /^AUDIT_RECORD_MAGIC/ &&
 | 
			
		||||
		$2 !~ /IOC_MAGIC/ &&
 | 
			
		||||
		$2 ~ /^[A-Z][A-Z0-9_]+_MAGIC2?$/ ||
 | 
			
		||||
		$2 ~ /^(VM|VMADDR)_/ ||
 | 
			
		||||
		$2 ~ /^IOCTL_VM_SOCKETS_/ ||
 | 
			
		||||
		$2 ~ /^(TASKSTATS|TS)_/ ||
 | 
			
		||||
		$2 ~ /^CGROUPSTATS_/ ||
 | 
			
		||||
		$2 ~ /^GENL_/ ||
 | 
			
		||||
		$2 ~ /^STATX_/ ||
 | 
			
		||||
		$2 ~ /^RENAME/ ||
 | 
			
		||||
		$2 ~ /^UBI_IOC[A-Z]/ ||
 | 
			
		||||
		$2 ~ /^UTIME_/ ||
 | 
			
		||||
		$2 ~ /^XATTR_(CREATE|REPLACE)/ ||
 | 
			
		||||
		$2 ~ /^XATTR_(CREATE|REPLACE|NO(DEFAULT|FOLLOW|SECURITY)|SHOWCOMPRESSION)/ ||
 | 
			
		||||
		$2 ~ /^ATTR_(BIT_MAP_COUNT|(CMN|VOL|FILE)_)/ ||
 | 
			
		||||
		$2 ~ /^FSOPT_/ ||
 | 
			
		||||
		$2 ~ /^WDIOC_/ ||
 | 
			
		||||
		$2 ~ /^NFN/ ||
 | 
			
		||||
		$2 ~ /^XDP_/ ||
 | 
			
		||||
		$2 ~ /^(HDIO|WIN|SMART)_/ ||
 | 
			
		||||
		$2 !~ "WMESGLEN" &&
 | 
			
		||||
		$2 ~ /^W[A-Z0-9]+$/ ||
 | 
			
		||||
		$2 ~/^PPPIOC/ ||
 | 
			
		||||
		$2 ~ /^BLK[A-Z]*(GET$|SET$|BUF$|PART$|SIZE)/ {printf("\t%s = C.%s\n", $2, $2)}
 | 
			
		||||
		$2 ~ /^__WCOREFLAG$/ {next}
 | 
			
		||||
		$2 ~ /^__W[A-Z0-9]+$/ {printf("\t%s = C.%s\n", substr($2,3), $2)}
 | 
			
		||||
@@ -447,7 +522,7 @@ errors=$(
 | 
			
		||||
signals=$(
 | 
			
		||||
	echo '#include <signal.h>' | $CC -x c - -E -dM $ccflags |
 | 
			
		||||
	awk '$1=="#define" && $2 ~ /^SIG[A-Z0-9]+$/ { print $2 }' |
 | 
			
		||||
	egrep -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT)' |
 | 
			
		||||
	egrep -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT|SIGMAX64)' |
 | 
			
		||||
	sort
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -457,7 +532,7 @@ echo '#include <errno.h>' | $CC -x c - -E -dM $ccflags |
 | 
			
		||||
	sort >_error.grep
 | 
			
		||||
echo '#include <signal.h>' | $CC -x c - -E -dM $ccflags |
 | 
			
		||||
	awk '$1=="#define" && $2 ~ /^SIG[A-Z0-9]+$/ { print "^\t" $2 "[ \t]*=" }' |
 | 
			
		||||
	egrep -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT)' |
 | 
			
		||||
	egrep -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT|SIGMAX64)' |
 | 
			
		||||
	sort >_signal.grep
 | 
			
		||||
 | 
			
		||||
echo '// mkerrors.sh' "$@"
 | 
			
		||||
@@ -493,21 +568,26 @@ echo ')'
 | 
			
		||||
 | 
			
		||||
enum { A = 'A', Z = 'Z', a = 'a', z = 'z' }; // avoid need for single quotes below
 | 
			
		||||
 | 
			
		||||
int errors[] = {
 | 
			
		||||
struct tuple {
 | 
			
		||||
	int num;
 | 
			
		||||
	const char *name;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct tuple errors[] = {
 | 
			
		||||
"
 | 
			
		||||
	for i in $errors
 | 
			
		||||
	do
 | 
			
		||||
		echo -E '	'$i,
 | 
			
		||||
		echo -E '	{'$i', "'$i'" },'
 | 
			
		||||
	done
 | 
			
		||||
 | 
			
		||||
	echo -E "
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
int signals[] = {
 | 
			
		||||
struct tuple signals[] = {
 | 
			
		||||
"
 | 
			
		||||
	for i in $signals
 | 
			
		||||
	do
 | 
			
		||||
		echo -E '	'$i,
 | 
			
		||||
		echo -E '	{'$i', "'$i'" },'
 | 
			
		||||
	done
 | 
			
		||||
 | 
			
		||||
	# Use -E because on some systems bash builtin interprets \n itself.
 | 
			
		||||
@@ -515,9 +595,9 @@ int signals[] = {
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
intcmp(const void *a, const void *b)
 | 
			
		||||
tuplecmp(const void *a, const void *b)
 | 
			
		||||
{
 | 
			
		||||
	return *(int*)a - *(int*)b;
 | 
			
		||||
	return ((struct tuple *)a)->num - ((struct tuple *)b)->num;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
@@ -527,26 +607,34 @@ main(void)
 | 
			
		||||
	char buf[1024], *p;
 | 
			
		||||
 | 
			
		||||
	printf("\n\n// Error table\n");
 | 
			
		||||
	printf("var errors = [...]string {\n");
 | 
			
		||||
	qsort(errors, nelem(errors), sizeof errors[0], intcmp);
 | 
			
		||||
	printf("var errorList = [...]struct {\n");
 | 
			
		||||
	printf("\tnum  syscall.Errno\n");
 | 
			
		||||
	printf("\tname string\n");
 | 
			
		||||
	printf("\tdesc string\n");
 | 
			
		||||
	printf("} {\n");
 | 
			
		||||
	qsort(errors, nelem(errors), sizeof errors[0], tuplecmp);
 | 
			
		||||
	for(i=0; i<nelem(errors); i++) {
 | 
			
		||||
		e = errors[i];
 | 
			
		||||
		if(i > 0 && errors[i-1] == e)
 | 
			
		||||
		e = errors[i].num;
 | 
			
		||||
		if(i > 0 && errors[i-1].num == e)
 | 
			
		||||
			continue;
 | 
			
		||||
		strcpy(buf, strerror(e));
 | 
			
		||||
		// lowercase first letter: Bad -> bad, but STREAM -> STREAM.
 | 
			
		||||
		if(A <= buf[0] && buf[0] <= Z && a <= buf[1] && buf[1] <= z)
 | 
			
		||||
			buf[0] += a - A;
 | 
			
		||||
		printf("\t%d: \"%s\",\n", e, buf);
 | 
			
		||||
		printf("\t{ %d, \"%s\", \"%s\" },\n", e, errors[i].name, buf);
 | 
			
		||||
	}
 | 
			
		||||
	printf("}\n\n");
 | 
			
		||||
 | 
			
		||||
	printf("\n\n// Signal table\n");
 | 
			
		||||
	printf("var signals = [...]string {\n");
 | 
			
		||||
	qsort(signals, nelem(signals), sizeof signals[0], intcmp);
 | 
			
		||||
	printf("var signalList = [...]struct {\n");
 | 
			
		||||
	printf("\tnum  syscall.Signal\n");
 | 
			
		||||
	printf("\tname string\n");
 | 
			
		||||
	printf("\tdesc string\n");
 | 
			
		||||
	printf("} {\n");
 | 
			
		||||
	qsort(signals, nelem(signals), sizeof signals[0], tuplecmp);
 | 
			
		||||
	for(i=0; i<nelem(signals); i++) {
 | 
			
		||||
		e = signals[i];
 | 
			
		||||
		if(i > 0 && signals[i-1] == e)
 | 
			
		||||
		e = signals[i].num;
 | 
			
		||||
		if(i > 0 && signals[i-1].num == e)
 | 
			
		||||
			continue;
 | 
			
		||||
		strcpy(buf, strsignal(e));
 | 
			
		||||
		// lowercase first letter: Bad -> bad, but STREAM -> STREAM.
 | 
			
		||||
@@ -556,7 +644,7 @@ main(void)
 | 
			
		||||
		p = strrchr(buf, ":"[0]);
 | 
			
		||||
		if(p)
 | 
			
		||||
			*p = '\0';
 | 
			
		||||
		printf("\t%d: \"%s\",\n", e, buf);
 | 
			
		||||
		printf("\t{ %d, \"%s\", \"%s\" },\n", e, signals[i].name, buf);
 | 
			
		||||
	}
 | 
			
		||||
	printf("}\n\n");
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										31
									
								
								vendor/golang.org/x/sys/unix/mkpost.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										31
									
								
								vendor/golang.org/x/sys/unix/mkpost.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -28,10 +28,10 @@ func main() {
 | 
			
		||||
	if goarch == "" {
 | 
			
		||||
		goarch = os.Getenv("GOARCH")
 | 
			
		||||
	}
 | 
			
		||||
	// Check that we are using the new build system if we should be.
 | 
			
		||||
	if goos == "linux" && goarch != "sparc64" {
 | 
			
		||||
	// Check that we are using the Docker-based build system if we should be.
 | 
			
		||||
	if goos == "linux" {
 | 
			
		||||
		if os.Getenv("GOLANG_SYS_BUILD") != "docker" {
 | 
			
		||||
			os.Stderr.WriteString("In the new build system, mkpost should not be called directly.\n")
 | 
			
		||||
			os.Stderr.WriteString("In the Docker-based build system, mkpost should not be called directly.\n")
 | 
			
		||||
			os.Stderr.WriteString("See README.md\n")
 | 
			
		||||
			os.Exit(1)
 | 
			
		||||
		}
 | 
			
		||||
@@ -42,6 +42,14 @@ func main() {
 | 
			
		||||
		log.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Intentionally export __val fields in Fsid and Sigset_t
 | 
			
		||||
	valRegex := regexp.MustCompile(`type (Fsid|Sigset_t) struct {(\s+)X__val(\s+\S+\s+)}`)
 | 
			
		||||
	b = valRegex.ReplaceAll(b, []byte("type $1 struct {${2}Val$3}"))
 | 
			
		||||
 | 
			
		||||
	// Intentionally export __fds_bits field in FdSet
 | 
			
		||||
	fdSetRegex := regexp.MustCompile(`type (FdSet) struct {(\s+)X__fds_bits(\s+\S+\s+)}`)
 | 
			
		||||
	b = fdSetRegex.ReplaceAll(b, []byte("type $1 struct {${2}Bits$3}"))
 | 
			
		||||
 | 
			
		||||
	// If we have empty Ptrace structs, we should delete them. Only s390x emits
 | 
			
		||||
	// nonempty Ptrace structs.
 | 
			
		||||
	ptraceRexexp := regexp.MustCompile(`type Ptrace((Psw|Fpregs|Per) struct {\s*})`)
 | 
			
		||||
@@ -61,16 +69,21 @@ func main() {
 | 
			
		||||
	convertUtsnameRegex := regexp.MustCompile(`((Sys|Node|Domain)name|Release|Version|Machine)(\s+)\[(\d+)\]u?int8`)
 | 
			
		||||
	b = convertUtsnameRegex.ReplaceAll(b, []byte("$1$3[$4]byte"))
 | 
			
		||||
 | 
			
		||||
	// We refuse to export private fields on s390x
 | 
			
		||||
	if goarch == "s390x" && goos == "linux" {
 | 
			
		||||
	// Convert [1024]int8 to [1024]byte in Ptmget members
 | 
			
		||||
	convertPtmget := regexp.MustCompile(`([SC]n)(\s+)\[(\d+)\]u?int8`)
 | 
			
		||||
	b = convertPtmget.ReplaceAll(b, []byte("$1[$3]byte"))
 | 
			
		||||
 | 
			
		||||
	// Remove spare fields (e.g. in Statx_t)
 | 
			
		||||
	spareFieldsRegex := regexp.MustCompile(`X__spare\S*`)
 | 
			
		||||
	b = spareFieldsRegex.ReplaceAll(b, []byte("_"))
 | 
			
		||||
 | 
			
		||||
	// Remove cgo padding fields
 | 
			
		||||
		removeFieldsRegex := regexp.MustCompile(`Pad_cgo_\d+`)
 | 
			
		||||
		b = removeFieldsRegex.ReplaceAll(b, []byte("_"))
 | 
			
		||||
	removePaddingFieldsRegex := regexp.MustCompile(`Pad_cgo_\d+`)
 | 
			
		||||
	b = removePaddingFieldsRegex.ReplaceAll(b, []byte("_"))
 | 
			
		||||
 | 
			
		||||
	// Remove padding, hidden, or unused fields
 | 
			
		||||
		removeFieldsRegex = regexp.MustCompile(`X_\S+`)
 | 
			
		||||
	removeFieldsRegex = regexp.MustCompile(`\b(X_\S+|Padding)`)
 | 
			
		||||
	b = removeFieldsRegex.ReplaceAll(b, []byte("_"))
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Remove the first line of warning from cgo
 | 
			
		||||
	b = b[bytes.IndexByte(b, '\n')+1:]
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										402
									
								
								vendor/golang.org/x/sys/unix/mksyscall.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										402
									
								
								vendor/golang.org/x/sys/unix/mksyscall.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,402 @@
 | 
			
		||||
// 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 ignore
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
This program reads a file containing function prototypes
 | 
			
		||||
(like syscall_darwin.go) and generates system call bodies.
 | 
			
		||||
The prototypes are marked by lines beginning with "//sys"
 | 
			
		||||
and read like func declarations if //sys is replaced by func, but:
 | 
			
		||||
	* The parameter lists must give a name for each argument.
 | 
			
		||||
	  This includes return parameters.
 | 
			
		||||
	* The parameter lists must give a type for each argument:
 | 
			
		||||
	  the (x, y, z int) shorthand is not allowed.
 | 
			
		||||
	* If the return parameter is an error number, it must be named errno.
 | 
			
		||||
 | 
			
		||||
A line beginning with //sysnb is like //sys, except that the
 | 
			
		||||
goroutine will not be suspended during the execution of the system
 | 
			
		||||
call.  This must only be used for system calls which can never
 | 
			
		||||
block, as otherwise the system call could cause all goroutines to
 | 
			
		||||
hang.
 | 
			
		||||
*/
 | 
			
		||||
package main
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bufio"
 | 
			
		||||
	"flag"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"os"
 | 
			
		||||
	"regexp"
 | 
			
		||||
	"strings"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	b32       = flag.Bool("b32", false, "32bit big-endian")
 | 
			
		||||
	l32       = flag.Bool("l32", false, "32bit little-endian")
 | 
			
		||||
	plan9     = flag.Bool("plan9", false, "plan9")
 | 
			
		||||
	openbsd   = flag.Bool("openbsd", false, "openbsd")
 | 
			
		||||
	netbsd    = flag.Bool("netbsd", false, "netbsd")
 | 
			
		||||
	dragonfly = flag.Bool("dragonfly", false, "dragonfly")
 | 
			
		||||
	arm       = flag.Bool("arm", false, "arm") // 64-bit value should use (even, odd)-pair
 | 
			
		||||
	tags      = flag.String("tags", "", "build tags")
 | 
			
		||||
	filename  = flag.String("output", "", "output file name (standard output if omitted)")
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// cmdLine returns this programs's commandline arguments
 | 
			
		||||
func cmdLine() string {
 | 
			
		||||
	return "go run mksyscall.go " + strings.Join(os.Args[1:], " ")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// buildTags returns build tags
 | 
			
		||||
func buildTags() string {
 | 
			
		||||
	return *tags
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Param is function parameter
 | 
			
		||||
type Param struct {
 | 
			
		||||
	Name string
 | 
			
		||||
	Type string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// usage prints the program usage
 | 
			
		||||
func usage() {
 | 
			
		||||
	fmt.Fprintf(os.Stderr, "usage: go run mksyscall.go [-b32 | -l32] [-tags x,y] [file ...]\n")
 | 
			
		||||
	os.Exit(1)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// parseParamList parses parameter list and returns a slice of parameters
 | 
			
		||||
func parseParamList(list string) []string {
 | 
			
		||||
	list = strings.TrimSpace(list)
 | 
			
		||||
	if list == "" {
 | 
			
		||||
		return []string{}
 | 
			
		||||
	}
 | 
			
		||||
	return regexp.MustCompile(`\s*,\s*`).Split(list, -1)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// parseParam splits a parameter into name and type
 | 
			
		||||
func parseParam(p string) Param {
 | 
			
		||||
	ps := regexp.MustCompile(`^(\S*) (\S*)$`).FindStringSubmatch(p)
 | 
			
		||||
	if ps == nil {
 | 
			
		||||
		fmt.Fprintf(os.Stderr, "malformed parameter: %s\n", p)
 | 
			
		||||
		os.Exit(1)
 | 
			
		||||
	}
 | 
			
		||||
	return Param{ps[1], ps[2]}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
	// Get the OS and architecture (using GOARCH_TARGET if it exists)
 | 
			
		||||
	goos := os.Getenv("GOOS")
 | 
			
		||||
	if goos == "" {
 | 
			
		||||
		fmt.Fprintln(os.Stderr, "GOOS not defined in environment")
 | 
			
		||||
		os.Exit(1)
 | 
			
		||||
	}
 | 
			
		||||
	goarch := os.Getenv("GOARCH_TARGET")
 | 
			
		||||
	if goarch == "" {
 | 
			
		||||
		goarch = os.Getenv("GOARCH")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Check that we are using the Docker-based build system if we should
 | 
			
		||||
	if goos == "linux" {
 | 
			
		||||
		if os.Getenv("GOLANG_SYS_BUILD") != "docker" {
 | 
			
		||||
			fmt.Fprintf(os.Stderr, "In the Docker-based build system, mksyscall should not be called directly.\n")
 | 
			
		||||
			fmt.Fprintf(os.Stderr, "See README.md\n")
 | 
			
		||||
			os.Exit(1)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	flag.Usage = usage
 | 
			
		||||
	flag.Parse()
 | 
			
		||||
	if len(flag.Args()) <= 0 {
 | 
			
		||||
		fmt.Fprintf(os.Stderr, "no files to parse provided\n")
 | 
			
		||||
		usage()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	endianness := ""
 | 
			
		||||
	if *b32 {
 | 
			
		||||
		endianness = "big-endian"
 | 
			
		||||
	} else if *l32 {
 | 
			
		||||
		endianness = "little-endian"
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	libc := false
 | 
			
		||||
	if goos == "darwin" && strings.Contains(buildTags(), ",go1.12") {
 | 
			
		||||
		libc = true
 | 
			
		||||
	}
 | 
			
		||||
	trampolines := map[string]bool{}
 | 
			
		||||
 | 
			
		||||
	text := ""
 | 
			
		||||
	for _, path := range flag.Args() {
 | 
			
		||||
		file, err := os.Open(path)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			fmt.Fprintf(os.Stderr, err.Error())
 | 
			
		||||
			os.Exit(1)
 | 
			
		||||
		}
 | 
			
		||||
		s := bufio.NewScanner(file)
 | 
			
		||||
		for s.Scan() {
 | 
			
		||||
			t := s.Text()
 | 
			
		||||
			t = strings.TrimSpace(t)
 | 
			
		||||
			t = regexp.MustCompile(`\s+`).ReplaceAllString(t, ` `)
 | 
			
		||||
			nonblock := regexp.MustCompile(`^\/\/sysnb `).FindStringSubmatch(t)
 | 
			
		||||
			if regexp.MustCompile(`^\/\/sys `).FindStringSubmatch(t) == nil && nonblock == nil {
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// Line must be of the form
 | 
			
		||||
			//	func Open(path string, mode int, perm int) (fd int, errno error)
 | 
			
		||||
			// Split into name, in params, out params.
 | 
			
		||||
			f := regexp.MustCompile(`^\/\/sys(nb)? (\w+)\(([^()]*)\)\s*(?:\(([^()]+)\))?\s*(?:=\s*((?i)SYS_[A-Z0-9_]+))?$`).FindStringSubmatch(t)
 | 
			
		||||
			if f == nil {
 | 
			
		||||
				fmt.Fprintf(os.Stderr, "%s:%s\nmalformed //sys declaration\n", path, t)
 | 
			
		||||
				os.Exit(1)
 | 
			
		||||
			}
 | 
			
		||||
			funct, inps, outps, sysname := f[2], f[3], f[4], f[5]
 | 
			
		||||
 | 
			
		||||
			// Split argument lists on comma.
 | 
			
		||||
			in := parseParamList(inps)
 | 
			
		||||
			out := parseParamList(outps)
 | 
			
		||||
 | 
			
		||||
			// Try in vain to keep people from editing this file.
 | 
			
		||||
			// The theory is that they jump into the middle of the file
 | 
			
		||||
			// without reading the header.
 | 
			
		||||
			text += "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n"
 | 
			
		||||
 | 
			
		||||
			// Go function header.
 | 
			
		||||
			outDecl := ""
 | 
			
		||||
			if len(out) > 0 {
 | 
			
		||||
				outDecl = fmt.Sprintf(" (%s)", strings.Join(out, ", "))
 | 
			
		||||
			}
 | 
			
		||||
			text += fmt.Sprintf("func %s(%s)%s {\n", funct, strings.Join(in, ", "), outDecl)
 | 
			
		||||
 | 
			
		||||
			// Check if err return available
 | 
			
		||||
			errvar := ""
 | 
			
		||||
			for _, param := range out {
 | 
			
		||||
				p := parseParam(param)
 | 
			
		||||
				if p.Type == "error" {
 | 
			
		||||
					errvar = p.Name
 | 
			
		||||
					break
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// Prepare arguments to Syscall.
 | 
			
		||||
			var args []string
 | 
			
		||||
			n := 0
 | 
			
		||||
			for _, param := range in {
 | 
			
		||||
				p := parseParam(param)
 | 
			
		||||
				if regexp.MustCompile(`^\*`).FindStringSubmatch(p.Type) != nil {
 | 
			
		||||
					args = append(args, "uintptr(unsafe.Pointer("+p.Name+"))")
 | 
			
		||||
				} else if p.Type == "string" && errvar != "" {
 | 
			
		||||
					text += fmt.Sprintf("\tvar _p%d *byte\n", n)
 | 
			
		||||
					text += fmt.Sprintf("\t_p%d, %s = BytePtrFromString(%s)\n", n, errvar, p.Name)
 | 
			
		||||
					text += fmt.Sprintf("\tif %s != nil {\n\t\treturn\n\t}\n", errvar)
 | 
			
		||||
					args = append(args, fmt.Sprintf("uintptr(unsafe.Pointer(_p%d))", n))
 | 
			
		||||
					n++
 | 
			
		||||
				} else if p.Type == "string" {
 | 
			
		||||
					fmt.Fprintf(os.Stderr, path+":"+funct+" uses string arguments, but has no error return\n")
 | 
			
		||||
					text += fmt.Sprintf("\tvar _p%d *byte\n", n)
 | 
			
		||||
					text += fmt.Sprintf("\t_p%d, _ = BytePtrFromString(%s)\n", n, p.Name)
 | 
			
		||||
					args = append(args, fmt.Sprintf("uintptr(unsafe.Pointer(_p%d))", n))
 | 
			
		||||
					n++
 | 
			
		||||
				} else if regexp.MustCompile(`^\[\](.*)`).FindStringSubmatch(p.Type) != nil {
 | 
			
		||||
					// Convert slice into pointer, length.
 | 
			
		||||
					// Have to be careful not to take address of &a[0] if len == 0:
 | 
			
		||||
					// pass dummy pointer in that case.
 | 
			
		||||
					// Used to pass nil, but some OSes or simulators reject write(fd, nil, 0).
 | 
			
		||||
					text += fmt.Sprintf("\tvar _p%d unsafe.Pointer\n", n)
 | 
			
		||||
					text += fmt.Sprintf("\tif len(%s) > 0 {\n\t\t_p%d = unsafe.Pointer(&%s[0])\n\t}", p.Name, n, p.Name)
 | 
			
		||||
					text += fmt.Sprintf(" else {\n\t\t_p%d = unsafe.Pointer(&_zero)\n\t}\n", n)
 | 
			
		||||
					args = append(args, fmt.Sprintf("uintptr(_p%d)", n), fmt.Sprintf("uintptr(len(%s))", p.Name))
 | 
			
		||||
					n++
 | 
			
		||||
				} else if p.Type == "int64" && (*openbsd || *netbsd) {
 | 
			
		||||
					args = append(args, "0")
 | 
			
		||||
					if endianness == "big-endian" {
 | 
			
		||||
						args = append(args, fmt.Sprintf("uintptr(%s>>32)", p.Name), fmt.Sprintf("uintptr(%s)", p.Name))
 | 
			
		||||
					} else if endianness == "little-endian" {
 | 
			
		||||
						args = append(args, fmt.Sprintf("uintptr(%s)", p.Name), fmt.Sprintf("uintptr(%s>>32)", p.Name))
 | 
			
		||||
					} else {
 | 
			
		||||
						args = append(args, fmt.Sprintf("uintptr(%s)", p.Name))
 | 
			
		||||
					}
 | 
			
		||||
				} else if p.Type == "int64" && *dragonfly {
 | 
			
		||||
					if regexp.MustCompile(`^(?i)extp(read|write)`).FindStringSubmatch(funct) == nil {
 | 
			
		||||
						args = append(args, "0")
 | 
			
		||||
					}
 | 
			
		||||
					if endianness == "big-endian" {
 | 
			
		||||
						args = append(args, fmt.Sprintf("uintptr(%s>>32)", p.Name), fmt.Sprintf("uintptr(%s)", p.Name))
 | 
			
		||||
					} else if endianness == "little-endian" {
 | 
			
		||||
						args = append(args, fmt.Sprintf("uintptr(%s)", p.Name), fmt.Sprintf("uintptr(%s>>32)", p.Name))
 | 
			
		||||
					} else {
 | 
			
		||||
						args = append(args, fmt.Sprintf("uintptr(%s)", p.Name))
 | 
			
		||||
					}
 | 
			
		||||
				} else if p.Type == "int64" && endianness != "" {
 | 
			
		||||
					if len(args)%2 == 1 && *arm {
 | 
			
		||||
						// arm abi specifies 64-bit argument uses
 | 
			
		||||
						// (even, odd) pair
 | 
			
		||||
						args = append(args, "0")
 | 
			
		||||
					}
 | 
			
		||||
					if endianness == "big-endian" {
 | 
			
		||||
						args = append(args, fmt.Sprintf("uintptr(%s>>32)", p.Name), fmt.Sprintf("uintptr(%s)", p.Name))
 | 
			
		||||
					} else {
 | 
			
		||||
						args = append(args, fmt.Sprintf("uintptr(%s)", p.Name), fmt.Sprintf("uintptr(%s>>32)", p.Name))
 | 
			
		||||
					}
 | 
			
		||||
				} else {
 | 
			
		||||
					args = append(args, fmt.Sprintf("uintptr(%s)", p.Name))
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// Determine which form to use; pad args with zeros.
 | 
			
		||||
			asm := "Syscall"
 | 
			
		||||
			if nonblock != nil {
 | 
			
		||||
				if errvar == "" && goos == "linux" {
 | 
			
		||||
					asm = "RawSyscallNoError"
 | 
			
		||||
				} else {
 | 
			
		||||
					asm = "RawSyscall"
 | 
			
		||||
				}
 | 
			
		||||
			} else {
 | 
			
		||||
				if errvar == "" && goos == "linux" {
 | 
			
		||||
					asm = "SyscallNoError"
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			if len(args) <= 3 {
 | 
			
		||||
				for len(args) < 3 {
 | 
			
		||||
					args = append(args, "0")
 | 
			
		||||
				}
 | 
			
		||||
			} else if len(args) <= 6 {
 | 
			
		||||
				asm += "6"
 | 
			
		||||
				for len(args) < 6 {
 | 
			
		||||
					args = append(args, "0")
 | 
			
		||||
				}
 | 
			
		||||
			} else if len(args) <= 9 {
 | 
			
		||||
				asm += "9"
 | 
			
		||||
				for len(args) < 9 {
 | 
			
		||||
					args = append(args, "0")
 | 
			
		||||
				}
 | 
			
		||||
			} else {
 | 
			
		||||
				fmt.Fprintf(os.Stderr, "%s:%s too many arguments to system call\n", path, funct)
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// System call number.
 | 
			
		||||
			if sysname == "" {
 | 
			
		||||
				sysname = "SYS_" + funct
 | 
			
		||||
				sysname = regexp.MustCompile(`([a-z])([A-Z])`).ReplaceAllString(sysname, `${1}_$2`)
 | 
			
		||||
				sysname = strings.ToUpper(sysname)
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			var libcFn string
 | 
			
		||||
			if libc {
 | 
			
		||||
				asm = "syscall_" + strings.ToLower(asm[:1]) + asm[1:] // internal syscall call
 | 
			
		||||
				sysname = strings.TrimPrefix(sysname, "SYS_")         // remove SYS_
 | 
			
		||||
				sysname = strings.ToLower(sysname)                    // lowercase
 | 
			
		||||
				if sysname == "getdirentries64" {
 | 
			
		||||
					// Special case - libSystem name and
 | 
			
		||||
					// raw syscall name don't match.
 | 
			
		||||
					sysname = "__getdirentries64"
 | 
			
		||||
				}
 | 
			
		||||
				libcFn = sysname
 | 
			
		||||
				sysname = "funcPC(libc_" + sysname + "_trampoline)"
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// Actual call.
 | 
			
		||||
			arglist := strings.Join(args, ", ")
 | 
			
		||||
			call := fmt.Sprintf("%s(%s, %s)", asm, sysname, arglist)
 | 
			
		||||
 | 
			
		||||
			// Assign return values.
 | 
			
		||||
			body := ""
 | 
			
		||||
			ret := []string{"_", "_", "_"}
 | 
			
		||||
			doErrno := false
 | 
			
		||||
			for i := 0; i < len(out); i++ {
 | 
			
		||||
				p := parseParam(out[i])
 | 
			
		||||
				reg := ""
 | 
			
		||||
				if p.Name == "err" && !*plan9 {
 | 
			
		||||
					reg = "e1"
 | 
			
		||||
					ret[2] = reg
 | 
			
		||||
					doErrno = true
 | 
			
		||||
				} else if p.Name == "err" && *plan9 {
 | 
			
		||||
					ret[0] = "r0"
 | 
			
		||||
					ret[2] = "e1"
 | 
			
		||||
					break
 | 
			
		||||
				} else {
 | 
			
		||||
					reg = fmt.Sprintf("r%d", i)
 | 
			
		||||
					ret[i] = reg
 | 
			
		||||
				}
 | 
			
		||||
				if p.Type == "bool" {
 | 
			
		||||
					reg = fmt.Sprintf("%s != 0", reg)
 | 
			
		||||
				}
 | 
			
		||||
				if p.Type == "int64" && endianness != "" {
 | 
			
		||||
					// 64-bit number in r1:r0 or r0:r1.
 | 
			
		||||
					if i+2 > len(out) {
 | 
			
		||||
						fmt.Fprintf(os.Stderr, "%s:%s not enough registers for int64 return\n", path, funct)
 | 
			
		||||
					}
 | 
			
		||||
					if endianness == "big-endian" {
 | 
			
		||||
						reg = fmt.Sprintf("int64(r%d)<<32 | int64(r%d)", i, i+1)
 | 
			
		||||
					} else {
 | 
			
		||||
						reg = fmt.Sprintf("int64(r%d)<<32 | int64(r%d)", i+1, i)
 | 
			
		||||
					}
 | 
			
		||||
					ret[i] = fmt.Sprintf("r%d", i)
 | 
			
		||||
					ret[i+1] = fmt.Sprintf("r%d", i+1)
 | 
			
		||||
				}
 | 
			
		||||
				if reg != "e1" || *plan9 {
 | 
			
		||||
					body += fmt.Sprintf("\t%s = %s(%s)\n", p.Name, p.Type, reg)
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			if ret[0] == "_" && ret[1] == "_" && ret[2] == "_" {
 | 
			
		||||
				text += fmt.Sprintf("\t%s\n", call)
 | 
			
		||||
			} else {
 | 
			
		||||
				if errvar == "" && goos == "linux" {
 | 
			
		||||
					// raw syscall without error on Linux, see golang.org/issue/22924
 | 
			
		||||
					text += fmt.Sprintf("\t%s, %s := %s\n", ret[0], ret[1], call)
 | 
			
		||||
				} else {
 | 
			
		||||
					text += fmt.Sprintf("\t%s, %s, %s := %s\n", ret[0], ret[1], ret[2], call)
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			text += body
 | 
			
		||||
 | 
			
		||||
			if *plan9 && ret[2] == "e1" {
 | 
			
		||||
				text += "\tif int32(r0) == -1 {\n"
 | 
			
		||||
				text += "\t\terr = e1\n"
 | 
			
		||||
				text += "\t}\n"
 | 
			
		||||
			} else if doErrno {
 | 
			
		||||
				text += "\tif e1 != 0 {\n"
 | 
			
		||||
				text += "\t\terr = errnoErr(e1)\n"
 | 
			
		||||
				text += "\t}\n"
 | 
			
		||||
			}
 | 
			
		||||
			text += "\treturn\n"
 | 
			
		||||
			text += "}\n\n"
 | 
			
		||||
 | 
			
		||||
			if libc && !trampolines[libcFn] {
 | 
			
		||||
				// some system calls share a trampoline, like read and readlen.
 | 
			
		||||
				trampolines[libcFn] = true
 | 
			
		||||
				// Declare assembly trampoline.
 | 
			
		||||
				text += fmt.Sprintf("func libc_%s_trampoline()\n", libcFn)
 | 
			
		||||
				// Assembly trampoline calls the libc_* function, which this magic
 | 
			
		||||
				// redirects to use the function from libSystem.
 | 
			
		||||
				text += fmt.Sprintf("//go:linkname libc_%s libc_%s\n", libcFn, libcFn)
 | 
			
		||||
				text += fmt.Sprintf("//go:cgo_import_dynamic libc_%s %s \"/usr/lib/libSystem.B.dylib\"\n", libcFn, libcFn)
 | 
			
		||||
				text += "\n"
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		if err := s.Err(); err != nil {
 | 
			
		||||
			fmt.Fprintf(os.Stderr, err.Error())
 | 
			
		||||
			os.Exit(1)
 | 
			
		||||
		}
 | 
			
		||||
		file.Close()
 | 
			
		||||
	}
 | 
			
		||||
	fmt.Printf(srcTemplate, cmdLine(), buildTags(), text)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const srcTemplate = `// %s
 | 
			
		||||
// Code generated by the command above; see README.md. DO NOT EDIT.
 | 
			
		||||
 | 
			
		||||
// +build %s
 | 
			
		||||
 | 
			
		||||
package unix
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"syscall"
 | 
			
		||||
	"unsafe"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var _ syscall.Errno
 | 
			
		||||
 | 
			
		||||
%s
 | 
			
		||||
`
 | 
			
		||||
							
								
								
									
										328
									
								
								vendor/golang.org/x/sys/unix/mksyscall.pl
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										328
									
								
								vendor/golang.org/x/sys/unix/mksyscall.pl
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,328 +0,0 @@
 | 
			
		||||
#!/usr/bin/env perl
 | 
			
		||||
# 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.
 | 
			
		||||
 | 
			
		||||
# This program reads a file containing function prototypes
 | 
			
		||||
# (like syscall_darwin.go) and generates system call bodies.
 | 
			
		||||
# The prototypes are marked by lines beginning with "//sys"
 | 
			
		||||
# and read like func declarations if //sys is replaced by func, but:
 | 
			
		||||
#	* The parameter lists must give a name for each argument.
 | 
			
		||||
#	  This includes return parameters.
 | 
			
		||||
#	* The parameter lists must give a type for each argument:
 | 
			
		||||
#	  the (x, y, z int) shorthand is not allowed.
 | 
			
		||||
#	* If the return parameter is an error number, it must be named errno.
 | 
			
		||||
 | 
			
		||||
# A line beginning with //sysnb is like //sys, except that the
 | 
			
		||||
# goroutine will not be suspended during the execution of the system
 | 
			
		||||
# call.  This must only be used for system calls which can never
 | 
			
		||||
# block, as otherwise the system call could cause all goroutines to
 | 
			
		||||
# hang.
 | 
			
		||||
 | 
			
		||||
use strict;
 | 
			
		||||
 | 
			
		||||
my $cmdline = "mksyscall.pl " . join(' ', @ARGV);
 | 
			
		||||
my $errors = 0;
 | 
			
		||||
my $_32bit = "";
 | 
			
		||||
my $plan9 = 0;
 | 
			
		||||
my $openbsd = 0;
 | 
			
		||||
my $netbsd = 0;
 | 
			
		||||
my $dragonfly = 0;
 | 
			
		||||
my $arm = 0; # 64-bit value should use (even, odd)-pair
 | 
			
		||||
my $tags = "";  # build tags
 | 
			
		||||
 | 
			
		||||
if($ARGV[0] eq "-b32") {
 | 
			
		||||
	$_32bit = "big-endian";
 | 
			
		||||
	shift;
 | 
			
		||||
} elsif($ARGV[0] eq "-l32") {
 | 
			
		||||
	$_32bit = "little-endian";
 | 
			
		||||
	shift;
 | 
			
		||||
}
 | 
			
		||||
if($ARGV[0] eq "-plan9") {
 | 
			
		||||
	$plan9 = 1;
 | 
			
		||||
	shift;
 | 
			
		||||
}
 | 
			
		||||
if($ARGV[0] eq "-openbsd") {
 | 
			
		||||
	$openbsd = 1;
 | 
			
		||||
	shift;
 | 
			
		||||
}
 | 
			
		||||
if($ARGV[0] eq "-netbsd") {
 | 
			
		||||
	$netbsd = 1;
 | 
			
		||||
	shift;
 | 
			
		||||
}
 | 
			
		||||
if($ARGV[0] eq "-dragonfly") {
 | 
			
		||||
	$dragonfly = 1;
 | 
			
		||||
	shift;
 | 
			
		||||
}
 | 
			
		||||
if($ARGV[0] eq "-arm") {
 | 
			
		||||
	$arm = 1;
 | 
			
		||||
	shift;
 | 
			
		||||
}
 | 
			
		||||
if($ARGV[0] eq "-tags") {
 | 
			
		||||
	shift;
 | 
			
		||||
	$tags = $ARGV[0];
 | 
			
		||||
	shift;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if($ARGV[0] =~ /^-/) {
 | 
			
		||||
	print STDERR "usage: mksyscall.pl [-b32 | -l32] [-tags x,y] [file ...]\n";
 | 
			
		||||
	exit 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Check that we are using the new build system if we should
 | 
			
		||||
if($ENV{'GOOS'} eq "linux" && $ENV{'GOARCH'} ne "sparc64") {
 | 
			
		||||
	if($ENV{'GOLANG_SYS_BUILD'} ne "docker") {
 | 
			
		||||
		print STDERR "In the new build system, mksyscall should not be called directly.\n";
 | 
			
		||||
		print STDERR "See README.md\n";
 | 
			
		||||
		exit 1;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
sub parseparamlist($) {
 | 
			
		||||
	my ($list) = @_;
 | 
			
		||||
	$list =~ s/^\s*//;
 | 
			
		||||
	$list =~ s/\s*$//;
 | 
			
		||||
	if($list eq "") {
 | 
			
		||||
		return ();
 | 
			
		||||
	}
 | 
			
		||||
	return split(/\s*,\s*/, $list);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
sub parseparam($) {
 | 
			
		||||
	my ($p) = @_;
 | 
			
		||||
	if($p !~ /^(\S*) (\S*)$/) {
 | 
			
		||||
		print STDERR "$ARGV:$.: malformed parameter: $p\n";
 | 
			
		||||
		$errors = 1;
 | 
			
		||||
		return ("xx", "int");
 | 
			
		||||
	}
 | 
			
		||||
	return ($1, $2);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
my $text = "";
 | 
			
		||||
while(<>) {
 | 
			
		||||
	chomp;
 | 
			
		||||
	s/\s+/ /g;
 | 
			
		||||
	s/^\s+//;
 | 
			
		||||
	s/\s+$//;
 | 
			
		||||
	my $nonblock = /^\/\/sysnb /;
 | 
			
		||||
	next if !/^\/\/sys / && !$nonblock;
 | 
			
		||||
 | 
			
		||||
	# Line must be of the form
 | 
			
		||||
	#	func Open(path string, mode int, perm int) (fd int, errno error)
 | 
			
		||||
	# Split into name, in params, out params.
 | 
			
		||||
	if(!/^\/\/sys(nb)? (\w+)\(([^()]*)\)\s*(?:\(([^()]+)\))?\s*(?:=\s*((?i)SYS_[A-Z0-9_]+))?$/) {
 | 
			
		||||
		print STDERR "$ARGV:$.: malformed //sys declaration\n";
 | 
			
		||||
		$errors = 1;
 | 
			
		||||
		next;
 | 
			
		||||
	}
 | 
			
		||||
	my ($func, $in, $out, $sysname) = ($2, $3, $4, $5);
 | 
			
		||||
 | 
			
		||||
	# Split argument lists on comma.
 | 
			
		||||
	my @in = parseparamlist($in);
 | 
			
		||||
	my @out = parseparamlist($out);
 | 
			
		||||
 | 
			
		||||
	# Try in vain to keep people from editing this file.
 | 
			
		||||
	# The theory is that they jump into the middle of the file
 | 
			
		||||
	# without reading the header.
 | 
			
		||||
	$text .= "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n";
 | 
			
		||||
 | 
			
		||||
	# Go function header.
 | 
			
		||||
	my $out_decl = @out ? sprintf(" (%s)", join(', ', @out)) : "";
 | 
			
		||||
	$text .= sprintf "func %s(%s)%s {\n", $func, join(', ', @in), $out_decl;
 | 
			
		||||
 | 
			
		||||
	# Check if err return available
 | 
			
		||||
	my $errvar = "";
 | 
			
		||||
	foreach my $p (@out) {
 | 
			
		||||
		my ($name, $type) = parseparam($p);
 | 
			
		||||
		if($type eq "error") {
 | 
			
		||||
			$errvar = $name;
 | 
			
		||||
			last;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	# Prepare arguments to Syscall.
 | 
			
		||||
	my @args = ();
 | 
			
		||||
	my $n = 0;
 | 
			
		||||
	foreach my $p (@in) {
 | 
			
		||||
		my ($name, $type) = parseparam($p);
 | 
			
		||||
		if($type =~ /^\*/) {
 | 
			
		||||
			push @args, "uintptr(unsafe.Pointer($name))";
 | 
			
		||||
		} elsif($type eq "string" && $errvar ne "") {
 | 
			
		||||
			$text .= "\tvar _p$n *byte\n";
 | 
			
		||||
			$text .= "\t_p$n, $errvar = BytePtrFromString($name)\n";
 | 
			
		||||
			$text .= "\tif $errvar != nil {\n\t\treturn\n\t}\n";
 | 
			
		||||
			push @args, "uintptr(unsafe.Pointer(_p$n))";
 | 
			
		||||
			$n++;
 | 
			
		||||
		} elsif($type eq "string") {
 | 
			
		||||
			print STDERR "$ARGV:$.: $func uses string arguments, but has no error return\n";
 | 
			
		||||
			$text .= "\tvar _p$n *byte\n";
 | 
			
		||||
			$text .= "\t_p$n, _ = BytePtrFromString($name)\n";
 | 
			
		||||
			push @args, "uintptr(unsafe.Pointer(_p$n))";
 | 
			
		||||
			$n++;
 | 
			
		||||
		} elsif($type =~ /^\[\](.*)/) {
 | 
			
		||||
			# Convert slice into pointer, length.
 | 
			
		||||
			# Have to be careful not to take address of &a[0] if len == 0:
 | 
			
		||||
			# pass dummy pointer in that case.
 | 
			
		||||
			# Used to pass nil, but some OSes or simulators reject write(fd, nil, 0).
 | 
			
		||||
			$text .= "\tvar _p$n unsafe.Pointer\n";
 | 
			
		||||
			$text .= "\tif len($name) > 0 {\n\t\t_p$n = unsafe.Pointer(\&${name}[0])\n\t}";
 | 
			
		||||
			$text .= " else {\n\t\t_p$n = unsafe.Pointer(&_zero)\n\t}";
 | 
			
		||||
			$text .= "\n";
 | 
			
		||||
			push @args, "uintptr(_p$n)", "uintptr(len($name))";
 | 
			
		||||
			$n++;
 | 
			
		||||
		} elsif($type eq "int64" && ($openbsd || $netbsd)) {
 | 
			
		||||
			push @args, "0";
 | 
			
		||||
			if($_32bit eq "big-endian") {
 | 
			
		||||
				push @args, "uintptr($name>>32)", "uintptr($name)";
 | 
			
		||||
			} elsif($_32bit eq "little-endian") {
 | 
			
		||||
				push @args, "uintptr($name)", "uintptr($name>>32)";
 | 
			
		||||
			} else {
 | 
			
		||||
				push @args, "uintptr($name)";
 | 
			
		||||
			}
 | 
			
		||||
		} elsif($type eq "int64" && $dragonfly) {
 | 
			
		||||
			if ($func !~ /^extp(read|write)/i) {
 | 
			
		||||
				push @args, "0";
 | 
			
		||||
			}
 | 
			
		||||
			if($_32bit eq "big-endian") {
 | 
			
		||||
				push @args, "uintptr($name>>32)", "uintptr($name)";
 | 
			
		||||
			} elsif($_32bit eq "little-endian") {
 | 
			
		||||
				push @args, "uintptr($name)", "uintptr($name>>32)";
 | 
			
		||||
			} else {
 | 
			
		||||
				push @args, "uintptr($name)";
 | 
			
		||||
			}
 | 
			
		||||
		} elsif($type eq "int64" && $_32bit ne "") {
 | 
			
		||||
			if(@args % 2 && $arm) {
 | 
			
		||||
				# arm abi specifies 64-bit argument uses
 | 
			
		||||
				# (even, odd) pair
 | 
			
		||||
				push @args, "0"
 | 
			
		||||
			}
 | 
			
		||||
			if($_32bit eq "big-endian") {
 | 
			
		||||
				push @args, "uintptr($name>>32)", "uintptr($name)";
 | 
			
		||||
			} else {
 | 
			
		||||
				push @args, "uintptr($name)", "uintptr($name>>32)";
 | 
			
		||||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
			push @args, "uintptr($name)";
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	# Determine which form to use; pad args with zeros.
 | 
			
		||||
	my $asm = "Syscall";
 | 
			
		||||
	if ($nonblock) {
 | 
			
		||||
		$asm = "RawSyscall";
 | 
			
		||||
	}
 | 
			
		||||
	if(@args <= 3) {
 | 
			
		||||
		while(@args < 3) {
 | 
			
		||||
			push @args, "0";
 | 
			
		||||
		}
 | 
			
		||||
	} elsif(@args <= 6) {
 | 
			
		||||
		$asm .= "6";
 | 
			
		||||
		while(@args < 6) {
 | 
			
		||||
			push @args, "0";
 | 
			
		||||
		}
 | 
			
		||||
	} elsif(@args <= 9) {
 | 
			
		||||
		$asm .= "9";
 | 
			
		||||
		while(@args < 9) {
 | 
			
		||||
			push @args, "0";
 | 
			
		||||
		}
 | 
			
		||||
	} else {
 | 
			
		||||
		print STDERR "$ARGV:$.: too many arguments to system call\n";
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	# System call number.
 | 
			
		||||
	if($sysname eq "") {
 | 
			
		||||
		$sysname = "SYS_$func";
 | 
			
		||||
		$sysname =~ s/([a-z])([A-Z])/${1}_$2/g;	# turn FooBar into Foo_Bar
 | 
			
		||||
		$sysname =~ y/a-z/A-Z/;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	# Actual call.
 | 
			
		||||
	my $args = join(', ', @args);
 | 
			
		||||
	my $call = "$asm($sysname, $args)";
 | 
			
		||||
 | 
			
		||||
	# Assign return values.
 | 
			
		||||
	my $body = "";
 | 
			
		||||
	my @ret = ("_", "_", "_");
 | 
			
		||||
	my $do_errno = 0;
 | 
			
		||||
	for(my $i=0; $i<@out; $i++) {
 | 
			
		||||
		my $p = $out[$i];
 | 
			
		||||
		my ($name, $type) = parseparam($p);
 | 
			
		||||
		my $reg = "";
 | 
			
		||||
		if($name eq "err" && !$plan9) {
 | 
			
		||||
			$reg = "e1";
 | 
			
		||||
			$ret[2] = $reg;
 | 
			
		||||
			$do_errno = 1;
 | 
			
		||||
		} elsif($name eq "err" && $plan9) {
 | 
			
		||||
			$ret[0] = "r0";
 | 
			
		||||
			$ret[2] = "e1";
 | 
			
		||||
			next;
 | 
			
		||||
		} else {
 | 
			
		||||
			$reg = sprintf("r%d", $i);
 | 
			
		||||
			$ret[$i] = $reg;
 | 
			
		||||
		}
 | 
			
		||||
		if($type eq "bool") {
 | 
			
		||||
			$reg = "$reg != 0";
 | 
			
		||||
		}
 | 
			
		||||
		if($type eq "int64" && $_32bit ne "") {
 | 
			
		||||
			# 64-bit number in r1:r0 or r0:r1.
 | 
			
		||||
			if($i+2 > @out) {
 | 
			
		||||
				print STDERR "$ARGV:$.: not enough registers for int64 return\n";
 | 
			
		||||
			}
 | 
			
		||||
			if($_32bit eq "big-endian") {
 | 
			
		||||
				$reg = sprintf("int64(r%d)<<32 | int64(r%d)", $i, $i+1);
 | 
			
		||||
			} else {
 | 
			
		||||
				$reg = sprintf("int64(r%d)<<32 | int64(r%d)", $i+1, $i);
 | 
			
		||||
			}
 | 
			
		||||
			$ret[$i] = sprintf("r%d", $i);
 | 
			
		||||
			$ret[$i+1] = sprintf("r%d", $i+1);
 | 
			
		||||
		}
 | 
			
		||||
		if($reg ne "e1" || $plan9) {
 | 
			
		||||
			$body .= "\t$name = $type($reg)\n";
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	if ($ret[0] eq "_" && $ret[1] eq "_" && $ret[2] eq "_") {
 | 
			
		||||
		$text .= "\t$call\n";
 | 
			
		||||
	} else {
 | 
			
		||||
		$text .= "\t$ret[0], $ret[1], $ret[2] := $call\n";
 | 
			
		||||
	}
 | 
			
		||||
	$text .= $body;
 | 
			
		||||
 | 
			
		||||
	if ($plan9 && $ret[2] eq "e1") {
 | 
			
		||||
		$text .= "\tif int32(r0) == -1 {\n";
 | 
			
		||||
		$text .= "\t\terr = e1\n";
 | 
			
		||||
		$text .= "\t}\n";
 | 
			
		||||
	} elsif ($do_errno) {
 | 
			
		||||
		$text .= "\tif e1 != 0 {\n";
 | 
			
		||||
		$text .= "\t\terr = errnoErr(e1)\n";
 | 
			
		||||
		$text .= "\t}\n";
 | 
			
		||||
	}
 | 
			
		||||
	$text .= "\treturn\n";
 | 
			
		||||
	$text .= "}\n\n";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
chomp $text;
 | 
			
		||||
chomp $text;
 | 
			
		||||
 | 
			
		||||
if($errors) {
 | 
			
		||||
	exit 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
print <<EOF;
 | 
			
		||||
// $cmdline
 | 
			
		||||
// Code generated by the command above; see README.md. DO NOT EDIT.
 | 
			
		||||
 | 
			
		||||
// +build $tags
 | 
			
		||||
 | 
			
		||||
package unix
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"syscall"
 | 
			
		||||
	"unsafe"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var _ syscall.Errno
 | 
			
		||||
 | 
			
		||||
$text
 | 
			
		||||
EOF
 | 
			
		||||
exit 0;
 | 
			
		||||
							
								
								
									
										404
									
								
								vendor/golang.org/x/sys/unix/mksyscall_aix_ppc.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										404
									
								
								vendor/golang.org/x/sys/unix/mksyscall_aix_ppc.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,404 @@
 | 
			
		||||
// 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 ignore
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
This program reads a file containing function prototypes
 | 
			
		||||
(like syscall_aix.go) and generates system call bodies.
 | 
			
		||||
The prototypes are marked by lines beginning with "//sys"
 | 
			
		||||
and read like func declarations if //sys is replaced by func, but:
 | 
			
		||||
	* The parameter lists must give a name for each argument.
 | 
			
		||||
	  This includes return parameters.
 | 
			
		||||
	* The parameter lists must give a type for each argument:
 | 
			
		||||
	  the (x, y, z int) shorthand is not allowed.
 | 
			
		||||
	* If the return parameter is an error number, it must be named err.
 | 
			
		||||
	* If go func name needs to be different than its libc name,
 | 
			
		||||
	* or the function is not in libc, name could be specified
 | 
			
		||||
	* at the end, after "=" sign, like
 | 
			
		||||
	  //sys getsockopt(s int, level int, name int, val uintptr, vallen *_Socklen) (err error) = libsocket.getsockopt
 | 
			
		||||
*/
 | 
			
		||||
package main
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bufio"
 | 
			
		||||
	"flag"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"os"
 | 
			
		||||
	"regexp"
 | 
			
		||||
	"strings"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	b32  = flag.Bool("b32", false, "32bit big-endian")
 | 
			
		||||
	l32  = flag.Bool("l32", false, "32bit little-endian")
 | 
			
		||||
	aix  = flag.Bool("aix", false, "aix")
 | 
			
		||||
	tags = flag.String("tags", "", "build tags")
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// cmdLine returns this programs's commandline arguments
 | 
			
		||||
func cmdLine() string {
 | 
			
		||||
	return "go run mksyscall_aix_ppc.go " + strings.Join(os.Args[1:], " ")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// buildTags returns build tags
 | 
			
		||||
func buildTags() string {
 | 
			
		||||
	return *tags
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Param is function parameter
 | 
			
		||||
type Param struct {
 | 
			
		||||
	Name string
 | 
			
		||||
	Type string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// usage prints the program usage
 | 
			
		||||
func usage() {
 | 
			
		||||
	fmt.Fprintf(os.Stderr, "usage: go run mksyscall_aix_ppc.go [-b32 | -l32] [-tags x,y] [file ...]\n")
 | 
			
		||||
	os.Exit(1)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// parseParamList parses parameter list and returns a slice of parameters
 | 
			
		||||
func parseParamList(list string) []string {
 | 
			
		||||
	list = strings.TrimSpace(list)
 | 
			
		||||
	if list == "" {
 | 
			
		||||
		return []string{}
 | 
			
		||||
	}
 | 
			
		||||
	return regexp.MustCompile(`\s*,\s*`).Split(list, -1)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// parseParam splits a parameter into name and type
 | 
			
		||||
func parseParam(p string) Param {
 | 
			
		||||
	ps := regexp.MustCompile(`^(\S*) (\S*)$`).FindStringSubmatch(p)
 | 
			
		||||
	if ps == nil {
 | 
			
		||||
		fmt.Fprintf(os.Stderr, "malformed parameter: %s\n", p)
 | 
			
		||||
		os.Exit(1)
 | 
			
		||||
	}
 | 
			
		||||
	return Param{ps[1], ps[2]}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
	flag.Usage = usage
 | 
			
		||||
	flag.Parse()
 | 
			
		||||
	if len(flag.Args()) <= 0 {
 | 
			
		||||
		fmt.Fprintf(os.Stderr, "no files to parse provided\n")
 | 
			
		||||
		usage()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	endianness := ""
 | 
			
		||||
	if *b32 {
 | 
			
		||||
		endianness = "big-endian"
 | 
			
		||||
	} else if *l32 {
 | 
			
		||||
		endianness = "little-endian"
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	pack := ""
 | 
			
		||||
	text := ""
 | 
			
		||||
	cExtern := "/*\n#include <stdint.h>\n#include <stddef.h>\n"
 | 
			
		||||
	for _, path := range flag.Args() {
 | 
			
		||||
		file, err := os.Open(path)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			fmt.Fprintf(os.Stderr, err.Error())
 | 
			
		||||
			os.Exit(1)
 | 
			
		||||
		}
 | 
			
		||||
		s := bufio.NewScanner(file)
 | 
			
		||||
		for s.Scan() {
 | 
			
		||||
			t := s.Text()
 | 
			
		||||
			t = strings.TrimSpace(t)
 | 
			
		||||
			t = regexp.MustCompile(`\s+`).ReplaceAllString(t, ` `)
 | 
			
		||||
			if p := regexp.MustCompile(`^package (\S+)$`).FindStringSubmatch(t); p != nil && pack == "" {
 | 
			
		||||
				pack = p[1]
 | 
			
		||||
			}
 | 
			
		||||
			nonblock := regexp.MustCompile(`^\/\/sysnb `).FindStringSubmatch(t)
 | 
			
		||||
			if regexp.MustCompile(`^\/\/sys `).FindStringSubmatch(t) == nil && nonblock == nil {
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// Line must be of the form
 | 
			
		||||
			//	func Open(path string, mode int, perm int) (fd int, err error)
 | 
			
		||||
			// Split into name, in params, out params.
 | 
			
		||||
			f := regexp.MustCompile(`^\/\/sys(nb)? (\w+)\(([^()]*)\)\s*(?:\(([^()]+)\))?\s*(?:=\s*(?:(\w*)\.)?(\w*))?$`).FindStringSubmatch(t)
 | 
			
		||||
			if f == nil {
 | 
			
		||||
				fmt.Fprintf(os.Stderr, "%s:%s\nmalformed //sys declaration\n", path, t)
 | 
			
		||||
				os.Exit(1)
 | 
			
		||||
			}
 | 
			
		||||
			funct, inps, outps, modname, sysname := f[2], f[3], f[4], f[5], f[6]
 | 
			
		||||
 | 
			
		||||
			// Split argument lists on comma.
 | 
			
		||||
			in := parseParamList(inps)
 | 
			
		||||
			out := parseParamList(outps)
 | 
			
		||||
 | 
			
		||||
			inps = strings.Join(in, ", ")
 | 
			
		||||
			outps = strings.Join(out, ", ")
 | 
			
		||||
 | 
			
		||||
			// Try in vain to keep people from editing this file.
 | 
			
		||||
			// The theory is that they jump into the middle of the file
 | 
			
		||||
			// without reading the header.
 | 
			
		||||
			text += "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n"
 | 
			
		||||
 | 
			
		||||
			// Check if value return, err return available
 | 
			
		||||
			errvar := ""
 | 
			
		||||
			retvar := ""
 | 
			
		||||
			rettype := ""
 | 
			
		||||
			for _, param := range out {
 | 
			
		||||
				p := parseParam(param)
 | 
			
		||||
				if p.Type == "error" {
 | 
			
		||||
					errvar = p.Name
 | 
			
		||||
				} else {
 | 
			
		||||
					retvar = p.Name
 | 
			
		||||
					rettype = p.Type
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// System call name.
 | 
			
		||||
			if sysname == "" {
 | 
			
		||||
				sysname = funct
 | 
			
		||||
			}
 | 
			
		||||
			sysname = regexp.MustCompile(`([a-z])([A-Z])`).ReplaceAllString(sysname, `${1}_$2`)
 | 
			
		||||
			sysname = strings.ToLower(sysname) // All libc functions are lowercase.
 | 
			
		||||
 | 
			
		||||
			cRettype := ""
 | 
			
		||||
			if rettype == "unsafe.Pointer" {
 | 
			
		||||
				cRettype = "uintptr_t"
 | 
			
		||||
			} else if rettype == "uintptr" {
 | 
			
		||||
				cRettype = "uintptr_t"
 | 
			
		||||
			} else if regexp.MustCompile(`^_`).FindStringSubmatch(rettype) != nil {
 | 
			
		||||
				cRettype = "uintptr_t"
 | 
			
		||||
			} else if rettype == "int" {
 | 
			
		||||
				cRettype = "int"
 | 
			
		||||
			} else if rettype == "int32" {
 | 
			
		||||
				cRettype = "int"
 | 
			
		||||
			} else if rettype == "int64" {
 | 
			
		||||
				cRettype = "long long"
 | 
			
		||||
			} else if rettype == "uint32" {
 | 
			
		||||
				cRettype = "unsigned int"
 | 
			
		||||
			} else if rettype == "uint64" {
 | 
			
		||||
				cRettype = "unsigned long long"
 | 
			
		||||
			} else {
 | 
			
		||||
				cRettype = "int"
 | 
			
		||||
			}
 | 
			
		||||
			if sysname == "exit" {
 | 
			
		||||
				cRettype = "void"
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// Change p.Types to c
 | 
			
		||||
			var cIn []string
 | 
			
		||||
			for _, param := range in {
 | 
			
		||||
				p := parseParam(param)
 | 
			
		||||
				if regexp.MustCompile(`^\*`).FindStringSubmatch(p.Type) != nil {
 | 
			
		||||
					cIn = append(cIn, "uintptr_t")
 | 
			
		||||
				} else if p.Type == "string" {
 | 
			
		||||
					cIn = append(cIn, "uintptr_t")
 | 
			
		||||
				} else if regexp.MustCompile(`^\[\](.*)`).FindStringSubmatch(p.Type) != nil {
 | 
			
		||||
					cIn = append(cIn, "uintptr_t", "size_t")
 | 
			
		||||
				} else if p.Type == "unsafe.Pointer" {
 | 
			
		||||
					cIn = append(cIn, "uintptr_t")
 | 
			
		||||
				} else if p.Type == "uintptr" {
 | 
			
		||||
					cIn = append(cIn, "uintptr_t")
 | 
			
		||||
				} else if regexp.MustCompile(`^_`).FindStringSubmatch(p.Type) != nil {
 | 
			
		||||
					cIn = append(cIn, "uintptr_t")
 | 
			
		||||
				} else if p.Type == "int" {
 | 
			
		||||
					cIn = append(cIn, "int")
 | 
			
		||||
				} else if p.Type == "int32" {
 | 
			
		||||
					cIn = append(cIn, "int")
 | 
			
		||||
				} else if p.Type == "int64" {
 | 
			
		||||
					cIn = append(cIn, "long long")
 | 
			
		||||
				} else if p.Type == "uint32" {
 | 
			
		||||
					cIn = append(cIn, "unsigned int")
 | 
			
		||||
				} else if p.Type == "uint64" {
 | 
			
		||||
					cIn = append(cIn, "unsigned long long")
 | 
			
		||||
				} else {
 | 
			
		||||
					cIn = append(cIn, "int")
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if funct != "fcntl" && funct != "FcntlInt" && funct != "readlen" && funct != "writelen" {
 | 
			
		||||
				// Imports of system calls from libc
 | 
			
		||||
				cExtern += fmt.Sprintf("%s %s", cRettype, sysname)
 | 
			
		||||
				cIn := strings.Join(cIn, ", ")
 | 
			
		||||
				cExtern += fmt.Sprintf("(%s);\n", cIn)
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// So file name.
 | 
			
		||||
			if *aix {
 | 
			
		||||
				if modname == "" {
 | 
			
		||||
					modname = "libc.a/shr_64.o"
 | 
			
		||||
				} else {
 | 
			
		||||
					fmt.Fprintf(os.Stderr, "%s: only syscall using libc are available\n", funct)
 | 
			
		||||
					os.Exit(1)
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			strconvfunc := "C.CString"
 | 
			
		||||
 | 
			
		||||
			// Go function header.
 | 
			
		||||
			if outps != "" {
 | 
			
		||||
				outps = fmt.Sprintf(" (%s)", outps)
 | 
			
		||||
			}
 | 
			
		||||
			if text != "" {
 | 
			
		||||
				text += "\n"
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			text += fmt.Sprintf("func %s(%s)%s {\n", funct, strings.Join(in, ", "), outps)
 | 
			
		||||
 | 
			
		||||
			// Prepare arguments to Syscall.
 | 
			
		||||
			var args []string
 | 
			
		||||
			n := 0
 | 
			
		||||
			argN := 0
 | 
			
		||||
			for _, param := range in {
 | 
			
		||||
				p := parseParam(param)
 | 
			
		||||
				if regexp.MustCompile(`^\*`).FindStringSubmatch(p.Type) != nil {
 | 
			
		||||
					args = append(args, "C.uintptr_t(uintptr(unsafe.Pointer("+p.Name+")))")
 | 
			
		||||
				} else if p.Type == "string" && errvar != "" {
 | 
			
		||||
					text += fmt.Sprintf("\t_p%d := uintptr(unsafe.Pointer(%s(%s)))\n", n, strconvfunc, p.Name)
 | 
			
		||||
					args = append(args, fmt.Sprintf("C.uintptr_t(_p%d)", n))
 | 
			
		||||
					n++
 | 
			
		||||
				} else if p.Type == "string" {
 | 
			
		||||
					fmt.Fprintf(os.Stderr, path+":"+funct+" uses string arguments, but has no error return\n")
 | 
			
		||||
					text += fmt.Sprintf("\t_p%d := uintptr(unsafe.Pointer(%s(%s)))\n", n, strconvfunc, p.Name)
 | 
			
		||||
					args = append(args, fmt.Sprintf("C.uintptr_t(_p%d)", n))
 | 
			
		||||
					n++
 | 
			
		||||
				} else if m := regexp.MustCompile(`^\[\](.*)`).FindStringSubmatch(p.Type); m != nil {
 | 
			
		||||
					// Convert slice into pointer, length.
 | 
			
		||||
					// Have to be careful not to take address of &a[0] if len == 0:
 | 
			
		||||
					// pass nil in that case.
 | 
			
		||||
					text += fmt.Sprintf("\tvar _p%d *%s\n", n, m[1])
 | 
			
		||||
					text += fmt.Sprintf("\tif len(%s) > 0 {\n\t\t_p%d = &%s[0]\n\t}\n", p.Name, n, p.Name)
 | 
			
		||||
					args = append(args, fmt.Sprintf("C.uintptr_t(uintptr(unsafe.Pointer(_p%d)))", n))
 | 
			
		||||
					n++
 | 
			
		||||
					text += fmt.Sprintf("\tvar _p%d int\n", n)
 | 
			
		||||
					text += fmt.Sprintf("\t_p%d = len(%s)\n", n, p.Name)
 | 
			
		||||
					args = append(args, fmt.Sprintf("C.size_t(_p%d)", n))
 | 
			
		||||
					n++
 | 
			
		||||
				} else if p.Type == "int64" && endianness != "" {
 | 
			
		||||
					if endianness == "big-endian" {
 | 
			
		||||
						args = append(args, fmt.Sprintf("uintptr(%s>>32)", p.Name), fmt.Sprintf("uintptr(%s)", p.Name))
 | 
			
		||||
					} else {
 | 
			
		||||
						args = append(args, fmt.Sprintf("uintptr(%s)", p.Name), fmt.Sprintf("uintptr(%s>>32)", p.Name))
 | 
			
		||||
					}
 | 
			
		||||
					n++
 | 
			
		||||
				} else if p.Type == "bool" {
 | 
			
		||||
					text += fmt.Sprintf("\tvar _p%d uint32\n", n)
 | 
			
		||||
					text += fmt.Sprintf("\tif %s {\n\t\t_p%d = 1\n\t} else {\n\t\t_p%d = 0\n\t}\n", p.Name, n, n)
 | 
			
		||||
					args = append(args, fmt.Sprintf("_p%d", n))
 | 
			
		||||
				} else if regexp.MustCompile(`^_`).FindStringSubmatch(p.Type) != nil {
 | 
			
		||||
					args = append(args, fmt.Sprintf("C.uintptr_t(uintptr(%s))", p.Name))
 | 
			
		||||
				} else if p.Type == "unsafe.Pointer" {
 | 
			
		||||
					args = append(args, fmt.Sprintf("C.uintptr_t(uintptr(%s))", p.Name))
 | 
			
		||||
				} else if p.Type == "int" {
 | 
			
		||||
					if (argN == 2) && ((funct == "readlen") || (funct == "writelen")) {
 | 
			
		||||
						args = append(args, fmt.Sprintf("C.size_t(%s)", p.Name))
 | 
			
		||||
					} else if argN == 0 && funct == "fcntl" {
 | 
			
		||||
						args = append(args, fmt.Sprintf("C.uintptr_t(%s)", p.Name))
 | 
			
		||||
					} else if (argN == 2) && ((funct == "fcntl") || (funct == "FcntlInt")) {
 | 
			
		||||
						args = append(args, fmt.Sprintf("C.uintptr_t(%s)", p.Name))
 | 
			
		||||
					} else {
 | 
			
		||||
						args = append(args, fmt.Sprintf("C.int(%s)", p.Name))
 | 
			
		||||
					}
 | 
			
		||||
				} else if p.Type == "int32" {
 | 
			
		||||
					args = append(args, fmt.Sprintf("C.int(%s)", p.Name))
 | 
			
		||||
				} else if p.Type == "int64" {
 | 
			
		||||
					args = append(args, fmt.Sprintf("C.longlong(%s)", p.Name))
 | 
			
		||||
				} else if p.Type == "uint32" {
 | 
			
		||||
					args = append(args, fmt.Sprintf("C.uint(%s)", p.Name))
 | 
			
		||||
				} else if p.Type == "uint64" {
 | 
			
		||||
					args = append(args, fmt.Sprintf("C.ulonglong(%s)", p.Name))
 | 
			
		||||
				} else if p.Type == "uintptr" {
 | 
			
		||||
					args = append(args, fmt.Sprintf("C.uintptr_t(%s)", p.Name))
 | 
			
		||||
				} else {
 | 
			
		||||
					args = append(args, fmt.Sprintf("C.int(%s)", p.Name))
 | 
			
		||||
				}
 | 
			
		||||
				argN++
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// Actual call.
 | 
			
		||||
			arglist := strings.Join(args, ", ")
 | 
			
		||||
			call := ""
 | 
			
		||||
			if sysname == "exit" {
 | 
			
		||||
				if errvar != "" {
 | 
			
		||||
					call += "er :="
 | 
			
		||||
				} else {
 | 
			
		||||
					call += ""
 | 
			
		||||
				}
 | 
			
		||||
			} else if errvar != "" {
 | 
			
		||||
				call += "r0,er :="
 | 
			
		||||
			} else if retvar != "" {
 | 
			
		||||
				call += "r0,_ :="
 | 
			
		||||
			} else {
 | 
			
		||||
				call += ""
 | 
			
		||||
			}
 | 
			
		||||
			call += fmt.Sprintf("C.%s(%s)", sysname, arglist)
 | 
			
		||||
 | 
			
		||||
			// Assign return values.
 | 
			
		||||
			body := ""
 | 
			
		||||
			for i := 0; i < len(out); i++ {
 | 
			
		||||
				p := parseParam(out[i])
 | 
			
		||||
				reg := ""
 | 
			
		||||
				if p.Name == "err" {
 | 
			
		||||
					reg = "e1"
 | 
			
		||||
				} else {
 | 
			
		||||
					reg = "r0"
 | 
			
		||||
				}
 | 
			
		||||
				if reg != "e1" {
 | 
			
		||||
					body += fmt.Sprintf("\t%s = %s(%s)\n", p.Name, p.Type, reg)
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// verify return
 | 
			
		||||
			if sysname != "exit" && errvar != "" {
 | 
			
		||||
				if regexp.MustCompile(`^uintptr`).FindStringSubmatch(cRettype) != nil {
 | 
			
		||||
					body += "\tif (uintptr(r0) ==^uintptr(0) && er != nil) {\n"
 | 
			
		||||
					body += fmt.Sprintf("\t\t%s = er\n", errvar)
 | 
			
		||||
					body += "\t}\n"
 | 
			
		||||
				} else {
 | 
			
		||||
					body += "\tif (r0 ==-1 && er != nil) {\n"
 | 
			
		||||
					body += fmt.Sprintf("\t\t%s = er\n", errvar)
 | 
			
		||||
					body += "\t}\n"
 | 
			
		||||
				}
 | 
			
		||||
			} else if errvar != "" {
 | 
			
		||||
				body += "\tif (er != nil) {\n"
 | 
			
		||||
				body += fmt.Sprintf("\t\t%s = er\n", errvar)
 | 
			
		||||
				body += "\t}\n"
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			text += fmt.Sprintf("\t%s\n", call)
 | 
			
		||||
			text += body
 | 
			
		||||
 | 
			
		||||
			text += "\treturn\n"
 | 
			
		||||
			text += "}\n"
 | 
			
		||||
		}
 | 
			
		||||
		if err := s.Err(); err != nil {
 | 
			
		||||
			fmt.Fprintf(os.Stderr, err.Error())
 | 
			
		||||
			os.Exit(1)
 | 
			
		||||
		}
 | 
			
		||||
		file.Close()
 | 
			
		||||
	}
 | 
			
		||||
	imp := ""
 | 
			
		||||
	if pack != "unix" {
 | 
			
		||||
		imp = "import \"golang.org/x/sys/unix\"\n"
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
	fmt.Printf(srcTemplate, cmdLine(), buildTags(), pack, cExtern, imp, text)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const srcTemplate = `// %s
 | 
			
		||||
// Code generated by the command above; see README.md. DO NOT EDIT.
 | 
			
		||||
 | 
			
		||||
// +build %s
 | 
			
		||||
 | 
			
		||||
package %s
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%s
 | 
			
		||||
*/
 | 
			
		||||
import "C"
 | 
			
		||||
import (
 | 
			
		||||
	"unsafe"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%s
 | 
			
		||||
 | 
			
		||||
%s
 | 
			
		||||
`
 | 
			
		||||
							
								
								
									
										602
									
								
								vendor/golang.org/x/sys/unix/mksyscall_aix_ppc64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										602
									
								
								vendor/golang.org/x/sys/unix/mksyscall_aix_ppc64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,602 @@
 | 
			
		||||
// 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 ignore
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
This program reads a file containing function prototypes
 | 
			
		||||
(like syscall_aix.go) and generates system call bodies.
 | 
			
		||||
The prototypes are marked by lines beginning with "//sys"
 | 
			
		||||
and read like func declarations if //sys is replaced by func, but:
 | 
			
		||||
	* The parameter lists must give a name for each argument.
 | 
			
		||||
	  This includes return parameters.
 | 
			
		||||
	* The parameter lists must give a type for each argument:
 | 
			
		||||
	  the (x, y, z int) shorthand is not allowed.
 | 
			
		||||
	* If the return parameter is an error number, it must be named err.
 | 
			
		||||
	* If go func name needs to be different than its libc name,
 | 
			
		||||
	* or the function is not in libc, name could be specified
 | 
			
		||||
	* at the end, after "=" sign, like
 | 
			
		||||
	  //sys getsockopt(s int, level int, name int, val uintptr, vallen *_Socklen) (err error) = libsocket.getsockopt
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
This program will generate three files and handle both gc and gccgo implementation:
 | 
			
		||||
  - zsyscall_aix_ppc64.go: the common part of each implementation (error handler, pointer creation)
 | 
			
		||||
  - zsyscall_aix_ppc64_gc.go: gc part with //go_cgo_import_dynamic and a call to syscall6
 | 
			
		||||
  - zsyscall_aix_ppc64_gccgo.go: gccgo part with C function and conversion to C type.
 | 
			
		||||
 | 
			
		||||
 The generated code looks like this
 | 
			
		||||
 | 
			
		||||
zsyscall_aix_ppc64.go
 | 
			
		||||
func asyscall(...) (n int, err error) {
 | 
			
		||||
	 // Pointer Creation
 | 
			
		||||
	 r1, e1 := callasyscall(...)
 | 
			
		||||
	 // Type Conversion
 | 
			
		||||
	 // Error Handler
 | 
			
		||||
	 return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
zsyscall_aix_ppc64_gc.go
 | 
			
		||||
//go:cgo_import_dynamic libc_asyscall asyscall "libc.a/shr_64.o"
 | 
			
		||||
//go:linkname libc_asyscall libc_asyscall
 | 
			
		||||
var asyscall syscallFunc
 | 
			
		||||
 | 
			
		||||
func callasyscall(...) (r1 uintptr, e1 Errno) {
 | 
			
		||||
	 r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_asyscall)), "nb_args", ... )
 | 
			
		||||
	 return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
zsyscall_aix_ppc64_ggcgo.go
 | 
			
		||||
 | 
			
		||||
// int asyscall(...)
 | 
			
		||||
 | 
			
		||||
import "C"
 | 
			
		||||
 | 
			
		||||
func callasyscall(...) (r1 uintptr, e1 Errno) {
 | 
			
		||||
	 r1 = uintptr(C.asyscall(...))
 | 
			
		||||
	 e1 = syscall.GetErrno()
 | 
			
		||||
	 return
 | 
			
		||||
}
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
package main
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bufio"
 | 
			
		||||
	"flag"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io/ioutil"
 | 
			
		||||
	"os"
 | 
			
		||||
	"regexp"
 | 
			
		||||
	"strings"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	b32  = flag.Bool("b32", false, "32bit big-endian")
 | 
			
		||||
	l32  = flag.Bool("l32", false, "32bit little-endian")
 | 
			
		||||
	aix  = flag.Bool("aix", false, "aix")
 | 
			
		||||
	tags = flag.String("tags", "", "build tags")
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// cmdLine returns this programs's commandline arguments
 | 
			
		||||
func cmdLine() string {
 | 
			
		||||
	return "go run mksyscall_aix_ppc64.go " + strings.Join(os.Args[1:], " ")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// buildTags returns build tags
 | 
			
		||||
func buildTags() string {
 | 
			
		||||
	return *tags
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Param is function parameter
 | 
			
		||||
type Param struct {
 | 
			
		||||
	Name string
 | 
			
		||||
	Type string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// usage prints the program usage
 | 
			
		||||
func usage() {
 | 
			
		||||
	fmt.Fprintf(os.Stderr, "usage: go run mksyscall_aix_ppc64.go [-b32 | -l32] [-tags x,y] [file ...]\n")
 | 
			
		||||
	os.Exit(1)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// parseParamList parses parameter list and returns a slice of parameters
 | 
			
		||||
func parseParamList(list string) []string {
 | 
			
		||||
	list = strings.TrimSpace(list)
 | 
			
		||||
	if list == "" {
 | 
			
		||||
		return []string{}
 | 
			
		||||
	}
 | 
			
		||||
	return regexp.MustCompile(`\s*,\s*`).Split(list, -1)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// parseParam splits a parameter into name and type
 | 
			
		||||
func parseParam(p string) Param {
 | 
			
		||||
	ps := regexp.MustCompile(`^(\S*) (\S*)$`).FindStringSubmatch(p)
 | 
			
		||||
	if ps == nil {
 | 
			
		||||
		fmt.Fprintf(os.Stderr, "malformed parameter: %s\n", p)
 | 
			
		||||
		os.Exit(1)
 | 
			
		||||
	}
 | 
			
		||||
	return Param{ps[1], ps[2]}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
	flag.Usage = usage
 | 
			
		||||
	flag.Parse()
 | 
			
		||||
	if len(flag.Args()) <= 0 {
 | 
			
		||||
		fmt.Fprintf(os.Stderr, "no files to parse provided\n")
 | 
			
		||||
		usage()
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	endianness := ""
 | 
			
		||||
	if *b32 {
 | 
			
		||||
		endianness = "big-endian"
 | 
			
		||||
	} else if *l32 {
 | 
			
		||||
		endianness = "little-endian"
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	pack := ""
 | 
			
		||||
	// GCCGO
 | 
			
		||||
	textgccgo := ""
 | 
			
		||||
	cExtern := "/*\n#include <stdint.h>\n"
 | 
			
		||||
	// GC
 | 
			
		||||
	textgc := ""
 | 
			
		||||
	dynimports := ""
 | 
			
		||||
	linknames := ""
 | 
			
		||||
	var vars []string
 | 
			
		||||
	// COMMON
 | 
			
		||||
	textcommon := ""
 | 
			
		||||
	for _, path := range flag.Args() {
 | 
			
		||||
		file, err := os.Open(path)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			fmt.Fprintf(os.Stderr, err.Error())
 | 
			
		||||
			os.Exit(1)
 | 
			
		||||
		}
 | 
			
		||||
		s := bufio.NewScanner(file)
 | 
			
		||||
		for s.Scan() {
 | 
			
		||||
			t := s.Text()
 | 
			
		||||
			t = strings.TrimSpace(t)
 | 
			
		||||
			t = regexp.MustCompile(`\s+`).ReplaceAllString(t, ` `)
 | 
			
		||||
			if p := regexp.MustCompile(`^package (\S+)$`).FindStringSubmatch(t); p != nil && pack == "" {
 | 
			
		||||
				pack = p[1]
 | 
			
		||||
			}
 | 
			
		||||
			nonblock := regexp.MustCompile(`^\/\/sysnb `).FindStringSubmatch(t)
 | 
			
		||||
			if regexp.MustCompile(`^\/\/sys `).FindStringSubmatch(t) == nil && nonblock == nil {
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// Line must be of the form
 | 
			
		||||
			//	func Open(path string, mode int, perm int) (fd int, err error)
 | 
			
		||||
			// Split into name, in params, out params.
 | 
			
		||||
			f := regexp.MustCompile(`^\/\/sys(nb)? (\w+)\(([^()]*)\)\s*(?:\(([^()]+)\))?\s*(?:=\s*(?:(\w*)\.)?(\w*))?$`).FindStringSubmatch(t)
 | 
			
		||||
			if f == nil {
 | 
			
		||||
				fmt.Fprintf(os.Stderr, "%s:%s\nmalformed //sys declaration\n", path, t)
 | 
			
		||||
				os.Exit(1)
 | 
			
		||||
			}
 | 
			
		||||
			funct, inps, outps, modname, sysname := f[2], f[3], f[4], f[5], f[6]
 | 
			
		||||
 | 
			
		||||
			// Split argument lists on comma.
 | 
			
		||||
			in := parseParamList(inps)
 | 
			
		||||
			out := parseParamList(outps)
 | 
			
		||||
 | 
			
		||||
			inps = strings.Join(in, ", ")
 | 
			
		||||
			outps = strings.Join(out, ", ")
 | 
			
		||||
 | 
			
		||||
			if sysname == "" {
 | 
			
		||||
				sysname = funct
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			onlyCommon := false
 | 
			
		||||
			if funct == "readlen" || funct == "writelen" || funct == "FcntlInt" || funct == "FcntlFlock" {
 | 
			
		||||
				// This function call another syscall which is already implemented.
 | 
			
		||||
				// Therefore, the gc and gccgo part must not be generated.
 | 
			
		||||
				onlyCommon = true
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// Try in vain to keep people from editing this file.
 | 
			
		||||
			// The theory is that they jump into the middle of the file
 | 
			
		||||
			// without reading the header.
 | 
			
		||||
 | 
			
		||||
			textcommon += "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n"
 | 
			
		||||
			if !onlyCommon {
 | 
			
		||||
				textgccgo += "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n"
 | 
			
		||||
				textgc += "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n"
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// Check if value return, err return available
 | 
			
		||||
			errvar := ""
 | 
			
		||||
			rettype := ""
 | 
			
		||||
			for _, param := range out {
 | 
			
		||||
				p := parseParam(param)
 | 
			
		||||
				if p.Type == "error" {
 | 
			
		||||
					errvar = p.Name
 | 
			
		||||
				} else {
 | 
			
		||||
					rettype = p.Type
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			sysname = regexp.MustCompile(`([a-z])([A-Z])`).ReplaceAllString(sysname, `${1}_$2`)
 | 
			
		||||
			sysname = strings.ToLower(sysname) // All libc functions are lowercase.
 | 
			
		||||
 | 
			
		||||
			// GCCGO Prototype return type
 | 
			
		||||
			cRettype := ""
 | 
			
		||||
			if rettype == "unsafe.Pointer" {
 | 
			
		||||
				cRettype = "uintptr_t"
 | 
			
		||||
			} else if rettype == "uintptr" {
 | 
			
		||||
				cRettype = "uintptr_t"
 | 
			
		||||
			} else if regexp.MustCompile(`^_`).FindStringSubmatch(rettype) != nil {
 | 
			
		||||
				cRettype = "uintptr_t"
 | 
			
		||||
			} else if rettype == "int" {
 | 
			
		||||
				cRettype = "int"
 | 
			
		||||
			} else if rettype == "int32" {
 | 
			
		||||
				cRettype = "int"
 | 
			
		||||
			} else if rettype == "int64" {
 | 
			
		||||
				cRettype = "long long"
 | 
			
		||||
			} else if rettype == "uint32" {
 | 
			
		||||
				cRettype = "unsigned int"
 | 
			
		||||
			} else if rettype == "uint64" {
 | 
			
		||||
				cRettype = "unsigned long long"
 | 
			
		||||
			} else {
 | 
			
		||||
				cRettype = "int"
 | 
			
		||||
			}
 | 
			
		||||
			if sysname == "exit" {
 | 
			
		||||
				cRettype = "void"
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// GCCGO Prototype arguments type
 | 
			
		||||
			var cIn []string
 | 
			
		||||
			for i, param := range in {
 | 
			
		||||
				p := parseParam(param)
 | 
			
		||||
				if regexp.MustCompile(`^\*`).FindStringSubmatch(p.Type) != nil {
 | 
			
		||||
					cIn = append(cIn, "uintptr_t")
 | 
			
		||||
				} else if p.Type == "string" {
 | 
			
		||||
					cIn = append(cIn, "uintptr_t")
 | 
			
		||||
				} else if regexp.MustCompile(`^\[\](.*)`).FindStringSubmatch(p.Type) != nil {
 | 
			
		||||
					cIn = append(cIn, "uintptr_t", "size_t")
 | 
			
		||||
				} else if p.Type == "unsafe.Pointer" {
 | 
			
		||||
					cIn = append(cIn, "uintptr_t")
 | 
			
		||||
				} else if p.Type == "uintptr" {
 | 
			
		||||
					cIn = append(cIn, "uintptr_t")
 | 
			
		||||
				} else if regexp.MustCompile(`^_`).FindStringSubmatch(p.Type) != nil {
 | 
			
		||||
					cIn = append(cIn, "uintptr_t")
 | 
			
		||||
				} else if p.Type == "int" {
 | 
			
		||||
					if (i == 0 || i == 2) && funct == "fcntl" {
 | 
			
		||||
						// These fcntl arguments needs to be uintptr to be able to call FcntlInt and FcntlFlock
 | 
			
		||||
						cIn = append(cIn, "uintptr_t")
 | 
			
		||||
					} else {
 | 
			
		||||
						cIn = append(cIn, "int")
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
				} else if p.Type == "int32" {
 | 
			
		||||
					cIn = append(cIn, "int")
 | 
			
		||||
				} else if p.Type == "int64" {
 | 
			
		||||
					cIn = append(cIn, "long long")
 | 
			
		||||
				} else if p.Type == "uint32" {
 | 
			
		||||
					cIn = append(cIn, "unsigned int")
 | 
			
		||||
				} else if p.Type == "uint64" {
 | 
			
		||||
					cIn = append(cIn, "unsigned long long")
 | 
			
		||||
				} else {
 | 
			
		||||
					cIn = append(cIn, "int")
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if !onlyCommon {
 | 
			
		||||
				// GCCGO Prototype Generation
 | 
			
		||||
				// Imports of system calls from libc
 | 
			
		||||
				cExtern += fmt.Sprintf("%s %s", cRettype, sysname)
 | 
			
		||||
				cIn := strings.Join(cIn, ", ")
 | 
			
		||||
				cExtern += fmt.Sprintf("(%s);\n", cIn)
 | 
			
		||||
			}
 | 
			
		||||
			// GC Library name
 | 
			
		||||
			if modname == "" {
 | 
			
		||||
				modname = "libc.a/shr_64.o"
 | 
			
		||||
			} else {
 | 
			
		||||
				fmt.Fprintf(os.Stderr, "%s: only syscall using libc are available\n", funct)
 | 
			
		||||
				os.Exit(1)
 | 
			
		||||
			}
 | 
			
		||||
			sysvarname := fmt.Sprintf("libc_%s", sysname)
 | 
			
		||||
 | 
			
		||||
			if !onlyCommon {
 | 
			
		||||
				// GC Runtime import of function to allow cross-platform builds.
 | 
			
		||||
				dynimports += fmt.Sprintf("//go:cgo_import_dynamic %s %s \"%s\"\n", sysvarname, sysname, modname)
 | 
			
		||||
				// GC Link symbol to proc address variable.
 | 
			
		||||
				linknames += fmt.Sprintf("//go:linkname %s %s\n", sysvarname, sysvarname)
 | 
			
		||||
				// GC Library proc address variable.
 | 
			
		||||
				vars = append(vars, sysvarname)
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			strconvfunc := "BytePtrFromString"
 | 
			
		||||
			strconvtype := "*byte"
 | 
			
		||||
 | 
			
		||||
			// Go function header.
 | 
			
		||||
			if outps != "" {
 | 
			
		||||
				outps = fmt.Sprintf(" (%s)", outps)
 | 
			
		||||
			}
 | 
			
		||||
			if textcommon != "" {
 | 
			
		||||
				textcommon += "\n"
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			textcommon += fmt.Sprintf("func %s(%s)%s {\n", funct, strings.Join(in, ", "), outps)
 | 
			
		||||
 | 
			
		||||
			// Prepare arguments tocall.
 | 
			
		||||
			var argscommon []string // Arguments in the common part
 | 
			
		||||
			var argscall []string   // Arguments for call prototype
 | 
			
		||||
			var argsgc []string     // Arguments for gc call (with syscall6)
 | 
			
		||||
			var argsgccgo []string  // Arguments for gccgo call (with C.name_of_syscall)
 | 
			
		||||
			n := 0
 | 
			
		||||
			argN := 0
 | 
			
		||||
			for _, param := range in {
 | 
			
		||||
				p := parseParam(param)
 | 
			
		||||
				if regexp.MustCompile(`^\*`).FindStringSubmatch(p.Type) != nil {
 | 
			
		||||
					argscommon = append(argscommon, fmt.Sprintf("uintptr(unsafe.Pointer(%s))", p.Name))
 | 
			
		||||
					argscall = append(argscall, fmt.Sprintf("%s uintptr", p.Name))
 | 
			
		||||
					argsgc = append(argsgc, p.Name)
 | 
			
		||||
					argsgccgo = append(argsgccgo, fmt.Sprintf("C.uintptr_t(%s)", p.Name))
 | 
			
		||||
				} else if p.Type == "string" && errvar != "" {
 | 
			
		||||
					textcommon += fmt.Sprintf("\tvar _p%d %s\n", n, strconvtype)
 | 
			
		||||
					textcommon += fmt.Sprintf("\t_p%d, %s = %s(%s)\n", n, errvar, strconvfunc, p.Name)
 | 
			
		||||
					textcommon += fmt.Sprintf("\tif %s != nil {\n\t\treturn\n\t}\n", errvar)
 | 
			
		||||
 | 
			
		||||
					argscommon = append(argscommon, fmt.Sprintf("uintptr(unsafe.Pointer(_p%d))", n))
 | 
			
		||||
					argscall = append(argscall, fmt.Sprintf("_p%d uintptr ", n))
 | 
			
		||||
					argsgc = append(argsgc, fmt.Sprintf("_p%d", n))
 | 
			
		||||
					argsgccgo = append(argsgccgo, fmt.Sprintf("C.uintptr_t(_p%d)", n))
 | 
			
		||||
					n++
 | 
			
		||||
				} else if p.Type == "string" {
 | 
			
		||||
					fmt.Fprintf(os.Stderr, path+":"+funct+" uses string arguments, but has no error return\n")
 | 
			
		||||
					textcommon += fmt.Sprintf("\tvar _p%d %s\n", n, strconvtype)
 | 
			
		||||
					textcommon += fmt.Sprintf("\t_p%d, %s = %s(%s)\n", n, errvar, strconvfunc, p.Name)
 | 
			
		||||
					textcommon += fmt.Sprintf("\tif %s != nil {\n\t\treturn\n\t}\n", errvar)
 | 
			
		||||
 | 
			
		||||
					argscommon = append(argscommon, fmt.Sprintf("uintptr(unsafe.Pointer(_p%d))", n))
 | 
			
		||||
					argscall = append(argscall, fmt.Sprintf("_p%d uintptr", n))
 | 
			
		||||
					argsgc = append(argsgc, fmt.Sprintf("_p%d", n))
 | 
			
		||||
					argsgccgo = append(argsgccgo, fmt.Sprintf("C.uintptr_t(_p%d)", n))
 | 
			
		||||
					n++
 | 
			
		||||
				} else if m := regexp.MustCompile(`^\[\](.*)`).FindStringSubmatch(p.Type); m != nil {
 | 
			
		||||
					// Convert slice into pointer, length.
 | 
			
		||||
					// Have to be careful not to take address of &a[0] if len == 0:
 | 
			
		||||
					// pass nil in that case.
 | 
			
		||||
					textcommon += fmt.Sprintf("\tvar _p%d *%s\n", n, m[1])
 | 
			
		||||
					textcommon += fmt.Sprintf("\tif len(%s) > 0 {\n\t\t_p%d = &%s[0]\n\t}\n", p.Name, n, p.Name)
 | 
			
		||||
					argscommon = append(argscommon, fmt.Sprintf("uintptr(unsafe.Pointer(_p%d))", n), fmt.Sprintf("len(%s)", p.Name))
 | 
			
		||||
					argscall = append(argscall, fmt.Sprintf("_p%d uintptr", n), fmt.Sprintf("_lenp%d int", n))
 | 
			
		||||
					argsgc = append(argsgc, fmt.Sprintf("_p%d", n), fmt.Sprintf("uintptr(_lenp%d)", n))
 | 
			
		||||
					argsgccgo = append(argsgccgo, fmt.Sprintf("C.uintptr_t(_p%d)", n), fmt.Sprintf("C.size_t(_lenp%d)", n))
 | 
			
		||||
					n++
 | 
			
		||||
				} else if p.Type == "int64" && endianness != "" {
 | 
			
		||||
					fmt.Fprintf(os.Stderr, path+":"+funct+" uses int64 with 32 bits mode. Case not yet implemented\n")
 | 
			
		||||
				} else if p.Type == "bool" {
 | 
			
		||||
					fmt.Fprintf(os.Stderr, path+":"+funct+" uses bool. Case not yet implemented\n")
 | 
			
		||||
				} else if regexp.MustCompile(`^_`).FindStringSubmatch(p.Type) != nil || p.Type == "unsafe.Pointer" {
 | 
			
		||||
					argscommon = append(argscommon, fmt.Sprintf("uintptr(%s)", p.Name))
 | 
			
		||||
					argscall = append(argscall, fmt.Sprintf("%s uintptr", p.Name))
 | 
			
		||||
					argsgc = append(argsgc, p.Name)
 | 
			
		||||
					argsgccgo = append(argsgccgo, fmt.Sprintf("C.uintptr_t(%s)", p.Name))
 | 
			
		||||
				} else if p.Type == "int" {
 | 
			
		||||
					if (argN == 0 || argN == 2) && ((funct == "fcntl") || (funct == "FcntlInt") || (funct == "FcntlFlock")) {
 | 
			
		||||
						// These fcntl arguments need to be uintptr to be able to call FcntlInt and FcntlFlock
 | 
			
		||||
						argscommon = append(argscommon, fmt.Sprintf("uintptr(%s)", p.Name))
 | 
			
		||||
						argscall = append(argscall, fmt.Sprintf("%s uintptr", p.Name))
 | 
			
		||||
						argsgc = append(argsgc, p.Name)
 | 
			
		||||
						argsgccgo = append(argsgccgo, fmt.Sprintf("C.uintptr_t(%s)", p.Name))
 | 
			
		||||
 | 
			
		||||
					} else {
 | 
			
		||||
						argscommon = append(argscommon, p.Name)
 | 
			
		||||
						argscall = append(argscall, fmt.Sprintf("%s int", p.Name))
 | 
			
		||||
						argsgc = append(argsgc, fmt.Sprintf("uintptr(%s)", p.Name))
 | 
			
		||||
						argsgccgo = append(argsgccgo, fmt.Sprintf("C.int(%s)", p.Name))
 | 
			
		||||
					}
 | 
			
		||||
				} else if p.Type == "int32" {
 | 
			
		||||
					argscommon = append(argscommon, p.Name)
 | 
			
		||||
					argscall = append(argscall, fmt.Sprintf("%s int32", p.Name))
 | 
			
		||||
					argsgc = append(argsgc, fmt.Sprintf("uintptr(%s)", p.Name))
 | 
			
		||||
					argsgccgo = append(argsgccgo, fmt.Sprintf("C.int(%s)", p.Name))
 | 
			
		||||
				} else if p.Type == "int64" {
 | 
			
		||||
					argscommon = append(argscommon, p.Name)
 | 
			
		||||
					argscall = append(argscall, fmt.Sprintf("%s int64", p.Name))
 | 
			
		||||
					argsgc = append(argsgc, fmt.Sprintf("uintptr(%s)", p.Name))
 | 
			
		||||
					argsgccgo = append(argsgccgo, fmt.Sprintf("C.longlong(%s)", p.Name))
 | 
			
		||||
				} else if p.Type == "uint32" {
 | 
			
		||||
					argscommon = append(argscommon, p.Name)
 | 
			
		||||
					argscall = append(argscall, fmt.Sprintf("%s uint32", p.Name))
 | 
			
		||||
					argsgc = append(argsgc, fmt.Sprintf("uintptr(%s)", p.Name))
 | 
			
		||||
					argsgccgo = append(argsgccgo, fmt.Sprintf("C.uint(%s)", p.Name))
 | 
			
		||||
				} else if p.Type == "uint64" {
 | 
			
		||||
					argscommon = append(argscommon, p.Name)
 | 
			
		||||
					argscall = append(argscall, fmt.Sprintf("%s uint64", p.Name))
 | 
			
		||||
					argsgc = append(argsgc, fmt.Sprintf("uintptr(%s)", p.Name))
 | 
			
		||||
					argsgccgo = append(argsgccgo, fmt.Sprintf("C.ulonglong(%s)", p.Name))
 | 
			
		||||
				} else if p.Type == "uintptr" {
 | 
			
		||||
					argscommon = append(argscommon, p.Name)
 | 
			
		||||
					argscall = append(argscall, fmt.Sprintf("%s uintptr", p.Name))
 | 
			
		||||
					argsgc = append(argsgc, p.Name)
 | 
			
		||||
					argsgccgo = append(argsgccgo, fmt.Sprintf("C.uintptr_t(%s)", p.Name))
 | 
			
		||||
				} else {
 | 
			
		||||
					argscommon = append(argscommon, fmt.Sprintf("int(%s)", p.Name))
 | 
			
		||||
					argscall = append(argscall, fmt.Sprintf("%s int", p.Name))
 | 
			
		||||
					argsgc = append(argsgc, fmt.Sprintf("uintptr(%s)", p.Name))
 | 
			
		||||
					argsgccgo = append(argsgccgo, fmt.Sprintf("C.int(%s)", p.Name))
 | 
			
		||||
				}
 | 
			
		||||
				argN++
 | 
			
		||||
			}
 | 
			
		||||
			nargs := len(argsgc)
 | 
			
		||||
 | 
			
		||||
			// COMMON function generation
 | 
			
		||||
			argscommonlist := strings.Join(argscommon, ", ")
 | 
			
		||||
			callcommon := fmt.Sprintf("call%s(%s)", sysname, argscommonlist)
 | 
			
		||||
			ret := []string{"_", "_"}
 | 
			
		||||
			body := ""
 | 
			
		||||
			doErrno := false
 | 
			
		||||
			for i := 0; i < len(out); i++ {
 | 
			
		||||
				p := parseParam(out[i])
 | 
			
		||||
				reg := ""
 | 
			
		||||
				if p.Name == "err" {
 | 
			
		||||
					reg = "e1"
 | 
			
		||||
					ret[1] = reg
 | 
			
		||||
					doErrno = true
 | 
			
		||||
				} else {
 | 
			
		||||
					reg = "r0"
 | 
			
		||||
					ret[0] = reg
 | 
			
		||||
				}
 | 
			
		||||
				if p.Type == "bool" {
 | 
			
		||||
					reg = fmt.Sprintf("%s != 0", reg)
 | 
			
		||||
				}
 | 
			
		||||
				if reg != "e1" {
 | 
			
		||||
					body += fmt.Sprintf("\t%s = %s(%s)\n", p.Name, p.Type, reg)
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			if ret[0] == "_" && ret[1] == "_" {
 | 
			
		||||
				textcommon += fmt.Sprintf("\t%s\n", callcommon)
 | 
			
		||||
			} else {
 | 
			
		||||
				textcommon += fmt.Sprintf("\t%s, %s := %s\n", ret[0], ret[1], callcommon)
 | 
			
		||||
			}
 | 
			
		||||
			textcommon += body
 | 
			
		||||
 | 
			
		||||
			if doErrno {
 | 
			
		||||
				textcommon += "\tif e1 != 0 {\n"
 | 
			
		||||
				textcommon += "\t\terr = errnoErr(e1)\n"
 | 
			
		||||
				textcommon += "\t}\n"
 | 
			
		||||
			}
 | 
			
		||||
			textcommon += "\treturn\n"
 | 
			
		||||
			textcommon += "}\n"
 | 
			
		||||
 | 
			
		||||
			if onlyCommon {
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// CALL Prototype
 | 
			
		||||
			callProto := fmt.Sprintf("func call%s(%s) (r1 uintptr, e1 Errno) {\n", sysname, strings.Join(argscall, ", "))
 | 
			
		||||
 | 
			
		||||
			// GC function generation
 | 
			
		||||
			asm := "syscall6"
 | 
			
		||||
			if nonblock != nil {
 | 
			
		||||
				asm = "rawSyscall6"
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if len(argsgc) <= 6 {
 | 
			
		||||
				for len(argsgc) < 6 {
 | 
			
		||||
					argsgc = append(argsgc, "0")
 | 
			
		||||
				}
 | 
			
		||||
			} else {
 | 
			
		||||
				fmt.Fprintf(os.Stderr, "%s: too many arguments to system call", funct)
 | 
			
		||||
				os.Exit(1)
 | 
			
		||||
			}
 | 
			
		||||
			argsgclist := strings.Join(argsgc, ", ")
 | 
			
		||||
			callgc := fmt.Sprintf("%s(uintptr(unsafe.Pointer(&%s)), %d, %s)", asm, sysvarname, nargs, argsgclist)
 | 
			
		||||
 | 
			
		||||
			textgc += callProto
 | 
			
		||||
			textgc += fmt.Sprintf("\tr1, _, e1 = %s\n", callgc)
 | 
			
		||||
			textgc += "\treturn\n}\n"
 | 
			
		||||
 | 
			
		||||
			// GCCGO function generation
 | 
			
		||||
			argsgccgolist := strings.Join(argsgccgo, ", ")
 | 
			
		||||
			callgccgo := fmt.Sprintf("C.%s(%s)", sysname, argsgccgolist)
 | 
			
		||||
			textgccgo += callProto
 | 
			
		||||
			textgccgo += fmt.Sprintf("\tr1 = uintptr(%s)\n", callgccgo)
 | 
			
		||||
			textgccgo += "\te1 = syscall.GetErrno()\n"
 | 
			
		||||
			textgccgo += "\treturn\n}\n"
 | 
			
		||||
		}
 | 
			
		||||
		if err := s.Err(); err != nil {
 | 
			
		||||
			fmt.Fprintf(os.Stderr, err.Error())
 | 
			
		||||
			os.Exit(1)
 | 
			
		||||
		}
 | 
			
		||||
		file.Close()
 | 
			
		||||
	}
 | 
			
		||||
	imp := ""
 | 
			
		||||
	if pack != "unix" {
 | 
			
		||||
		imp = "import \"golang.org/x/sys/unix\"\n"
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Print zsyscall_aix_ppc64.go
 | 
			
		||||
	err := ioutil.WriteFile("zsyscall_aix_ppc64.go",
 | 
			
		||||
		[]byte(fmt.Sprintf(srcTemplate1, cmdLine(), buildTags(), pack, imp, textcommon)),
 | 
			
		||||
		0644)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		fmt.Fprintf(os.Stderr, err.Error())
 | 
			
		||||
		os.Exit(1)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Print zsyscall_aix_ppc64_gc.go
 | 
			
		||||
	vardecls := "\t" + strings.Join(vars, ",\n\t")
 | 
			
		||||
	vardecls += " syscallFunc"
 | 
			
		||||
	err = ioutil.WriteFile("zsyscall_aix_ppc64_gc.go",
 | 
			
		||||
		[]byte(fmt.Sprintf(srcTemplate2, cmdLine(), buildTags(), pack, imp, dynimports, linknames, vardecls, textgc)),
 | 
			
		||||
		0644)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		fmt.Fprintf(os.Stderr, err.Error())
 | 
			
		||||
		os.Exit(1)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Print zsyscall_aix_ppc64_gccgo.go
 | 
			
		||||
	err = ioutil.WriteFile("zsyscall_aix_ppc64_gccgo.go",
 | 
			
		||||
		[]byte(fmt.Sprintf(srcTemplate3, cmdLine(), buildTags(), pack, cExtern, imp, textgccgo)),
 | 
			
		||||
		0644)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		fmt.Fprintf(os.Stderr, err.Error())
 | 
			
		||||
		os.Exit(1)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const srcTemplate1 = `// %s
 | 
			
		||||
// Code generated by the command above; see README.md. DO NOT EDIT.
 | 
			
		||||
 | 
			
		||||
// +build %s
 | 
			
		||||
 | 
			
		||||
package %s
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"unsafe"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%s
 | 
			
		||||
 | 
			
		||||
%s
 | 
			
		||||
`
 | 
			
		||||
const srcTemplate2 = `// %s
 | 
			
		||||
// Code generated by the command above; see README.md. DO NOT EDIT.
 | 
			
		||||
 | 
			
		||||
// +build %s
 | 
			
		||||
// +build !gccgo
 | 
			
		||||
 | 
			
		||||
package %s
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"unsafe"
 | 
			
		||||
)
 | 
			
		||||
%s
 | 
			
		||||
%s
 | 
			
		||||
%s
 | 
			
		||||
type syscallFunc uintptr
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
%s
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Implemented in runtime/syscall_aix.go.
 | 
			
		||||
func rawSyscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)
 | 
			
		||||
func syscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)
 | 
			
		||||
 | 
			
		||||
%s
 | 
			
		||||
`
 | 
			
		||||
const srcTemplate3 = `// %s
 | 
			
		||||
// Code generated by the command above; see README.md. DO NOT EDIT.
 | 
			
		||||
 | 
			
		||||
// +build %s
 | 
			
		||||
// +build gccgo
 | 
			
		||||
 | 
			
		||||
package %s
 | 
			
		||||
 | 
			
		||||
%s
 | 
			
		||||
*/
 | 
			
		||||
import "C"
 | 
			
		||||
import (
 | 
			
		||||
	"syscall"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
%s
 | 
			
		||||
 | 
			
		||||
%s
 | 
			
		||||
`
 | 
			
		||||
							
								
								
									
										5
									
								
								vendor/golang.org/x/sys/unix/mksyscall_solaris.pl
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/golang.org/x/sys/unix/mksyscall_solaris.pl
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -92,6 +92,11 @@ while(<>) {
 | 
			
		||||
	my @in = parseparamlist($in);
 | 
			
		||||
	my @out = parseparamlist($out);
 | 
			
		||||
 | 
			
		||||
	# Try in vain to keep people from editing this file.
 | 
			
		||||
	# The theory is that they jump into the middle of the file
 | 
			
		||||
	# without reading the header.
 | 
			
		||||
	$text .= "// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\n";
 | 
			
		||||
 | 
			
		||||
	# So file name.
 | 
			
		||||
	if($modname eq "") {
 | 
			
		||||
		$modname = "libc";
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								vendor/golang.org/x/sys/unix/mksysctl_openbsd.pl
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/golang.org/x/sys/unix/mksysctl_openbsd.pl
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -32,6 +32,7 @@ my @headers = qw (
 | 
			
		||||
	sys/sem.h
 | 
			
		||||
	sys/shm.h
 | 
			
		||||
	sys/vmmeter.h
 | 
			
		||||
	uvm/uvmexp.h
 | 
			
		||||
	uvm/uvm_param.h
 | 
			
		||||
	uvm/uvm_swap_encrypt.h
 | 
			
		||||
	ddb/db_var.h
 | 
			
		||||
@@ -240,7 +241,7 @@ foreach my $header (@headers) {
 | 
			
		||||
 | 
			
		||||
print <<EOF;
 | 
			
		||||
// mksysctl_openbsd.pl
 | 
			
		||||
// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT
 | 
			
		||||
// Code generated by the command above; DO NOT EDIT.
 | 
			
		||||
 | 
			
		||||
// +build $ENV{'GOARCH'},$ENV{'GOOS'}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										190
									
								
								vendor/golang.org/x/sys/unix/mksysnum.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										190
									
								
								vendor/golang.org/x/sys/unix/mksysnum.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,190 @@
 | 
			
		||||
// 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 ignore
 | 
			
		||||
 | 
			
		||||
// Generate system call table for DragonFly, NetBSD,
 | 
			
		||||
// FreeBSD, OpenBSD or Darwin from master list
 | 
			
		||||
// (for example, /usr/src/sys/kern/syscalls.master or
 | 
			
		||||
// sys/syscall.h).
 | 
			
		||||
package main
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bufio"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io"
 | 
			
		||||
	"io/ioutil"
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"os"
 | 
			
		||||
	"regexp"
 | 
			
		||||
	"strings"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	goos, goarch string
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// cmdLine returns this programs's commandline arguments
 | 
			
		||||
func cmdLine() string {
 | 
			
		||||
	return "go run mksysnum.go " + strings.Join(os.Args[1:], " ")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// buildTags returns build tags
 | 
			
		||||
func buildTags() string {
 | 
			
		||||
	return fmt.Sprintf("%s,%s", goarch, goos)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func checkErr(err error) {
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		fmt.Fprintf(os.Stderr, "%v\n", err)
 | 
			
		||||
		os.Exit(1)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// source string and substring slice for regexp
 | 
			
		||||
type re struct {
 | 
			
		||||
	str string   // source string
 | 
			
		||||
	sub []string // matched sub-string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Match performs regular expression match
 | 
			
		||||
func (r *re) Match(exp string) bool {
 | 
			
		||||
	r.sub = regexp.MustCompile(exp).FindStringSubmatch(r.str)
 | 
			
		||||
	if r.sub != nil {
 | 
			
		||||
		return true
 | 
			
		||||
	}
 | 
			
		||||
	return false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// fetchFile fetches a text file from URL
 | 
			
		||||
func fetchFile(URL string) io.Reader {
 | 
			
		||||
	resp, err := http.Get(URL)
 | 
			
		||||
	checkErr(err)
 | 
			
		||||
	defer resp.Body.Close()
 | 
			
		||||
	body, err := ioutil.ReadAll(resp.Body)
 | 
			
		||||
	checkErr(err)
 | 
			
		||||
	return strings.NewReader(string(body))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// readFile reads a text file from path
 | 
			
		||||
func readFile(path string) io.Reader {
 | 
			
		||||
	file, err := os.Open(os.Args[1])
 | 
			
		||||
	checkErr(err)
 | 
			
		||||
	return file
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func format(name, num, proto string) string {
 | 
			
		||||
	name = strings.ToUpper(name)
 | 
			
		||||
	// There are multiple entries for enosys and nosys, so comment them out.
 | 
			
		||||
	nm := re{str: name}
 | 
			
		||||
	if nm.Match(`^SYS_E?NOSYS$`) {
 | 
			
		||||
		name = fmt.Sprintf("// %s", name)
 | 
			
		||||
	}
 | 
			
		||||
	if name == `SYS_SYS_EXIT` {
 | 
			
		||||
		name = `SYS_EXIT`
 | 
			
		||||
	}
 | 
			
		||||
	return fmt.Sprintf("	%s = %s;  // %s\n", name, num, proto)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
	// Get the OS (using GOOS_TARGET if it exist)
 | 
			
		||||
	goos = os.Getenv("GOOS_TARGET")
 | 
			
		||||
	if goos == "" {
 | 
			
		||||
		goos = os.Getenv("GOOS")
 | 
			
		||||
	}
 | 
			
		||||
	// Get the architecture (using GOARCH_TARGET if it exists)
 | 
			
		||||
	goarch = os.Getenv("GOARCH_TARGET")
 | 
			
		||||
	if goarch == "" {
 | 
			
		||||
		goarch = os.Getenv("GOARCH")
 | 
			
		||||
	}
 | 
			
		||||
	// Check if GOOS and GOARCH environment variables are defined
 | 
			
		||||
	if goarch == "" || goos == "" {
 | 
			
		||||
		fmt.Fprintf(os.Stderr, "GOARCH or GOOS not defined in environment\n")
 | 
			
		||||
		os.Exit(1)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	file := strings.TrimSpace(os.Args[1])
 | 
			
		||||
	var syscalls io.Reader
 | 
			
		||||
	if strings.HasPrefix(file, "https://") || strings.HasPrefix(file, "http://") {
 | 
			
		||||
		// Download syscalls.master file
 | 
			
		||||
		syscalls = fetchFile(file)
 | 
			
		||||
	} else {
 | 
			
		||||
		syscalls = readFile(file)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var text, line string
 | 
			
		||||
	s := bufio.NewScanner(syscalls)
 | 
			
		||||
	for s.Scan() {
 | 
			
		||||
		t := re{str: line}
 | 
			
		||||
		if t.Match(`^(.*)\\$`) {
 | 
			
		||||
			// Handle continuation
 | 
			
		||||
			line = t.sub[1]
 | 
			
		||||
			line += strings.TrimLeft(s.Text(), " \t")
 | 
			
		||||
		} else {
 | 
			
		||||
			// New line
 | 
			
		||||
			line = s.Text()
 | 
			
		||||
		}
 | 
			
		||||
		t = re{str: line}
 | 
			
		||||
		if t.Match(`\\$`) {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		t = re{str: line}
 | 
			
		||||
 | 
			
		||||
		switch goos {
 | 
			
		||||
		case "dragonfly":
 | 
			
		||||
			if t.Match(`^([0-9]+)\s+STD\s+({ \S+\s+(\w+).*)$`) {
 | 
			
		||||
				num, proto := t.sub[1], t.sub[2]
 | 
			
		||||
				name := fmt.Sprintf("SYS_%s", t.sub[3])
 | 
			
		||||
				text += format(name, num, proto)
 | 
			
		||||
			}
 | 
			
		||||
		case "freebsd":
 | 
			
		||||
			if t.Match(`^([0-9]+)\s+\S+\s+(?:NO)?STD\s+({ \S+\s+(\w+).*)$`) {
 | 
			
		||||
				num, proto := t.sub[1], t.sub[2]
 | 
			
		||||
				name := fmt.Sprintf("SYS_%s", t.sub[3])
 | 
			
		||||
				text += format(name, num, proto)
 | 
			
		||||
			}
 | 
			
		||||
		case "openbsd":
 | 
			
		||||
			if t.Match(`^([0-9]+)\s+STD\s+(NOLOCK\s+)?({ \S+\s+\*?(\w+).*)$`) {
 | 
			
		||||
				num, proto, name := t.sub[1], t.sub[3], t.sub[4]
 | 
			
		||||
				text += format(name, num, proto)
 | 
			
		||||
			}
 | 
			
		||||
		case "netbsd":
 | 
			
		||||
			if t.Match(`^([0-9]+)\s+((STD)|(NOERR))\s+(RUMP\s+)?({\s+\S+\s*\*?\s*\|(\S+)\|(\S*)\|(\w+).*\s+})(\s+(\S+))?$`) {
 | 
			
		||||
				num, proto, compat := t.sub[1], t.sub[6], t.sub[8]
 | 
			
		||||
				name := t.sub[7] + "_" + t.sub[9]
 | 
			
		||||
				if t.sub[11] != "" {
 | 
			
		||||
					name = t.sub[7] + "_" + t.sub[11]
 | 
			
		||||
				}
 | 
			
		||||
				name = strings.ToUpper(name)
 | 
			
		||||
				if compat == "" || compat == "13" || compat == "30" || compat == "50" {
 | 
			
		||||
					text += fmt.Sprintf("	%s = %s;  // %s\n", name, num, proto)
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		case "darwin":
 | 
			
		||||
			if t.Match(`^#define\s+SYS_(\w+)\s+([0-9]+)`) {
 | 
			
		||||
				name, num := t.sub[1], t.sub[2]
 | 
			
		||||
				name = strings.ToUpper(name)
 | 
			
		||||
				text += fmt.Sprintf("	SYS_%s = %s;\n", name, num)
 | 
			
		||||
			}
 | 
			
		||||
		default:
 | 
			
		||||
			fmt.Fprintf(os.Stderr, "unrecognized GOOS=%s\n", goos)
 | 
			
		||||
			os.Exit(1)
 | 
			
		||||
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	err := s.Err()
 | 
			
		||||
	checkErr(err)
 | 
			
		||||
 | 
			
		||||
	fmt.Printf(template, cmdLine(), buildTags(), text)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const template = `// %s
 | 
			
		||||
// Code generated by the command above; see README.md. DO NOT EDIT.
 | 
			
		||||
 | 
			
		||||
// +build %s
 | 
			
		||||
 | 
			
		||||
package unix
 | 
			
		||||
 | 
			
		||||
const(
 | 
			
		||||
%s)`
 | 
			
		||||
							
								
								
									
										39
									
								
								vendor/golang.org/x/sys/unix/mksysnum_darwin.pl
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										39
									
								
								vendor/golang.org/x/sys/unix/mksysnum_darwin.pl
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,39 +0,0 @@
 | 
			
		||||
#!/usr/bin/env perl
 | 
			
		||||
# 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.
 | 
			
		||||
#
 | 
			
		||||
# Generate system call table for Darwin from sys/syscall.h
 | 
			
		||||
 | 
			
		||||
use strict;
 | 
			
		||||
 | 
			
		||||
if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") {
 | 
			
		||||
	print STDERR "GOARCH or GOOS not defined in environment\n";
 | 
			
		||||
	exit 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
my $command = "mksysnum_darwin.pl " . join(' ', @ARGV);
 | 
			
		||||
 | 
			
		||||
print <<EOF;
 | 
			
		||||
// $command
 | 
			
		||||
// Code generated by the command above; see README.md. DO NOT EDIT.
 | 
			
		||||
 | 
			
		||||
// +build $ENV{'GOARCH'},$ENV{'GOOS'}
 | 
			
		||||
 | 
			
		||||
package unix
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
while(<>){
 | 
			
		||||
	if(/^#define\s+SYS_(\w+)\s+([0-9]+)/){
 | 
			
		||||
		my $name = $1;
 | 
			
		||||
		my $num = $2;
 | 
			
		||||
		$name =~ y/a-z/A-Z/;
 | 
			
		||||
		print "	SYS_$name = $num;"
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
print <<EOF;
 | 
			
		||||
)
 | 
			
		||||
EOF
 | 
			
		||||
							
								
								
									
										50
									
								
								vendor/golang.org/x/sys/unix/mksysnum_dragonfly.pl
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										50
									
								
								vendor/golang.org/x/sys/unix/mksysnum_dragonfly.pl
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,50 +0,0 @@
 | 
			
		||||
#!/usr/bin/env perl
 | 
			
		||||
# 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.
 | 
			
		||||
#
 | 
			
		||||
# Generate system call table for DragonFly from master list
 | 
			
		||||
# (for example, /usr/src/sys/kern/syscalls.master).
 | 
			
		||||
 | 
			
		||||
use strict;
 | 
			
		||||
 | 
			
		||||
if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") {
 | 
			
		||||
	print STDERR "GOARCH or GOOS not defined in environment\n";
 | 
			
		||||
	exit 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
my $command = "mksysnum_dragonfly.pl " . join(' ', @ARGV);
 | 
			
		||||
 | 
			
		||||
print <<EOF;
 | 
			
		||||
// $command
 | 
			
		||||
// Code generated by the command above; see README.md. DO NOT EDIT.
 | 
			
		||||
 | 
			
		||||
// +build $ENV{'GOARCH'},$ENV{'GOOS'}
 | 
			
		||||
 | 
			
		||||
package unix
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
while(<>){
 | 
			
		||||
	if(/^([0-9]+)\s+STD\s+({ \S+\s+(\w+).*)$/){
 | 
			
		||||
		my $num = $1;
 | 
			
		||||
		my $proto = $2;
 | 
			
		||||
		my $name = "SYS_$3";
 | 
			
		||||
		$name =~ y/a-z/A-Z/;
 | 
			
		||||
 | 
			
		||||
		# There are multiple entries for enosys and nosys, so comment them out.
 | 
			
		||||
		if($name =~ /^SYS_E?NOSYS$/){
 | 
			
		||||
			$name = "// $name";
 | 
			
		||||
		}
 | 
			
		||||
		if($name eq 'SYS_SYS_EXIT'){
 | 
			
		||||
			$name = 'SYS_EXIT';
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		print "	$name = $num;  // $proto\n";
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
print <<EOF;
 | 
			
		||||
)
 | 
			
		||||
EOF
 | 
			
		||||
							
								
								
									
										50
									
								
								vendor/golang.org/x/sys/unix/mksysnum_freebsd.pl
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										50
									
								
								vendor/golang.org/x/sys/unix/mksysnum_freebsd.pl
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,50 +0,0 @@
 | 
			
		||||
#!/usr/bin/env perl
 | 
			
		||||
# 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.
 | 
			
		||||
#
 | 
			
		||||
# Generate system call table for FreeBSD from master list
 | 
			
		||||
# (for example, /usr/src/sys/kern/syscalls.master).
 | 
			
		||||
 | 
			
		||||
use strict;
 | 
			
		||||
 | 
			
		||||
if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") {
 | 
			
		||||
	print STDERR "GOARCH or GOOS not defined in environment\n";
 | 
			
		||||
	exit 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
my $command = "mksysnum_freebsd.pl " . join(' ', @ARGV);
 | 
			
		||||
 | 
			
		||||
print <<EOF;
 | 
			
		||||
// $command
 | 
			
		||||
// Code generated by the command above; see README.md. DO NOT EDIT.
 | 
			
		||||
 | 
			
		||||
// +build $ENV{'GOARCH'},$ENV{'GOOS'}
 | 
			
		||||
 | 
			
		||||
package unix
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
while(<>){
 | 
			
		||||
	if(/^([0-9]+)\s+\S+\s+STD\s+({ \S+\s+(\w+).*)$/){
 | 
			
		||||
		my $num = $1;
 | 
			
		||||
		my $proto = $2;
 | 
			
		||||
		my $name = "SYS_$3";
 | 
			
		||||
		$name =~ y/a-z/A-Z/;
 | 
			
		||||
 | 
			
		||||
		# There are multiple entries for enosys and nosys, so comment them out.
 | 
			
		||||
		if($name =~ /^SYS_E?NOSYS$/){
 | 
			
		||||
			$name = "// $name";
 | 
			
		||||
		}
 | 
			
		||||
		if($name eq 'SYS_SYS_EXIT'){
 | 
			
		||||
			$name = 'SYS_EXIT';
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		print "	$name = $num;  // $proto\n";
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
print <<EOF;
 | 
			
		||||
)
 | 
			
		||||
EOF
 | 
			
		||||
							
								
								
									
										58
									
								
								vendor/golang.org/x/sys/unix/mksysnum_netbsd.pl
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										58
									
								
								vendor/golang.org/x/sys/unix/mksysnum_netbsd.pl
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,58 +0,0 @@
 | 
			
		||||
#!/usr/bin/env perl
 | 
			
		||||
# 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.
 | 
			
		||||
#
 | 
			
		||||
# Generate system call table for OpenBSD from master list
 | 
			
		||||
# (for example, /usr/src/sys/kern/syscalls.master).
 | 
			
		||||
 | 
			
		||||
use strict;
 | 
			
		||||
 | 
			
		||||
if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") {
 | 
			
		||||
	print STDERR "GOARCH or GOOS not defined in environment\n";
 | 
			
		||||
	exit 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
my $command = "mksysnum_netbsd.pl " . join(' ', @ARGV);
 | 
			
		||||
 | 
			
		||||
print <<EOF;
 | 
			
		||||
// $command
 | 
			
		||||
// Code generated by the command above; see README.md. DO NOT EDIT.
 | 
			
		||||
 | 
			
		||||
// +build $ENV{'GOARCH'},$ENV{'GOOS'}
 | 
			
		||||
 | 
			
		||||
package unix
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
my $line = '';
 | 
			
		||||
while(<>){
 | 
			
		||||
	if($line =~ /^(.*)\\$/) {
 | 
			
		||||
		# Handle continuation
 | 
			
		||||
		$line = $1;
 | 
			
		||||
		$_ =~ s/^\s+//;
 | 
			
		||||
		$line .= $_;
 | 
			
		||||
	} else {
 | 
			
		||||
		# New line
 | 
			
		||||
		$line = $_;
 | 
			
		||||
	}
 | 
			
		||||
	next if $line =~ /\\$/;
 | 
			
		||||
	if($line =~ /^([0-9]+)\s+((STD)|(NOERR))\s+(RUMP\s+)?({\s+\S+\s*\*?\s*\|(\S+)\|(\S*)\|(\w+).*\s+})(\s+(\S+))?$/) {
 | 
			
		||||
		my $num = $1;
 | 
			
		||||
		my $proto = $6;
 | 
			
		||||
		my $compat = $8;
 | 
			
		||||
		my $name = "$7_$9";
 | 
			
		||||
 | 
			
		||||
		$name = "$7_$11" if $11 ne '';
 | 
			
		||||
		$name =~ y/a-z/A-Z/;
 | 
			
		||||
 | 
			
		||||
		if($compat eq '' || $compat eq '13' || $compat eq '30' || $compat eq '50') {
 | 
			
		||||
			print "	$name = $num;  // $proto\n";
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
print <<EOF;
 | 
			
		||||
)
 | 
			
		||||
EOF
 | 
			
		||||
							
								
								
									
										50
									
								
								vendor/golang.org/x/sys/unix/mksysnum_openbsd.pl
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										50
									
								
								vendor/golang.org/x/sys/unix/mksysnum_openbsd.pl
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,50 +0,0 @@
 | 
			
		||||
#!/usr/bin/env perl
 | 
			
		||||
# 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.
 | 
			
		||||
#
 | 
			
		||||
# Generate system call table for OpenBSD from master list
 | 
			
		||||
# (for example, /usr/src/sys/kern/syscalls.master).
 | 
			
		||||
 | 
			
		||||
use strict;
 | 
			
		||||
 | 
			
		||||
if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") {
 | 
			
		||||
	print STDERR "GOARCH or GOOS not defined in environment\n";
 | 
			
		||||
	exit 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
my $command = "mksysnum_openbsd.pl " . join(' ', @ARGV);
 | 
			
		||||
 | 
			
		||||
print <<EOF;
 | 
			
		||||
// $command
 | 
			
		||||
// Code generated by the command above; see README.md. DO NOT EDIT.
 | 
			
		||||
 | 
			
		||||
// +build $ENV{'GOARCH'},$ENV{'GOOS'}
 | 
			
		||||
 | 
			
		||||
package unix
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
while(<>){
 | 
			
		||||
	if(/^([0-9]+)\s+STD\s+(NOLOCK\s+)?({ \S+\s+\*?(\w+).*)$/){
 | 
			
		||||
		my $num = $1;
 | 
			
		||||
		my $proto = $3;
 | 
			
		||||
		my $name = $4;
 | 
			
		||||
		$name =~ y/a-z/A-Z/;
 | 
			
		||||
 | 
			
		||||
		# There are multiple entries for enosys and nosys, so comment them out.
 | 
			
		||||
		if($name =~ /^SYS_E?NOSYS$/){
 | 
			
		||||
			$name = "// $name";
 | 
			
		||||
		}
 | 
			
		||||
		if($name eq 'SYS_SYS_EXIT'){
 | 
			
		||||
			$name = 'SYS_EXIT';
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		print "	$name = $num;  // $proto\n";
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
print <<EOF;
 | 
			
		||||
)
 | 
			
		||||
EOF
 | 
			
		||||
							
								
								
									
										154
									
								
								vendor/golang.org/x/sys/unix/openbsd_pledge.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										154
									
								
								vendor/golang.org/x/sys/unix/openbsd_pledge.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -8,31 +8,159 @@
 | 
			
		||||
package unix
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"errors"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"syscall"
 | 
			
		||||
	"unsafe"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	SYS_PLEDGE = 108
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Pledge implements the pledge syscall. For more information see pledge(2).
 | 
			
		||||
func Pledge(promises string, paths []string) error {
 | 
			
		||||
	promisesPtr, err := syscall.BytePtrFromString(promises)
 | 
			
		||||
// Pledge implements the pledge syscall.
 | 
			
		||||
//
 | 
			
		||||
// The pledge syscall does not accept execpromises on OpenBSD releases
 | 
			
		||||
// before 6.3.
 | 
			
		||||
//
 | 
			
		||||
// execpromises must be empty when Pledge is called on OpenBSD
 | 
			
		||||
// releases predating 6.3, otherwise an error will be returned.
 | 
			
		||||
//
 | 
			
		||||
// For more information see pledge(2).
 | 
			
		||||
func Pledge(promises, execpromises string) error {
 | 
			
		||||
	maj, min, err := majmin()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	promisesUnsafe, pathsUnsafe := unsafe.Pointer(promisesPtr), unsafe.Pointer(nil)
 | 
			
		||||
	if paths != nil {
 | 
			
		||||
		var pathsPtr []*byte
 | 
			
		||||
		if pathsPtr, err = syscall.SlicePtrFromStrings(paths); err != nil {
 | 
			
		||||
 | 
			
		||||
	err = pledgeAvailable(maj, min, execpromises)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
		pathsUnsafe = unsafe.Pointer(&pathsPtr[0])
 | 
			
		||||
 | 
			
		||||
	pptr, err := syscall.BytePtrFromString(promises)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	_, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(promisesUnsafe), uintptr(pathsUnsafe), 0)
 | 
			
		||||
 | 
			
		||||
	// This variable will hold either a nil unsafe.Pointer or
 | 
			
		||||
	// an unsafe.Pointer to a string (execpromises).
 | 
			
		||||
	var expr unsafe.Pointer
 | 
			
		||||
 | 
			
		||||
	// If we're running on OpenBSD > 6.2, pass execpromises to the syscall.
 | 
			
		||||
	if maj > 6 || (maj == 6 && min > 2) {
 | 
			
		||||
		exptr, err := syscall.BytePtrFromString(execpromises)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
		expr = unsafe.Pointer(exptr)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	_, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(unsafe.Pointer(pptr)), uintptr(expr), 0)
 | 
			
		||||
	if e != 0 {
 | 
			
		||||
		return e
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// PledgePromises implements the pledge syscall.
 | 
			
		||||
//
 | 
			
		||||
// This changes the promises and leaves the execpromises untouched.
 | 
			
		||||
//
 | 
			
		||||
// For more information see pledge(2).
 | 
			
		||||
func PledgePromises(promises string) error {
 | 
			
		||||
	maj, min, err := majmin()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	err = pledgeAvailable(maj, min, "")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// This variable holds the execpromises and is always nil.
 | 
			
		||||
	var expr unsafe.Pointer
 | 
			
		||||
 | 
			
		||||
	pptr, err := syscall.BytePtrFromString(promises)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	_, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(unsafe.Pointer(pptr)), uintptr(expr), 0)
 | 
			
		||||
	if e != 0 {
 | 
			
		||||
		return e
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// PledgeExecpromises implements the pledge syscall.
 | 
			
		||||
//
 | 
			
		||||
// This changes the execpromises and leaves the promises untouched.
 | 
			
		||||
//
 | 
			
		||||
// For more information see pledge(2).
 | 
			
		||||
func PledgeExecpromises(execpromises string) error {
 | 
			
		||||
	maj, min, err := majmin()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	err = pledgeAvailable(maj, min, execpromises)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// This variable holds the promises and is always nil.
 | 
			
		||||
	var pptr unsafe.Pointer
 | 
			
		||||
 | 
			
		||||
	exptr, err := syscall.BytePtrFromString(execpromises)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	_, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(pptr), uintptr(unsafe.Pointer(exptr)), 0)
 | 
			
		||||
	if e != 0 {
 | 
			
		||||
		return e
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// majmin returns major and minor version number for an OpenBSD system.
 | 
			
		||||
func majmin() (major int, minor int, err error) {
 | 
			
		||||
	var v Utsname
 | 
			
		||||
	err = Uname(&v)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	major, err = strconv.Atoi(string(v.Release[0]))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		err = errors.New("cannot parse major version number returned by uname")
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	minor, err = strconv.Atoi(string(v.Release[2]))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		err = errors.New("cannot parse minor version number returned by uname")
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// pledgeAvailable checks for availability of the pledge(2) syscall
 | 
			
		||||
// based on the running OpenBSD version.
 | 
			
		||||
func pledgeAvailable(maj, min int, execpromises string) error {
 | 
			
		||||
	// If OpenBSD <= 5.9, pledge is not available.
 | 
			
		||||
	if (maj == 5 && min != 9) || maj < 5 {
 | 
			
		||||
		return fmt.Errorf("pledge syscall is not available on OpenBSD %d.%d", maj, min)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// If OpenBSD <= 6.2 and execpromises is not empty,
 | 
			
		||||
	// return an error - execpromises is not available before 6.3
 | 
			
		||||
	if (maj < 6 || (maj == 6 && min <= 2)) && execpromises != "" {
 | 
			
		||||
		return fmt.Errorf("cannot use execpromises on OpenBSD %d.%d", maj, min)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										44
									
								
								vendor/golang.org/x/sys/unix/openbsd_unveil.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								vendor/golang.org/x/sys/unix/openbsd_unveil.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,44 @@
 | 
			
		||||
// 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 openbsd
 | 
			
		||||
 | 
			
		||||
package unix
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"syscall"
 | 
			
		||||
	"unsafe"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Unveil implements the unveil syscall.
 | 
			
		||||
// For more information see unveil(2).
 | 
			
		||||
// Note that the special case of blocking further
 | 
			
		||||
// unveil calls is handled by UnveilBlock.
 | 
			
		||||
func Unveil(path string, flags string) error {
 | 
			
		||||
	pathPtr, err := syscall.BytePtrFromString(path)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	flagsPtr, err := syscall.BytePtrFromString(flags)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	_, _, e := syscall.Syscall(SYS_UNVEIL, uintptr(unsafe.Pointer(pathPtr)), uintptr(unsafe.Pointer(flagsPtr)), 0)
 | 
			
		||||
	if e != 0 {
 | 
			
		||||
		return e
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// UnveilBlock blocks future unveil calls.
 | 
			
		||||
// For more information see unveil(2).
 | 
			
		||||
func UnveilBlock() error {
 | 
			
		||||
	// Both pointers must be nil.
 | 
			
		||||
	var pathUnsafe, flagsUnsafe unsafe.Pointer
 | 
			
		||||
	_, _, e := syscall.Syscall(SYS_UNVEIL, uintptr(pathUnsafe), uintptr(flagsUnsafe), 0)
 | 
			
		||||
	if e != 0 {
 | 
			
		||||
		return e
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										2
									
								
								vendor/golang.org/x/sys/unix/pagesize_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/golang.org/x/sys/unix/pagesize_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,7 +2,7 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build darwin dragonfly freebsd linux netbsd openbsd solaris
 | 
			
		||||
// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
 | 
			
		||||
 | 
			
		||||
// For Unix, get the pagesize from the runtime.
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								vendor/golang.org/x/sys/unix/race0.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/golang.org/x/sys/unix/race0.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,7 +2,7 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build darwin,!race linux,!race freebsd,!race netbsd openbsd solaris dragonfly
 | 
			
		||||
// +build aix darwin,!race linux,!race freebsd,!race netbsd openbsd solaris dragonfly
 | 
			
		||||
 | 
			
		||||
package unix
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										21
									
								
								vendor/golang.org/x/sys/unix/sockcmsg_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										21
									
								
								vendor/golang.org/x/sys/unix/sockcmsg_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,23 +2,36 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build darwin dragonfly freebsd linux netbsd openbsd solaris
 | 
			
		||||
// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
 | 
			
		||||
 | 
			
		||||
// Socket control messages
 | 
			
		||||
 | 
			
		||||
package unix
 | 
			
		||||
 | 
			
		||||
import "unsafe"
 | 
			
		||||
import (
 | 
			
		||||
	"runtime"
 | 
			
		||||
	"unsafe"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Round the length of a raw sockaddr up to align it properly.
 | 
			
		||||
func cmsgAlignOf(salen int) int {
 | 
			
		||||
	salign := sizeofPtr
 | 
			
		||||
	salign := SizeofPtr
 | 
			
		||||
 | 
			
		||||
	switch runtime.GOOS {
 | 
			
		||||
	case "darwin", "dragonfly", "solaris":
 | 
			
		||||
		// NOTE: It seems like 64-bit Darwin, DragonFly BSD and
 | 
			
		||||
		// Solaris kernels still require 32-bit aligned access to
 | 
			
		||||
		// network subsystem.
 | 
			
		||||
	if darwin64Bit || dragonfly64Bit || solaris64Bit {
 | 
			
		||||
		if SizeofPtr == 8 {
 | 
			
		||||
			salign = 4
 | 
			
		||||
		}
 | 
			
		||||
	case "openbsd":
 | 
			
		||||
		// OpenBSD armv7 requires 64-bit alignment.
 | 
			
		||||
		if runtime.GOARCH == "arm" {
 | 
			
		||||
			salign = 8
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return (salen + salign - 1) & ^(salign - 1)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								vendor/golang.org/x/sys/unix/str.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/golang.org/x/sys/unix/str.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,7 +2,7 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build darwin dragonfly freebsd linux netbsd openbsd solaris
 | 
			
		||||
// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
 | 
			
		||||
 | 
			
		||||
package unix
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										11
									
								
								vendor/golang.org/x/sys/unix/syscall.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								vendor/golang.org/x/sys/unix/syscall.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -2,7 +2,7 @@
 | 
			
		||||
// Use of this source code is governed by a BSD-style
 | 
			
		||||
// license that can be found in the LICENSE file.
 | 
			
		||||
 | 
			
		||||
// +build darwin dragonfly freebsd linux netbsd openbsd solaris
 | 
			
		||||
// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris
 | 
			
		||||
 | 
			
		||||
// Package unix contains an interface to the low-level operating system
 | 
			
		||||
// primitives. OS details vary depending on the underlying system, and
 | 
			
		||||
@@ -11,25 +11,28 @@
 | 
			
		||||
// system, set $GOOS and $GOARCH to the desired system. For example, if
 | 
			
		||||
// you want to view documentation for freebsd/arm on linux/amd64, set $GOOS
 | 
			
		||||
// to freebsd and $GOARCH to arm.
 | 
			
		||||
//
 | 
			
		||||
// The primary use of this package is inside other packages that provide a more
 | 
			
		||||
// portable interface to the system, such as "os", "time" and "net".  Use
 | 
			
		||||
// those packages rather than this one if you can.
 | 
			
		||||
//
 | 
			
		||||
// For details of the functions and data types in this package consult
 | 
			
		||||
// the manuals for the appropriate operating system.
 | 
			
		||||
//
 | 
			
		||||
// These calls return err == nil to indicate success; otherwise
 | 
			
		||||
// err represents an operating system error describing the failure and
 | 
			
		||||
// holds a value of type syscall.Errno.
 | 
			
		||||
package unix // import "golang.org/x/sys/unix"
 | 
			
		||||
 | 
			
		||||
import "strings"
 | 
			
		||||
 | 
			
		||||
// ByteSliceFromString returns a NUL-terminated slice of bytes
 | 
			
		||||
// containing the text of s. If s contains a NUL byte at any
 | 
			
		||||
// location, it returns (nil, EINVAL).
 | 
			
		||||
func ByteSliceFromString(s string) ([]byte, error) {
 | 
			
		||||
	for i := 0; i < len(s); i++ {
 | 
			
		||||
		if s[i] == 0 {
 | 
			
		||||
	if strings.IndexByte(s, 0) != -1 {
 | 
			
		||||
		return nil, EINVAL
 | 
			
		||||
	}
 | 
			
		||||
	}
 | 
			
		||||
	a := make([]byte, len(s)+1)
 | 
			
		||||
	copy(a, s)
 | 
			
		||||
	return a, nil
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										547
									
								
								vendor/golang.org/x/sys/unix/syscall_aix.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										547
									
								
								vendor/golang.org/x/sys/unix/syscall_aix.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,547 @@
 | 
			
		||||
// 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
 | 
			
		||||
 | 
			
		||||
// Aix system calls.
 | 
			
		||||
// This file is compiled as ordinary Go code,
 | 
			
		||||
// but it is also input to mksyscall,
 | 
			
		||||
// which parses the //sys lines and generates system call stubs.
 | 
			
		||||
// Note that sometimes we use a lowercase //sys name and
 | 
			
		||||
// wrap it in our own nicer implementation.
 | 
			
		||||
 | 
			
		||||
package unix
 | 
			
		||||
 | 
			
		||||
import "unsafe"
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Wrapped
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
//sys	utimes(path string, times *[2]Timeval) (err error)
 | 
			
		||||
func Utimes(path string, tv []Timeval) error {
 | 
			
		||||
	if len(tv) != 2 {
 | 
			
		||||
		return EINVAL
 | 
			
		||||
	}
 | 
			
		||||
	return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//sys	utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error)
 | 
			
		||||
func UtimesNano(path string, ts []Timespec) error {
 | 
			
		||||
	if len(ts) != 2 {
 | 
			
		||||
		return EINVAL
 | 
			
		||||
	}
 | 
			
		||||
	return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {
 | 
			
		||||
	if ts == nil {
 | 
			
		||||
		return utimensat(dirfd, path, nil, flags)
 | 
			
		||||
	}
 | 
			
		||||
	if len(ts) != 2 {
 | 
			
		||||
		return EINVAL
 | 
			
		||||
	}
 | 
			
		||||
	return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {
 | 
			
		||||
	if sa.Port < 0 || sa.Port > 0xFFFF {
 | 
			
		||||
		return nil, 0, EINVAL
 | 
			
		||||
	}
 | 
			
		||||
	sa.raw.Family = AF_INET
 | 
			
		||||
	p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))
 | 
			
		||||
	p[0] = byte(sa.Port >> 8)
 | 
			
		||||
	p[1] = byte(sa.Port)
 | 
			
		||||
	for i := 0; i < len(sa.Addr); i++ {
 | 
			
		||||
		sa.raw.Addr[i] = sa.Addr[i]
 | 
			
		||||
	}
 | 
			
		||||
	return unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {
 | 
			
		||||
	if sa.Port < 0 || sa.Port > 0xFFFF {
 | 
			
		||||
		return nil, 0, EINVAL
 | 
			
		||||
	}
 | 
			
		||||
	sa.raw.Family = AF_INET6
 | 
			
		||||
	p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))
 | 
			
		||||
	p[0] = byte(sa.Port >> 8)
 | 
			
		||||
	p[1] = byte(sa.Port)
 | 
			
		||||
	sa.raw.Scope_id = sa.ZoneId
 | 
			
		||||
	for i := 0; i < len(sa.Addr); i++ {
 | 
			
		||||
		sa.raw.Addr[i] = sa.Addr[i]
 | 
			
		||||
	}
 | 
			
		||||
	return unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {
 | 
			
		||||
	name := sa.Name
 | 
			
		||||
	n := len(name)
 | 
			
		||||
	if n > len(sa.raw.Path) {
 | 
			
		||||
		return nil, 0, EINVAL
 | 
			
		||||
	}
 | 
			
		||||
	if n == len(sa.raw.Path) && name[0] != '@' {
 | 
			
		||||
		return nil, 0, EINVAL
 | 
			
		||||
	}
 | 
			
		||||
	sa.raw.Family = AF_UNIX
 | 
			
		||||
	for i := 0; i < n; i++ {
 | 
			
		||||
		sa.raw.Path[i] = uint8(name[i])
 | 
			
		||||
	}
 | 
			
		||||
	// length is family (uint16), name, NUL.
 | 
			
		||||
	sl := _Socklen(2)
 | 
			
		||||
	if n > 0 {
 | 
			
		||||
		sl += _Socklen(n) + 1
 | 
			
		||||
	}
 | 
			
		||||
	if sa.raw.Path[0] == '@' {
 | 
			
		||||
		sa.raw.Path[0] = 0
 | 
			
		||||
		// Don't count trailing NUL for abstract address.
 | 
			
		||||
		sl--
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return unsafe.Pointer(&sa.raw), sl, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Getsockname(fd int) (sa Sockaddr, err error) {
 | 
			
		||||
	var rsa RawSockaddrAny
 | 
			
		||||
	var len _Socklen = SizeofSockaddrAny
 | 
			
		||||
	if err = getsockname(fd, &rsa, &len); err != nil {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	return anyToSockaddr(fd, &rsa)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//sys	getcwd(buf []byte) (err error)
 | 
			
		||||
 | 
			
		||||
const ImplementsGetwd = true
 | 
			
		||||
 | 
			
		||||
func Getwd() (ret string, err error) {
 | 
			
		||||
	for len := uint64(4096); ; len *= 2 {
 | 
			
		||||
		b := make([]byte, len)
 | 
			
		||||
		err := getcwd(b)
 | 
			
		||||
		if err == nil {
 | 
			
		||||
			i := 0
 | 
			
		||||
			for b[i] != 0 {
 | 
			
		||||
				i++
 | 
			
		||||
			}
 | 
			
		||||
			return string(b[0:i]), nil
 | 
			
		||||
		}
 | 
			
		||||
		if err != ERANGE {
 | 
			
		||||
			return "", err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Getcwd(buf []byte) (n int, err error) {
 | 
			
		||||
	err = getcwd(buf)
 | 
			
		||||
	if err == nil {
 | 
			
		||||
		i := 0
 | 
			
		||||
		for buf[i] != 0 {
 | 
			
		||||
			i++
 | 
			
		||||
		}
 | 
			
		||||
		n = i + 1
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Getgroups() (gids []int, err error) {
 | 
			
		||||
	n, err := getgroups(0, nil)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	if n == 0 {
 | 
			
		||||
		return nil, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Sanity check group count. Max is 16 on BSD.
 | 
			
		||||
	if n < 0 || n > 1000 {
 | 
			
		||||
		return nil, EINVAL
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	a := make([]_Gid_t, n)
 | 
			
		||||
	n, err = getgroups(n, &a[0])
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	gids = make([]int, n)
 | 
			
		||||
	for i, v := range a[0:n] {
 | 
			
		||||
		gids[i] = int(v)
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Setgroups(gids []int) (err error) {
 | 
			
		||||
	if len(gids) == 0 {
 | 
			
		||||
		return setgroups(0, nil)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	a := make([]_Gid_t, len(gids))
 | 
			
		||||
	for i, v := range gids {
 | 
			
		||||
		a[i] = _Gid_t(v)
 | 
			
		||||
	}
 | 
			
		||||
	return setgroups(len(a), &a[0])
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Socket
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
//sys	accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)
 | 
			
		||||
 | 
			
		||||
func Accept(fd int) (nfd int, sa Sockaddr, err error) {
 | 
			
		||||
	var rsa RawSockaddrAny
 | 
			
		||||
	var len _Socklen = SizeofSockaddrAny
 | 
			
		||||
	nfd, err = accept(fd, &rsa, &len)
 | 
			
		||||
	if nfd == -1 {
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	sa, err = anyToSockaddr(fd, &rsa)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		Close(nfd)
 | 
			
		||||
		nfd = 0
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {
 | 
			
		||||
	// Recvmsg not implemented on AIX
 | 
			
		||||
	sa := new(SockaddrUnix)
 | 
			
		||||
	return -1, -1, -1, sa, ENOSYS
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) {
 | 
			
		||||
	_, err = SendmsgN(fd, p, oob, to, flags)
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) {
 | 
			
		||||
	// SendmsgN not implemented on AIX
 | 
			
		||||
	return -1, ENOSYS
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
 | 
			
		||||
	switch rsa.Addr.Family {
 | 
			
		||||
 | 
			
		||||
	case AF_UNIX:
 | 
			
		||||
		pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))
 | 
			
		||||
		sa := new(SockaddrUnix)
 | 
			
		||||
 | 
			
		||||
		// Some versions of AIX have a bug in getsockname (see IV78655).
 | 
			
		||||
		// We can't rely on sa.Len being set correctly.
 | 
			
		||||
		n := SizeofSockaddrUnix - 3 // subtract leading Family, Len, terminating NUL.
 | 
			
		||||
		for i := 0; i < n; i++ {
 | 
			
		||||
			if pp.Path[i] == 0 {
 | 
			
		||||
				n = i
 | 
			
		||||
				break
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n]
 | 
			
		||||
		sa.Name = string(bytes)
 | 
			
		||||
		return sa, nil
 | 
			
		||||
 | 
			
		||||
	case AF_INET:
 | 
			
		||||
		pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))
 | 
			
		||||
		sa := new(SockaddrInet4)
 | 
			
		||||
		p := (*[2]byte)(unsafe.Pointer(&pp.Port))
 | 
			
		||||
		sa.Port = int(p[0])<<8 + int(p[1])
 | 
			
		||||
		for i := 0; i < len(sa.Addr); i++ {
 | 
			
		||||
			sa.Addr[i] = pp.Addr[i]
 | 
			
		||||
		}
 | 
			
		||||
		return sa, nil
 | 
			
		||||
 | 
			
		||||
	case AF_INET6:
 | 
			
		||||
		pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))
 | 
			
		||||
		sa := new(SockaddrInet6)
 | 
			
		||||
		p := (*[2]byte)(unsafe.Pointer(&pp.Port))
 | 
			
		||||
		sa.Port = int(p[0])<<8 + int(p[1])
 | 
			
		||||
		sa.ZoneId = pp.Scope_id
 | 
			
		||||
		for i := 0; i < len(sa.Addr); i++ {
 | 
			
		||||
			sa.Addr[i] = pp.Addr[i]
 | 
			
		||||
		}
 | 
			
		||||
		return sa, nil
 | 
			
		||||
	}
 | 
			
		||||
	return nil, EAFNOSUPPORT
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Gettimeofday(tv *Timeval) (err error) {
 | 
			
		||||
	err = gettimeofday(tv, nil)
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
 | 
			
		||||
	if raceenabled {
 | 
			
		||||
		raceReleaseMerge(unsafe.Pointer(&ioSync))
 | 
			
		||||
	}
 | 
			
		||||
	return sendfile(outfd, infd, offset, count)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// TODO
 | 
			
		||||
func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
 | 
			
		||||
	return -1, ENOSYS
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//sys	getdirent(fd int, buf []byte) (n int, err error)
 | 
			
		||||
func ReadDirent(fd int, buf []byte) (n int, err error) {
 | 
			
		||||
	return getdirent(fd, buf)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//sys	wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error)
 | 
			
		||||
func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {
 | 
			
		||||
	var status _C_int
 | 
			
		||||
	var r Pid_t
 | 
			
		||||
	err = ERESTART
 | 
			
		||||
	// AIX wait4 may return with ERESTART errno, while the processus is still
 | 
			
		||||
	// active.
 | 
			
		||||
	for err == ERESTART {
 | 
			
		||||
		r, err = wait4(Pid_t(pid), &status, options, rusage)
 | 
			
		||||
	}
 | 
			
		||||
	wpid = int(r)
 | 
			
		||||
	if wstatus != nil {
 | 
			
		||||
		*wstatus = WaitStatus(status)
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Wait
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
type WaitStatus uint32
 | 
			
		||||
 | 
			
		||||
func (w WaitStatus) Stopped() bool { return w&0x40 != 0 }
 | 
			
		||||
func (w WaitStatus) StopSignal() Signal {
 | 
			
		||||
	if !w.Stopped() {
 | 
			
		||||
		return -1
 | 
			
		||||
	}
 | 
			
		||||
	return Signal(w>>8) & 0xFF
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (w WaitStatus) Exited() bool { return w&0xFF == 0 }
 | 
			
		||||
func (w WaitStatus) ExitStatus() int {
 | 
			
		||||
	if !w.Exited() {
 | 
			
		||||
		return -1
 | 
			
		||||
	}
 | 
			
		||||
	return int((w >> 8) & 0xFF)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (w WaitStatus) Signaled() bool { return w&0x40 == 0 && w&0xFF != 0 }
 | 
			
		||||
func (w WaitStatus) Signal() Signal {
 | 
			
		||||
	if !w.Signaled() {
 | 
			
		||||
		return -1
 | 
			
		||||
	}
 | 
			
		||||
	return Signal(w>>16) & 0xFF
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (w WaitStatus) Continued() bool { return w&0x01000000 != 0 }
 | 
			
		||||
 | 
			
		||||
func (w WaitStatus) CoreDump() bool { return w&0x200 != 0 }
 | 
			
		||||
 | 
			
		||||
func (w WaitStatus) TrapCause() int { return -1 }
 | 
			
		||||
 | 
			
		||||
//sys	ioctl(fd int, req uint, arg uintptr) (err error)
 | 
			
		||||
 | 
			
		||||
// ioctl itself should not be exposed directly, but additional get/set
 | 
			
		||||
// functions for specific types are permissible.
 | 
			
		||||
 | 
			
		||||
// IoctlSetInt performs an ioctl operation which sets an integer value
 | 
			
		||||
// on fd, using the specified request number.
 | 
			
		||||
func IoctlSetInt(fd int, req uint, value int) error {
 | 
			
		||||
	return ioctl(fd, req, uintptr(value))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func ioctlSetWinsize(fd int, req uint, value *Winsize) error {
 | 
			
		||||
	return ioctl(fd, req, uintptr(unsafe.Pointer(value)))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func ioctlSetTermios(fd int, req uint, value *Termios) error {
 | 
			
		||||
	return ioctl(fd, req, uintptr(unsafe.Pointer(value)))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// IoctlGetInt performs an ioctl operation which gets an integer value
 | 
			
		||||
// from fd, using the specified request number.
 | 
			
		||||
func IoctlGetInt(fd int, req uint) (int, error) {
 | 
			
		||||
	var value int
 | 
			
		||||
	err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
 | 
			
		||||
	return value, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func IoctlGetWinsize(fd int, req uint) (*Winsize, error) {
 | 
			
		||||
	var value Winsize
 | 
			
		||||
	err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
 | 
			
		||||
	return &value, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func IoctlGetTermios(fd int, req uint) (*Termios, error) {
 | 
			
		||||
	var value Termios
 | 
			
		||||
	err := ioctl(fd, req, uintptr(unsafe.Pointer(&value)))
 | 
			
		||||
	return &value, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// fcntl must never be called with cmd=F_DUP2FD because it doesn't work on AIX
 | 
			
		||||
// There is no way to create a custom fcntl and to keep //sys fcntl easily,
 | 
			
		||||
// Therefore, the programmer must call dup2 instead of fcntl in this case.
 | 
			
		||||
 | 
			
		||||
// FcntlInt performs a fcntl syscall on fd with the provided command and argument.
 | 
			
		||||
//sys	FcntlInt(fd uintptr, cmd int, arg int) (r int,err error) = fcntl
 | 
			
		||||
 | 
			
		||||
// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.
 | 
			
		||||
//sys	FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) = fcntl
 | 
			
		||||
 | 
			
		||||
//sys	fcntl(fd int, cmd int, arg int) (val int, err error)
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Direct access
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
//sys	Acct(path string) (err error)
 | 
			
		||||
//sys	Chdir(path string) (err error)
 | 
			
		||||
//sys	Chroot(path string) (err error)
 | 
			
		||||
//sys	Close(fd int) (err error)
 | 
			
		||||
//sys	Dup(oldfd int) (fd int, err error)
 | 
			
		||||
//sys	Exit(code int)
 | 
			
		||||
//sys	Faccessat(dirfd int, path string, mode uint32, flags int) (err error)
 | 
			
		||||
//sys	Fchdir(fd int) (err error)
 | 
			
		||||
//sys	Fchmod(fd int, mode uint32) (err error)
 | 
			
		||||
//sys	Fchmodat(dirfd int, path string, mode uint32, flags int) (err error)
 | 
			
		||||
//sys	Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
 | 
			
		||||
//sys	Fdatasync(fd int) (err error)
 | 
			
		||||
//sys	Fsync(fd int) (err error)
 | 
			
		||||
// readdir_r
 | 
			
		||||
//sysnb	Getpgid(pid int) (pgid int, err error)
 | 
			
		||||
 | 
			
		||||
//sys	Getpgrp() (pid int)
 | 
			
		||||
 | 
			
		||||
//sysnb	Getpid() (pid int)
 | 
			
		||||
//sysnb	Getppid() (ppid int)
 | 
			
		||||
//sys	Getpriority(which int, who int) (prio int, err error)
 | 
			
		||||
//sysnb	Getrusage(who int, rusage *Rusage) (err error)
 | 
			
		||||
//sysnb	Getsid(pid int) (sid int, err error)
 | 
			
		||||
//sysnb	Kill(pid int, sig Signal) (err error)
 | 
			
		||||
//sys	Klogctl(typ int, buf []byte) (n int, err error) = syslog
 | 
			
		||||
//sys	Mkdir(dirfd int, path string, mode uint32) (err error)
 | 
			
		||||
//sys	Mkdirat(dirfd int, path string, mode uint32) (err error)
 | 
			
		||||
//sys	Mkfifo(path string, mode uint32) (err error)
 | 
			
		||||
//sys	Mknod(path string, mode uint32, dev int) (err error)
 | 
			
		||||
//sys	Mknodat(dirfd int, path string, mode uint32, dev int) (err error)
 | 
			
		||||
//sys	Nanosleep(time *Timespec, leftover *Timespec) (err error)
 | 
			
		||||
//sys   Open(path string, mode int, perm uint32) (fd int, err error) = open64
 | 
			
		||||
//sys   Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error)
 | 
			
		||||
//sys	read(fd int, p []byte) (n int, err error)
 | 
			
		||||
//sys	Readlink(path string, buf []byte) (n int, err error)
 | 
			
		||||
//sys	Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)
 | 
			
		||||
//sys	Setdomainname(p []byte) (err error)
 | 
			
		||||
//sys	Sethostname(p []byte) (err error)
 | 
			
		||||
//sysnb	Setpgid(pid int, pgid int) (err error)
 | 
			
		||||
//sysnb	Setsid() (pid int, err error)
 | 
			
		||||
//sysnb	Settimeofday(tv *Timeval) (err error)
 | 
			
		||||
 | 
			
		||||
//sys	Setuid(uid int) (err error)
 | 
			
		||||
//sys	Setgid(uid int) (err error)
 | 
			
		||||
 | 
			
		||||
//sys	Setpriority(which int, who int, prio int) (err error)
 | 
			
		||||
//sys	Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error)
 | 
			
		||||
//sys	Sync()
 | 
			
		||||
//sysnb	Times(tms *Tms) (ticks uintptr, err error)
 | 
			
		||||
//sysnb	Umask(mask int) (oldmask int)
 | 
			
		||||
//sysnb	Uname(buf *Utsname) (err error)
 | 
			
		||||
//TODO umount
 | 
			
		||||
// //sys	Unmount(target string, flags int) (err error) = umount
 | 
			
		||||
//sys   Unlink(path string) (err error)
 | 
			
		||||
//sys   Unlinkat(dirfd int, path string, flags int) (err error)
 | 
			
		||||
//sys	Ustat(dev int, ubuf *Ustat_t) (err error)
 | 
			
		||||
//sys	write(fd int, p []byte) (n int, err error)
 | 
			
		||||
//sys	readlen(fd int, p *byte, np int) (n int, err error) = read
 | 
			
		||||
//sys	writelen(fd int, p *byte, np int) (n int, err error) = write
 | 
			
		||||
 | 
			
		||||
//sys	Dup2(oldfd int, newfd int) (err error)
 | 
			
		||||
//sys	Fadvise(fd int, offset int64, length int64, advice int) (err error) = posix_fadvise64
 | 
			
		||||
//sys	Fchown(fd int, uid int, gid int) (err error)
 | 
			
		||||
//sys	Fstat(fd int, stat *Stat_t) (err error)
 | 
			
		||||
//sys	Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = fstatat
 | 
			
		||||
//sys	Fstatfs(fd int, buf *Statfs_t) (err error)
 | 
			
		||||
//sys	Ftruncate(fd int, length int64) (err error)
 | 
			
		||||
//sysnb	Getegid() (egid int)
 | 
			
		||||
//sysnb	Geteuid() (euid int)
 | 
			
		||||
//sysnb	Getgid() (gid int)
 | 
			
		||||
//sysnb	Getuid() (uid int)
 | 
			
		||||
//sys	Lchown(path string, uid int, gid int) (err error)
 | 
			
		||||
//sys	Listen(s int, n int) (err error)
 | 
			
		||||
//sys	Lstat(path string, stat *Stat_t) (err error)
 | 
			
		||||
//sys	Pause() (err error)
 | 
			
		||||
//sys	Pread(fd int, p []byte, offset int64) (n int, err error) = pread64
 | 
			
		||||
//sys	Pwrite(fd int, p []byte, offset int64) (n int, err error) = pwrite64
 | 
			
		||||
//TODO Select
 | 
			
		||||
// //sys	Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)
 | 
			
		||||
//sys	Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error)
 | 
			
		||||
//sysnb	Setregid(rgid int, egid int) (err error)
 | 
			
		||||
//sysnb	Setreuid(ruid int, euid int) (err error)
 | 
			
		||||
//sys	Shutdown(fd int, how int) (err error)
 | 
			
		||||
//sys	Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)
 | 
			
		||||
//sys	Stat(path string, stat *Stat_t) (err error)
 | 
			
		||||
//sys	Statfs(path string, buf *Statfs_t) (err error)
 | 
			
		||||
//sys	Truncate(path string, length int64) (err error)
 | 
			
		||||
 | 
			
		||||
//sys	bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
 | 
			
		||||
//sys	connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)
 | 
			
		||||
//sysnb	getgroups(n int, list *_Gid_t) (nn int, err error)
 | 
			
		||||
//sysnb	setgroups(n int, list *_Gid_t) (err error)
 | 
			
		||||
//sys	getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)
 | 
			
		||||
//sys	setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)
 | 
			
		||||
//sysnb	socket(domain int, typ int, proto int) (fd int, err error)
 | 
			
		||||
//sysnb	socketpair(domain int, typ int, proto int, fd *[2]int32) (err error)
 | 
			
		||||
//sysnb	getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
 | 
			
		||||
//sysnb	getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)
 | 
			
		||||
//sys	recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)
 | 
			
		||||
//sys	sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)
 | 
			
		||||
//sys	recvmsg(s int, msg *Msghdr, flags int) (n int, err error)
 | 
			
		||||
//sys	sendmsg(s int, msg *Msghdr, flags int) (n int, err error)
 | 
			
		||||
 | 
			
		||||
//sys	munmap(addr uintptr, length uintptr) (err error)
 | 
			
		||||
 | 
			
		||||
var mapper = &mmapper{
 | 
			
		||||
	active: make(map[*byte][]byte),
 | 
			
		||||
	mmap:   mmap,
 | 
			
		||||
	munmap: munmap,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {
 | 
			
		||||
	return mapper.Mmap(fd, offset, length, prot, flags)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Munmap(b []byte) (err error) {
 | 
			
		||||
	return mapper.Munmap(b)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//sys	Madvise(b []byte, advice int) (err error)
 | 
			
		||||
//sys	Mprotect(b []byte, prot int) (err error)
 | 
			
		||||
//sys	Mlock(b []byte) (err error)
 | 
			
		||||
//sys	Mlockall(flags int) (err error)
 | 
			
		||||
//sys	Msync(b []byte, flags int) (err error)
 | 
			
		||||
//sys	Munlock(b []byte) (err error)
 | 
			
		||||
//sys	Munlockall() (err error)
 | 
			
		||||
 | 
			
		||||
//sysnb pipe(p *[2]_C_int) (err error)
 | 
			
		||||
 | 
			
		||||
func Pipe(p []int) (err error) {
 | 
			
		||||
	if len(p) != 2 {
 | 
			
		||||
		return EINVAL
 | 
			
		||||
	}
 | 
			
		||||
	var pp [2]_C_int
 | 
			
		||||
	err = pipe(&pp)
 | 
			
		||||
	p[0] = int(pp[0])
 | 
			
		||||
	p[1] = int(pp[1])
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//sys	poll(fds *PollFd, nfds int, timeout int) (n int, err error)
 | 
			
		||||
 | 
			
		||||
func Poll(fds []PollFd, timeout int) (n int, err error) {
 | 
			
		||||
	if len(fds) == 0 {
 | 
			
		||||
		return poll(nil, 0, timeout)
 | 
			
		||||
	}
 | 
			
		||||
	return poll(&fds[0], len(fds), timeout)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//sys	gettimeofday(tv *Timeval, tzp *Timezone) (err error)
 | 
			
		||||
//sysnb	Time(t *Time_t) (tt Time_t, err error)
 | 
			
		||||
//sys	Utime(path string, buf *Utimbuf) (err error)
 | 
			
		||||
							
								
								
									
										34
									
								
								vendor/golang.org/x/sys/unix/syscall_aix_ppc.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								vendor/golang.org/x/sys/unix/syscall_aix_ppc.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
			
		||||
// 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
 | 
			
		||||
 | 
			
		||||
package unix
 | 
			
		||||
 | 
			
		||||
//sysnb	Getrlimit(resource int, rlim *Rlimit) (err error) = getrlimit64
 | 
			
		||||
//sysnb	Setrlimit(resource int, rlim *Rlimit) (err error) = setrlimit64
 | 
			
		||||
//sys	Seek(fd int, offset int64, whence int) (off int64, err error) = lseek64
 | 
			
		||||
 | 
			
		||||
//sys	mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)
 | 
			
		||||
 | 
			
		||||
func setTimespec(sec, nsec int64) Timespec {
 | 
			
		||||
	return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func setTimeval(sec, usec int64) Timeval {
 | 
			
		||||
	return Timeval{Sec: int32(sec), Usec: int32(usec)}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (iov *Iovec) SetLen(length int) {
 | 
			
		||||
	iov.Len = uint32(length)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (msghdr *Msghdr) SetControllen(length int) {
 | 
			
		||||
	msghdr.Controllen = uint32(length)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (cmsg *Cmsghdr) SetLen(length int) {
 | 
			
		||||
	cmsg.Len = uint32(length)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
			
		||||
// 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
 | 
			
		||||
 | 
			
		||||
package unix
 | 
			
		||||
 | 
			
		||||
//sysnb	Getrlimit(resource int, rlim *Rlimit) (err error)
 | 
			
		||||
//sysnb	Setrlimit(resource int, rlim *Rlimit) (err error)
 | 
			
		||||
//sys	Seek(fd int, offset int64, whence int) (off int64, err error) = lseek
 | 
			
		||||
 | 
			
		||||
//sys	mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) = mmap64
 | 
			
		||||
 | 
			
		||||
func setTimespec(sec, nsec int64) Timespec {
 | 
			
		||||
	return Timespec{Sec: sec, Nsec: nsec}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func setTimeval(sec, usec int64) Timeval {
 | 
			
		||||
	return Timeval{Sec: int64(sec), Usec: int32(usec)}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (iov *Iovec) SetLen(length int) {
 | 
			
		||||
	iov.Len = uint64(length)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (msghdr *Msghdr) SetControllen(length int) {
 | 
			
		||||
	msghdr.Controllen = uint32(length)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (cmsg *Cmsghdr) SetLen(length int) {
 | 
			
		||||
	cmsg.Len = uint32(length)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										68
									
								
								vendor/golang.org/x/sys/unix/syscall_bsd.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										68
									
								
								vendor/golang.org/x/sys/unix/syscall_bsd.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -206,7 +206,7 @@ func (sa *SockaddrDatalink) sockaddr() (unsafe.Pointer, _Socklen, error) {
 | 
			
		||||
	return unsafe.Pointer(&sa.raw), SizeofSockaddrDatalink, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func anyToSockaddr(rsa *RawSockaddrAny) (Sockaddr, error) {
 | 
			
		||||
func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
 | 
			
		||||
	switch rsa.Addr.Family {
 | 
			
		||||
	case AF_LINK:
 | 
			
		||||
		pp := (*RawSockaddrDatalink)(unsafe.Pointer(rsa))
 | 
			
		||||
@@ -286,7 +286,7 @@ func Accept(fd int) (nfd int, sa Sockaddr, err error) {
 | 
			
		||||
		Close(nfd)
 | 
			
		||||
		return 0, nil, ECONNABORTED
 | 
			
		||||
	}
 | 
			
		||||
	sa, err = anyToSockaddr(&rsa)
 | 
			
		||||
	sa, err = anyToSockaddr(fd, &rsa)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		Close(nfd)
 | 
			
		||||
		nfd = 0
 | 
			
		||||
@@ -306,50 +306,21 @@ func Getsockname(fd int) (sa Sockaddr, err error) {
 | 
			
		||||
		rsa.Addr.Family = AF_UNIX
 | 
			
		||||
		rsa.Addr.Len = SizeofSockaddrUnix
 | 
			
		||||
	}
 | 
			
		||||
	return anyToSockaddr(&rsa)
 | 
			
		||||
	return anyToSockaddr(fd, &rsa)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error)
 | 
			
		||||
 | 
			
		||||
func GetsockoptByte(fd, level, opt int) (value byte, err error) {
 | 
			
		||||
	var n byte
 | 
			
		||||
	vallen := _Socklen(1)
 | 
			
		||||
	err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)
 | 
			
		||||
	return n, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func GetsockoptInet4Addr(fd, level, opt int) (value [4]byte, err error) {
 | 
			
		||||
	vallen := _Socklen(4)
 | 
			
		||||
	err = getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)
 | 
			
		||||
	return value, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func GetsockoptIPMreq(fd, level, opt int) (*IPMreq, error) {
 | 
			
		||||
	var value IPMreq
 | 
			
		||||
	vallen := _Socklen(SizeofIPMreq)
 | 
			
		||||
	err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
 | 
			
		||||
	return &value, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func GetsockoptIPv6Mreq(fd, level, opt int) (*IPv6Mreq, error) {
 | 
			
		||||
	var value IPv6Mreq
 | 
			
		||||
	vallen := _Socklen(SizeofIPv6Mreq)
 | 
			
		||||
	err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
 | 
			
		||||
	return &value, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) {
 | 
			
		||||
	var value IPv6MTUInfo
 | 
			
		||||
	vallen := _Socklen(SizeofIPv6MTUInfo)
 | 
			
		||||
	err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
 | 
			
		||||
	return &value, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func GetsockoptICMPv6Filter(fd, level, opt int) (*ICMPv6Filter, error) {
 | 
			
		||||
	var value ICMPv6Filter
 | 
			
		||||
	vallen := _Socklen(SizeofICMPv6Filter)
 | 
			
		||||
	err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
 | 
			
		||||
	return &value, err
 | 
			
		||||
// GetsockoptString returns the string value of the socket option opt for the
 | 
			
		||||
// socket associated with fd at the given socket level.
 | 
			
		||||
func GetsockoptString(fd, level, opt int) (string, error) {
 | 
			
		||||
	buf := make([]byte, 256)
 | 
			
		||||
	vallen := _Socklen(len(buf))
 | 
			
		||||
	err := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return "", err
 | 
			
		||||
	}
 | 
			
		||||
	return string(buf[:vallen-1]), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//sys   recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)
 | 
			
		||||
@@ -385,7 +356,7 @@ func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from
 | 
			
		||||
	recvflags = int(msg.Flags)
 | 
			
		||||
	// source address is only specified if the socket is unconnected
 | 
			
		||||
	if rsa.Addr.Family != AF_UNSPEC {
 | 
			
		||||
		from, err = anyToSockaddr(&rsa)
 | 
			
		||||
		from, err = anyToSockaddr(fd, &rsa)
 | 
			
		||||
	}
 | 
			
		||||
	return
 | 
			
		||||
}
 | 
			
		||||
@@ -570,7 +541,12 @@ func UtimesNano(path string, ts []Timespec) error {
 | 
			
		||||
	if len(ts) != 2 {
 | 
			
		||||
		return EINVAL
 | 
			
		||||
	}
 | 
			
		||||
	err := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)
 | 
			
		||||
	// Darwin setattrlist can set nanosecond timestamps
 | 
			
		||||
	err := setattrlistTimes(path, ts, 0)
 | 
			
		||||
	if err != ENOSYS {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	err = utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)
 | 
			
		||||
	if err != ENOSYS {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
@@ -590,6 +566,10 @@ func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {
 | 
			
		||||
	if len(ts) != 2 {
 | 
			
		||||
		return EINVAL
 | 
			
		||||
	}
 | 
			
		||||
	err := setattrlistTimes(path, ts, flags)
 | 
			
		||||
	if err != ENOSYS {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user