mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-29 19:52:24 -05:00 
			
		
		
		
	[chore]: Bump github.com/miekg/dns from 1.1.50 to 1.1.51 (#1566)
Bumps [github.com/miekg/dns](https://github.com/miekg/dns) from 1.1.50 to 1.1.51. - [Release notes](https://github.com/miekg/dns/releases) - [Changelog](https://github.com/miekg/dns/blob/master/Makefile.release) - [Commits](https://github.com/miekg/dns/compare/v1.1.50...v1.1.51) --- updated-dependencies: - dependency-name: github.com/miekg/dns dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This commit is contained in:
		
					parent
					
						
							
								6c2bd141f7
							
						
					
				
			
			
				commit
				
					
						8696a8cdf0
					
				
			
		
					 58 changed files with 1019 additions and 168 deletions
				
			
		
							
								
								
									
										6
									
								
								go.mod
									
										
									
									
									
								
							
							
						
						
									
										6
									
								
								go.mod
									
										
									
									
									
								
							|  | @ -34,7 +34,7 @@ require ( | ||||||
| 	github.com/jackc/pgconn v1.13.0 | 	github.com/jackc/pgconn v1.13.0 | ||||||
| 	github.com/jackc/pgx/v4 v4.17.2 | 	github.com/jackc/pgx/v4 v4.17.2 | ||||||
| 	github.com/microcosm-cc/bluemonday v1.0.22 | 	github.com/microcosm-cc/bluemonday v1.0.22 | ||||||
| 	github.com/miekg/dns v1.1.50 | 	github.com/miekg/dns v1.1.51 | ||||||
| 	github.com/minio/minio-go/v7 v7.0.49 | 	github.com/minio/minio-go/v7 v7.0.49 | ||||||
| 	github.com/mitchellh/mapstructure v1.5.0 | 	github.com/mitchellh/mapstructure v1.5.0 | ||||||
| 	github.com/oklog/ulid v1.3.1 | 	github.com/oklog/ulid v1.3.1 | ||||||
|  | @ -148,9 +148,9 @@ require ( | ||||||
| 	github.com/vmihailenco/msgpack/v5 v5.3.5 // indirect | 	github.com/vmihailenco/msgpack/v5 v5.3.5 // indirect | ||||||
| 	github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect | 	github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect | ||||||
| 	golang.org/x/arch v0.0.0-20210923205945-b76863e36670 // indirect | 	golang.org/x/arch v0.0.0-20210923205945-b76863e36670 // indirect | ||||||
| 	golang.org/x/mod v0.6.0-dev.0.20220907135952-02c991387e35 // indirect | 	golang.org/x/mod v0.7.0 // indirect | ||||||
| 	golang.org/x/sys v0.5.0 // indirect | 	golang.org/x/sys v0.5.0 // indirect | ||||||
| 	golang.org/x/tools v0.1.12 // indirect | 	golang.org/x/tools v0.3.0 // indirect | ||||||
| 	google.golang.org/appengine v1.6.7 // indirect | 	google.golang.org/appengine v1.6.7 // indirect | ||||||
| 	google.golang.org/protobuf v1.28.1 // indirect | 	google.golang.org/protobuf v1.28.1 // indirect | ||||||
| 	gopkg.in/ini.v1 v1.67.0 // indirect | 	gopkg.in/ini.v1 v1.67.0 // indirect | ||||||
|  |  | ||||||
							
								
								
									
										23
									
								
								go.sum
									
										
									
									
									
								
							
							
						
						
									
										23
									
								
								go.sum
									
										
									
									
									
								
							|  | @ -440,8 +440,8 @@ github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/ | ||||||
| github.com/mattn/go-sqlite3 v2.0.3+incompatible h1:gXHsfypPkaMZrKbD5209QV9jbUTJKjyR5WD3HYQSd+U= | github.com/mattn/go-sqlite3 v2.0.3+incompatible h1:gXHsfypPkaMZrKbD5209QV9jbUTJKjyR5WD3HYQSd+U= | ||||||
| github.com/microcosm-cc/bluemonday v1.0.22 h1:p2tT7RNzRdCi0qmwxG+HbqD6ILkmwter1ZwVZn1oTxA= | github.com/microcosm-cc/bluemonday v1.0.22 h1:p2tT7RNzRdCi0qmwxG+HbqD6ILkmwter1ZwVZn1oTxA= | ||||||
| github.com/microcosm-cc/bluemonday v1.0.22/go.mod h1:ytNkv4RrDrLJ2pqlsSI46O6IVXmZOBBD4SaJyDwwTkM= | github.com/microcosm-cc/bluemonday v1.0.22/go.mod h1:ytNkv4RrDrLJ2pqlsSI46O6IVXmZOBBD4SaJyDwwTkM= | ||||||
| github.com/miekg/dns v1.1.50 h1:DQUfb9uc6smULcREF09Uc+/Gd46YWqJd5DbpPE9xkcA= | github.com/miekg/dns v1.1.51 h1:0+Xg7vObnhrz/4ZCZcZh7zPXlmU0aveS2HDBd0m0qSo= | ||||||
| github.com/miekg/dns v1.1.50/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= | github.com/miekg/dns v1.1.51/go.mod h1:2Z9d3CP1LQWihRZUf29mQ19yDThaI4DAYzte2CaQW5c= | ||||||
| github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34= | github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34= | ||||||
| github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM= | github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM= | ||||||
| github.com/minio/minio-go/v7 v7.0.49 h1:dE5DfOtnXMXCjr/HWI6zN9vCrY6Sv666qhhiwUMvGV4= | github.com/minio/minio-go/v7 v7.0.49 h1:dE5DfOtnXMXCjr/HWI6zN9vCrY6Sv666qhhiwUMvGV4= | ||||||
|  | @ -619,7 +619,6 @@ github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de | ||||||
| github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | ||||||
| github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | ||||||
| github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | ||||||
| github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= |  | ||||||
| github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= | github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= | ||||||
| github.com/yuin/goldmark v1.5.4 h1:2uY/xC0roWy8IBEGLgB1ywIoEJFGmRrX21YQcvGZzjU= | github.com/yuin/goldmark v1.5.4 h1:2uY/xC0roWy8IBEGLgB1ywIoEJFGmRrX21YQcvGZzjU= | ||||||
| github.com/yuin/goldmark v1.5.4/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= | github.com/yuin/goldmark v1.5.4/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= | ||||||
|  | @ -704,10 +703,9 @@ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= | ||||||
| golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= | golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= | ||||||
| golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= | golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= | ||||||
| golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= | golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= | ||||||
| golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= |  | ||||||
| golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= | golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= | ||||||
| golang.org/x/mod v0.6.0-dev.0.20220907135952-02c991387e35 h1:CZP0Rbk/s1EIiUMx5DS2MhK2ct52xpQxqddVD0FmF+o= | golang.org/x/mod v0.7.0 h1:LapD9S96VoQRhi/GrNTqeBJFrUjs5UHCAtTlgwA5oZA= | ||||||
| golang.org/x/mod v0.6.0-dev.0.20220907135952-02c991387e35/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= | golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= | ||||||
| golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | ||||||
| golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | ||||||
| golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | ||||||
|  | @ -743,10 +741,9 @@ golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwY | ||||||
| golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= | golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= | ||||||
| golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= | golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= | ||||||
| golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= | golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= | ||||||
| golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= |  | ||||||
| golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= |  | ||||||
| golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= | golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= | ||||||
| golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= | golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= | ||||||
|  | golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= | ||||||
| golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= | golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= | ||||||
| golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= | golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= | ||||||
| golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= | golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= | ||||||
|  | @ -777,6 +774,7 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ | ||||||
| golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||||||
| golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||||||
| golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= | golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= | ||||||
|  | golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||||||
| golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | ||||||
| golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | ||||||
| golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | ||||||
|  | @ -823,10 +821,8 @@ golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7w | ||||||
| golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
| golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
| golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
| golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= |  | ||||||
| golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
| golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
| golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= |  | ||||||
| golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||||
| golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||||
| golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||||
|  | @ -838,12 +834,14 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc | ||||||
| golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||||
| golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||||
| golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||||
|  | golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||||
| golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||||
| golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= | golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= | ||||||
| golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||||
| golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= | golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= | ||||||
| golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= | golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= | ||||||
| golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= | golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= | ||||||
|  | golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= | ||||||
| golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= | golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= | ||||||
| golang.org/x/term v0.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY= | golang.org/x/term v0.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY= | ||||||
| golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | ||||||
|  | @ -854,6 +852,7 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | ||||||
| golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | ||||||
| golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | ||||||
| golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= | golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= | ||||||
|  | golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= | ||||||
| golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= | golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= | ||||||
| golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= | golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= | ||||||
| golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= | golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= | ||||||
|  | @ -915,9 +914,9 @@ golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4f | ||||||
| golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= | golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= | ||||||
| golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= | golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= | ||||||
| golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= | golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= | ||||||
| golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= |  | ||||||
| golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU= |  | ||||||
| golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= | golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= | ||||||
|  | golang.org/x/tools v0.3.0 h1:SrNbZl6ECOS1qFzgTdQfWXZM9XBkiA6tkFrH9YSTPHM= | ||||||
|  | golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= | ||||||
| golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||||
| golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||||
| golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||||
|  |  | ||||||
							
								
								
									
										49
									
								
								vendor/github.com/miekg/dns/LICENSE
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										49
									
								
								vendor/github.com/miekg/dns/LICENSE
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -1,30 +1,29 @@ | ||||||
| Copyright (c) 2009 The Go Authors. All rights reserved. | BSD 3-Clause License | ||||||
|  | 
 | ||||||
|  | Copyright (c) 2009, The Go Authors. Extensions copyright (c) 2011, Miek Gieben.  | ||||||
|  | All rights reserved. | ||||||
| 
 | 
 | ||||||
| Redistribution and use in source and binary forms, with or without | Redistribution and use in source and binary forms, with or without | ||||||
| modification, are permitted provided that the following conditions are | modification, are permitted provided that the following conditions are met: | ||||||
| met: |  | ||||||
| 
 | 
 | ||||||
|    * Redistributions of source code must retain the above copyright | 1. Redistributions of source code must retain the above copyright notice, this | ||||||
| notice, this list of conditions and the following disclaimer. |    list of conditions and the following disclaimer. | ||||||
|    * Redistributions in binary form must reproduce the above |  | ||||||
| copyright notice, this list of conditions and the following disclaimer |  | ||||||
| in the documentation and/or other materials provided with the |  | ||||||
| distribution. |  | ||||||
|    * Neither the name of Google Inc. nor the names of its |  | ||||||
| contributors may be used to endorse or promote products derived from |  | ||||||
| this software without specific prior written permission. |  | ||||||
| 
 | 
 | ||||||
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | 2. Redistributions in binary form must reproduce the above copyright notice, | ||||||
| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |    this list of conditions and the following disclaimer in the documentation | ||||||
| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |    and/or other materials provided with the distribution. | ||||||
| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | 
 | ||||||
| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | 3. Neither the name of the copyright holder nor the names of its | ||||||
| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |    contributors may be used to endorse or promote products derived from | ||||||
| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |    this software without specific prior written permission. | ||||||
| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 
 | ||||||
| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||||||
| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||||||
|  | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||||
|  | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE | ||||||
|  | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||||||
|  | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||||||
|  | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | ||||||
|  | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | ||||||
|  | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||||
| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||||
| 
 |  | ||||||
| As this is fork of the official Go code the same license applies. |  | ||||||
| Extensions of the original work are copyright (c) 2011 Miek Gieben |  | ||||||
|  |  | ||||||
							
								
								
									
										6
									
								
								vendor/github.com/miekg/dns/README.md
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/github.com/miekg/dns/README.md
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -77,6 +77,10 @@ A not-so-up-to-date-list-that-may-be-actually-current: | ||||||
| * https://ping.sx/dig | * https://ping.sx/dig | ||||||
| * https://fleetdeck.io/ | * https://fleetdeck.io/ | ||||||
| * https://github.com/markdingo/autoreverse | * https://github.com/markdingo/autoreverse | ||||||
|  | * https://github.com/slackhq/nebula | ||||||
|  | * https://github.com/dnschecktool/dow-proxy | ||||||
|  | * https://dnscheck.tools/ | ||||||
|  | * https://github.com/egbakou/domainverifier | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| Send pull request if you want to be listed here. | Send pull request if you want to be listed here. | ||||||
|  | @ -140,6 +144,7 @@ Example programs can be found in the `github.com/miekg/exdns` repository. | ||||||
| * 340{1,2,3} - NAPTR record | * 340{1,2,3} - NAPTR record | ||||||
| * 3445 - Limiting the scope of (DNS)KEY | * 3445 - Limiting the scope of (DNS)KEY | ||||||
| * 3597 - Unknown RRs | * 3597 - Unknown RRs | ||||||
|  | * 4025 - A Method for Storing IPsec Keying Material in DNS | ||||||
| * 403{3,4,5} - DNSSEC + validation functions | * 403{3,4,5} - DNSSEC + validation functions | ||||||
| * 4255 - SSHFP record | * 4255 - SSHFP record | ||||||
| * 4343 - Case insensitivity | * 4343 - Case insensitivity | ||||||
|  | @ -175,6 +180,7 @@ Example programs can be found in the `github.com/miekg/exdns` repository. | ||||||
| * 8080 - EdDSA for DNSSEC | * 8080 - EdDSA for DNSSEC | ||||||
| * 8499 - DNS Terminology | * 8499 - DNS Terminology | ||||||
| * 8659 - DNS Certification Authority Authorization (CAA) Resource Record | * 8659 - DNS Certification Authority Authorization (CAA) Resource Record | ||||||
|  | * 8777 - DNS Reverse IP Automatic Multicast Tunneling (AMT) Discovery | ||||||
| * 8914 - Extended DNS Errors | * 8914 - Extended DNS Errors | ||||||
| * 8976 - Message Digest for DNS Zones (ZONEMD RR) | * 8976 - Message Digest for DNS Zones (ZONEMD RR) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										1
									
								
								vendor/github.com/miekg/dns/acceptfunc.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/miekg/dns/acceptfunc.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -19,7 +19,6 @@ type MsgAcceptFunc func(dh Header) MsgAcceptAction | ||||||
| // * has more than 0 RRs in the Authority section | // * has more than 0 RRs in the Authority section | ||||||
| // | // | ||||||
| // * has more than 2 RRs in the Additional section | // * has more than 2 RRs in the Additional section | ||||||
| // |  | ||||||
| var DefaultMsgAcceptFunc MsgAcceptFunc = defaultMsgAcceptFunc | var DefaultMsgAcceptFunc MsgAcceptFunc = defaultMsgAcceptFunc | ||||||
| 
 | 
 | ||||||
| // MsgAcceptAction represents the action to be taken. | // MsgAcceptAction represents the action to be taken. | ||||||
|  |  | ||||||
							
								
								
									
										5
									
								
								vendor/github.com/miekg/dns/client.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/github.com/miekg/dns/client.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -185,7 +185,7 @@ func (c *Client) Exchange(m *Msg, address string) (r *Msg, rtt time.Duration, er | ||||||
| // that entails when using "tcp" and especially "tcp-tls" clients. | // that entails when using "tcp" and especially "tcp-tls" clients. | ||||||
| // | // | ||||||
| // When the singleflight is set for this client the context is _not_ forwarded to the (shared) exchange, to | // When the singleflight is set for this client the context is _not_ forwarded to the (shared) exchange, to | ||||||
| // prevent one cancelation from canceling all outstanding requests. | // prevent one cancellation from canceling all outstanding requests. | ||||||
| func (c *Client) ExchangeWithConn(m *Msg, conn *Conn) (r *Msg, rtt time.Duration, err error) { | func (c *Client) ExchangeWithConn(m *Msg, conn *Conn) (r *Msg, rtt time.Duration, err error) { | ||||||
| 	return c.exchangeWithConnContext(context.Background(), m, conn) | 	return c.exchangeWithConnContext(context.Background(), m, conn) | ||||||
| } | } | ||||||
|  | @ -198,7 +198,7 @@ func (c *Client) exchangeWithConnContext(ctx context.Context, m *Msg, conn *Conn | ||||||
| 	q := m.Question[0] | 	q := m.Question[0] | ||||||
| 	key := fmt.Sprintf("%s:%d:%d", q.Name, q.Qtype, q.Qclass) | 	key := fmt.Sprintf("%s:%d:%d", q.Name, q.Qtype, q.Qclass) | ||||||
| 	r, rtt, err, shared := c.group.Do(key, func() (*Msg, time.Duration, error) { | 	r, rtt, err, shared := c.group.Do(key, func() (*Msg, time.Duration, error) { | ||||||
| 		// When we're doing singleflight we don't want one context cancelation, cancel _all_ outstanding queries. | 		// When we're doing singleflight we don't want one context cancellation, cancel _all_ outstanding queries. | ||||||
| 		// Hence we ignore the context and use Background(). | 		// Hence we ignore the context and use Background(). | ||||||
| 		return c.exchangeContext(context.Background(), m, conn) | 		return c.exchangeContext(context.Background(), m, conn) | ||||||
| 	}) | 	}) | ||||||
|  | @ -431,7 +431,6 @@ func ExchangeContext(ctx context.Context, m *Msg, a string) (r *Msg, err error) | ||||||
| //	co.WriteMsg(m) | //	co.WriteMsg(m) | ||||||
| //	in, _  := co.ReadMsg() | //	in, _  := co.ReadMsg() | ||||||
| //	co.Close() | //	co.Close() | ||||||
| // |  | ||||||
| func ExchangeConn(c net.Conn, m *Msg) (r *Msg, err error) { | func ExchangeConn(c net.Conn, m *Msg) (r *Msg, err error) { | ||||||
| 	println("dns: ExchangeConn: this function is deprecated") | 	println("dns: ExchangeConn: this function is deprecated") | ||||||
| 	co := new(Conn) | 	co := new(Conn) | ||||||
|  |  | ||||||
							
								
								
									
										14
									
								
								vendor/github.com/miekg/dns/doc.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								vendor/github.com/miekg/dns/doc.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -72,7 +72,7 @@ and port to use for the connection: | ||||||
| 		Port: 12345, | 		Port: 12345, | ||||||
| 		Zone: "", | 		Zone: "", | ||||||
| 	} | 	} | ||||||
| 	c.Dialer := &net.Dialer{ | 	c.Dialer = &net.Dialer{ | ||||||
| 		Timeout: 200 * time.Millisecond, | 		Timeout: 200 * time.Millisecond, | ||||||
| 		LocalAddr: &laddr, | 		LocalAddr: &laddr, | ||||||
| 	} | 	} | ||||||
|  | @ -96,7 +96,7 @@ the Answer section: | ||||||
| 		// do something with t.Txt | 		// do something with t.Txt | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| Domain Name and TXT Character String Representations | # Domain Name and TXT Character String Representations | ||||||
| 
 | 
 | ||||||
| Both domain names and TXT character strings are converted to presentation form | Both domain names and TXT character strings are converted to presentation form | ||||||
| both when unpacked and when converted to strings. | both when unpacked and when converted to strings. | ||||||
|  | @ -108,7 +108,7 @@ be escaped. Bytes below 32 and above 127 will be converted to \DDD form. | ||||||
| For domain names, in addition to the above rules brackets, periods, spaces, | For domain names, in addition to the above rules brackets, periods, spaces, | ||||||
| semicolons and the at symbol are escaped. | semicolons and the at symbol are escaped. | ||||||
| 
 | 
 | ||||||
| DNSSEC | # DNSSEC | ||||||
| 
 | 
 | ||||||
| DNSSEC (DNS Security Extension) adds a layer of security to the DNS. It uses | DNSSEC (DNS Security Extension) adds a layer of security to the DNS. It uses | ||||||
| public key cryptography to sign resource records. The public keys are stored in | public key cryptography to sign resource records. The public keys are stored in | ||||||
|  | @ -122,7 +122,7 @@ bit to a request. | ||||||
| 
 | 
 | ||||||
| Signature generation, signature verification and key generation are all supported. | Signature generation, signature verification and key generation are all supported. | ||||||
| 
 | 
 | ||||||
| DYNAMIC UPDATES | # DYNAMIC UPDATES | ||||||
| 
 | 
 | ||||||
| Dynamic updates reuses the DNS message format, but renames three of the | Dynamic updates reuses the DNS message format, but renames three of the | ||||||
| sections. Question is Zone, Answer is Prerequisite, Authority is Update, only | sections. Question is Zone, Answer is Prerequisite, Authority is Update, only | ||||||
|  | @ -156,7 +156,7 @@ shows the options you have and what functions to call. | ||||||
| 	 NONE     rrset    rr       Delete an RR from RRset     dns.Remove | 	 NONE     rrset    rr       Delete an RR from RRset     dns.Remove | ||||||
| 	 zone     rrset    rr       Add to an RRset             dns.Insert | 	 zone     rrset    rr       Add to an RRset             dns.Insert | ||||||
| 
 | 
 | ||||||
| TRANSACTION SIGNATURE | # TRANSACTION SIGNATURE | ||||||
| 
 | 
 | ||||||
| An TSIG or transaction signature adds a HMAC TSIG record to each message sent. | An TSIG or transaction signature adds a HMAC TSIG record to each message sent. | ||||||
| The supported algorithms include: HmacSHA1, HmacSHA256 and HmacSHA512. | The supported algorithms include: HmacSHA1, HmacSHA256 and HmacSHA512. | ||||||
|  | @ -239,7 +239,7 @@ Basic use pattern validating and replying to a message that has TSIG set. | ||||||
| 		w.WriteMsg(m) | 		w.WriteMsg(m) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| PRIVATE RRS | # PRIVATE RRS | ||||||
| 
 | 
 | ||||||
| RFC 6895 sets aside a range of type codes for private use. This range is 65,280 | RFC 6895 sets aside a range of type codes for private use. This range is 65,280 | ||||||
| - 65,534 (0xFF00 - 0xFFFE). When experimenting with new Resource Records these | - 65,534 (0xFF00 - 0xFFFE). When experimenting with new Resource Records these | ||||||
|  | @ -248,7 +248,7 @@ can be used, before requesting an official type code from IANA. | ||||||
| See https://miek.nl/2014/september/21/idn-and-private-rr-in-go-dns/ for more | See https://miek.nl/2014/september/21/idn-and-private-rr-in-go-dns/ for more | ||||||
| information. | information. | ||||||
| 
 | 
 | ||||||
| EDNS0 | # EDNS0 | ||||||
| 
 | 
 | ||||||
| EDNS0 is an extension mechanism for the DNS defined in RFC 2671 and updated by | EDNS0 is an extension mechanism for the DNS defined in RFC 2671 and updated by | ||||||
| RFC 6891. It defines a new RR type, the OPT RR, which is then completely | RFC 6891. It defines a new RR type, the OPT RR, which is then completely | ||||||
|  |  | ||||||
							
								
								
									
										9
									
								
								vendor/github.com/miekg/dns/edns.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/github.com/miekg/dns/edns.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -78,7 +78,10 @@ func (rr *OPT) String() string { | ||||||
| 	if rr.Do() { | 	if rr.Do() { | ||||||
| 		s += "flags: do; " | 		s += "flags: do; " | ||||||
| 	} else { | 	} else { | ||||||
| 		s += "flags: ; " | 		s += "flags:; " | ||||||
|  | 	} | ||||||
|  | 	if rr.Hdr.Ttl&0x7FFF != 0 { | ||||||
|  | 		s += fmt.Sprintf("MBZ: 0x%04x, ", rr.Hdr.Ttl&0x7FFF) | ||||||
| 	} | 	} | ||||||
| 	s += "udp: " + strconv.Itoa(int(rr.UDPSize())) | 	s += "udp: " + strconv.Itoa(int(rr.UDPSize())) | ||||||
| 
 | 
 | ||||||
|  | @ -98,6 +101,8 @@ func (rr *OPT) String() string { | ||||||
| 			s += "\n; SUBNET: " + o.String() | 			s += "\n; SUBNET: " + o.String() | ||||||
| 		case *EDNS0_COOKIE: | 		case *EDNS0_COOKIE: | ||||||
| 			s += "\n; COOKIE: " + o.String() | 			s += "\n; COOKIE: " + o.String() | ||||||
|  | 		case *EDNS0_EXPIRE: | ||||||
|  | 			s += "\n; EXPIRE: " + o.String() | ||||||
| 		case *EDNS0_TCP_KEEPALIVE: | 		case *EDNS0_TCP_KEEPALIVE: | ||||||
| 			s += "\n; KEEPALIVE: " + o.String() | 			s += "\n; KEEPALIVE: " + o.String() | ||||||
| 		case *EDNS0_UL: | 		case *EDNS0_UL: | ||||||
|  | @ -258,7 +263,7 @@ func (e *EDNS0_NSID) copy() EDNS0           { return &EDNS0_NSID{e.Code, e.Nsid} | ||||||
| //	o.Hdr.Name = "." | //	o.Hdr.Name = "." | ||||||
| //	o.Hdr.Rrtype = dns.TypeOPT | //	o.Hdr.Rrtype = dns.TypeOPT | ||||||
| //	e := new(dns.EDNS0_SUBNET) | //	e := new(dns.EDNS0_SUBNET) | ||||||
| //	e.Code = dns.EDNS0SUBNET | //	e.Code = dns.EDNS0SUBNET // by default this is filled in through unpacking OPT packets (unpackDataOpt)   | ||||||
| //	e.Family = 1	// 1 for IPv4 source address, 2 for IPv6 | //	e.Family = 1	// 1 for IPv4 source address, 2 for IPv6 | ||||||
| //	e.SourceNetmask = 32	// 32 for IPV4, 128 for IPv6 | //	e.SourceNetmask = 32	// 32 for IPV4, 128 for IPv6 | ||||||
| //	e.SourceScope = 0 | //	e.SourceScope = 0 | ||||||
|  |  | ||||||
							
								
								
									
										1
									
								
								vendor/github.com/miekg/dns/fuzz.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/miekg/dns/fuzz.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -1,3 +1,4 @@ | ||||||
|  | //go:build fuzz | ||||||
| // +build fuzz | // +build fuzz | ||||||
| 
 | 
 | ||||||
| package dns | package dns | ||||||
|  |  | ||||||
							
								
								
									
										2
									
								
								vendor/github.com/miekg/dns/labels.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/miekg/dns/labels.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -122,7 +122,7 @@ func Split(s string) []int { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // NextLabel returns the index of the start of the next label in the | // NextLabel returns the index of the start of the next label in the | ||||||
| // string s starting at offset. | // string s starting at offset. A negative offset will cause a panic. | ||||||
| // The bool end is true when the end of the string has been reached. | // The bool end is true when the end of the string has been reached. | ||||||
| // Also see PrevLabel. | // Also see PrevLabel. | ||||||
| func NextLabel(s string, offset int) (i int, end bool) { | func NextLabel(s string, offset int) (i int, end bool) { | ||||||
|  |  | ||||||
							
								
								
									
										1
									
								
								vendor/github.com/miekg/dns/listen_no_reuseport.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/miekg/dns/listen_no_reuseport.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -1,3 +1,4 @@ | ||||||
|  | //go:build !go1.11 || (!aix && !darwin && !dragonfly && !freebsd && !linux && !netbsd && !openbsd) | ||||||
| // +build !go1.11 !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd | // +build !go1.11 !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd | ||||||
| 
 | 
 | ||||||
| package dns | package dns | ||||||
|  |  | ||||||
							
								
								
									
										1
									
								
								vendor/github.com/miekg/dns/listen_reuseport.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/miekg/dns/listen_reuseport.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -1,3 +1,4 @@ | ||||||
|  | //go:build go1.11 && (aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd) | ||||||
| // +build go1.11 | // +build go1.11 | ||||||
| // +build aix darwin dragonfly freebsd linux netbsd openbsd | // +build aix darwin dragonfly freebsd linux netbsd openbsd | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										4
									
								
								vendor/github.com/miekg/dns/msg.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/miekg/dns/msg.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -680,9 +680,9 @@ func unpackRRslice(l int, msg []byte, off int) (dst1 []RR, off1 int, err error) | ||||||
| 
 | 
 | ||||||
| // Convert a MsgHdr to a string, with dig-like headers: | // Convert a MsgHdr to a string, with dig-like headers: | ||||||
| // | // | ||||||
| //;; opcode: QUERY, status: NOERROR, id: 48404 | // ;; opcode: QUERY, status: NOERROR, id: 48404 | ||||||
| // | // | ||||||
| //;; flags: qr aa rd ra; | // ;; flags: qr aa rd ra; | ||||||
| func (h *MsgHdr) String() string { | func (h *MsgHdr) String() string { | ||||||
| 	if h == nil { | 	if h == nil { | ||||||
| 		return "<nil> MsgHdr" | 		return "<nil> MsgHdr" | ||||||
|  |  | ||||||
							
								
								
									
										34
									
								
								vendor/github.com/miekg/dns/msg_helpers.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										34
									
								
								vendor/github.com/miekg/dns/msg_helpers.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -810,3 +810,37 @@ func unpackDataAplPrefix(msg []byte, off int) (APLPrefix, int, error) { | ||||||
| 		Network:  ipnet, | 		Network:  ipnet, | ||||||
| 	}, off, nil | 	}, off, nil | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | func unpackIPSECGateway(msg []byte, off int, gatewayType uint8) (net.IP, string, int, error) { | ||||||
|  | 	var retAddr net.IP | ||||||
|  | 	var retString string | ||||||
|  | 	var err error | ||||||
|  | 
 | ||||||
|  | 	switch gatewayType { | ||||||
|  | 	case IPSECGatewayNone: // do nothing | ||||||
|  | 	case IPSECGatewayIPv4: | ||||||
|  | 		retAddr, off, err = unpackDataA(msg, off) | ||||||
|  | 	case IPSECGatewayIPv6: | ||||||
|  | 		retAddr, off, err = unpackDataAAAA(msg, off) | ||||||
|  | 	case IPSECGatewayHost: | ||||||
|  | 		retString, off, err = UnpackDomainName(msg, off) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return retAddr, retString, off, err | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func packIPSECGateway(gatewayAddr net.IP, gatewayString string, msg []byte, off int, gatewayType uint8, compression compressionMap, compress bool) (int, error) { | ||||||
|  | 	var err error | ||||||
|  | 
 | ||||||
|  | 	switch gatewayType { | ||||||
|  | 	case IPSECGatewayNone: // do nothing | ||||||
|  | 	case IPSECGatewayIPv4: | ||||||
|  | 		off, err = packDataA(gatewayAddr, msg, off) | ||||||
|  | 	case IPSECGatewayIPv6: | ||||||
|  | 		off, err = packDataAAAA(gatewayAddr, msg, off) | ||||||
|  | 	case IPSECGatewayHost: | ||||||
|  | 		off, err = packDomainName(gatewayString, msg, off, compression, compress) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return off, err | ||||||
|  | } | ||||||
|  |  | ||||||
							
								
								
									
										112
									
								
								vendor/github.com/miekg/dns/scan_rr.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										112
									
								
								vendor/github.com/miekg/dns/scan_rr.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -3,6 +3,7 @@ package dns | ||||||
| import ( | import ( | ||||||
| 	"bytes" | 	"bytes" | ||||||
| 	"encoding/base64" | 	"encoding/base64" | ||||||
|  | 	"errors" | ||||||
| 	"net" | 	"net" | ||||||
| 	"strconv" | 	"strconv" | ||||||
| 	"strings" | 	"strings" | ||||||
|  | @ -1216,6 +1217,117 @@ func (rr *DS) parse(c *zlexer, o string) *ParseError      { return rr.parseDS(c, | ||||||
| func (rr *DLV) parse(c *zlexer, o string) *ParseError     { return rr.parseDS(c, o, "DLV") } | func (rr *DLV) parse(c *zlexer, o string) *ParseError     { return rr.parseDS(c, o, "DLV") } | ||||||
| func (rr *CDS) parse(c *zlexer, o string) *ParseError     { return rr.parseDS(c, o, "CDS") } | func (rr *CDS) parse(c *zlexer, o string) *ParseError     { return rr.parseDS(c, o, "CDS") } | ||||||
| 
 | 
 | ||||||
|  | func (rr *IPSECKEY) parse(c *zlexer, o string) *ParseError { | ||||||
|  | 	l, _ := c.Next() | ||||||
|  | 	num, err := strconv.ParseUint(l.token, 10, 8) | ||||||
|  | 	if err != nil || l.err { | ||||||
|  | 		return &ParseError{"", "bad IPSECKEY value", l} | ||||||
|  | 	} | ||||||
|  | 	rr.Precedence = uint8(num) | ||||||
|  | 	c.Next() // zBlank | ||||||
|  | 
 | ||||||
|  | 	l, _ = c.Next() | ||||||
|  | 	num, err = strconv.ParseUint(l.token, 10, 8) | ||||||
|  | 	if err != nil || l.err { | ||||||
|  | 		return &ParseError{"", "bad IPSECKEY value", l} | ||||||
|  | 	} | ||||||
|  | 	rr.GatewayType = uint8(num) | ||||||
|  | 	c.Next() // zBlank | ||||||
|  | 
 | ||||||
|  | 	l, _ = c.Next() | ||||||
|  | 	num, err = strconv.ParseUint(l.token, 10, 8) | ||||||
|  | 	if err != nil || l.err { | ||||||
|  | 		return &ParseError{"", "bad IPSECKEY value", l} | ||||||
|  | 	} | ||||||
|  | 	rr.Algorithm = uint8(num) | ||||||
|  | 	c.Next() // zBlank | ||||||
|  | 
 | ||||||
|  | 	l, _ = c.Next() | ||||||
|  | 	if l.err { | ||||||
|  | 		return &ParseError{"", "bad IPSECKEY gateway", l} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	rr.GatewayAddr, rr.GatewayHost, err = parseAddrHostUnion(l.token, o, rr.GatewayType) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return &ParseError{"", "AMTRELAY " + err.Error(), l} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	c.Next() // zBlank | ||||||
|  | 
 | ||||||
|  | 	s, pErr := endingToString(c, "bad IPSECKEY PublicKey") | ||||||
|  | 	if pErr != nil { | ||||||
|  | 		return pErr | ||||||
|  | 	} | ||||||
|  | 	rr.PublicKey = s | ||||||
|  | 	return slurpRemainder(c) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (rr *AMTRELAY) parse(c *zlexer, o string) *ParseError { | ||||||
|  | 	l, _ := c.Next() | ||||||
|  | 	num, err := strconv.ParseUint(l.token, 10, 8) | ||||||
|  | 	if err != nil || l.err { | ||||||
|  | 		return &ParseError{"", "bad AMTRELAY value", l} | ||||||
|  | 	} | ||||||
|  | 	rr.Precedence = uint8(num) | ||||||
|  | 	c.Next() // zBlank | ||||||
|  | 
 | ||||||
|  | 	l, _ = c.Next() | ||||||
|  | 	if l.err || !(l.token == "0" || l.token == "1") { | ||||||
|  | 		return &ParseError{"", "bad discovery value", l} | ||||||
|  | 	} | ||||||
|  | 	if l.token == "1" { | ||||||
|  | 		rr.GatewayType = 0x80 | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	c.Next() // zBlank | ||||||
|  | 
 | ||||||
|  | 	l, _ = c.Next() | ||||||
|  | 	num, err = strconv.ParseUint(l.token, 10, 8) | ||||||
|  | 	if err != nil || l.err { | ||||||
|  | 		return &ParseError{"", "bad AMTRELAY value", l} | ||||||
|  | 	} | ||||||
|  | 	rr.GatewayType |= uint8(num) | ||||||
|  | 	c.Next() // zBlank | ||||||
|  | 
 | ||||||
|  | 	l, _ = c.Next() | ||||||
|  | 	if l.err { | ||||||
|  | 		return &ParseError{"", "bad AMTRELAY gateway", l} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	rr.GatewayAddr, rr.GatewayHost, err = parseAddrHostUnion(l.token, o, rr.GatewayType&0x7f) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return &ParseError{"", "AMTRELAY " + err.Error(), l} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return slurpRemainder(c) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // same constants and parsing between IPSECKEY and AMTRELAY | ||||||
|  | func parseAddrHostUnion(token, o string, gatewayType uint8) (addr net.IP, host string, err error) { | ||||||
|  | 	switch gatewayType { | ||||||
|  | 	case IPSECGatewayNone: | ||||||
|  | 		if token != "." { | ||||||
|  | 			return addr, host, errors.New("gateway type none with gateway set") | ||||||
|  | 		} | ||||||
|  | 	case IPSECGatewayIPv4, IPSECGatewayIPv6: | ||||||
|  | 		addr = net.ParseIP(token) | ||||||
|  | 		if addr == nil { | ||||||
|  | 			return addr, host, errors.New("gateway IP invalid") | ||||||
|  | 		} | ||||||
|  | 		if (addr.To4() == nil) == (gatewayType == IPSECGatewayIPv4) { | ||||||
|  | 			return addr, host, errors.New("gateway IP family mismatch") | ||||||
|  | 		} | ||||||
|  | 	case IPSECGatewayHost: | ||||||
|  | 		var ok bool | ||||||
|  | 		host, ok = toAbsoluteName(token, o) | ||||||
|  | 		if !ok { | ||||||
|  | 			return addr, host, errors.New("invalid gateway host") | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return addr, host, nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
| func (rr *RKEY) parse(c *zlexer, o string) *ParseError { | func (rr *RKEY) parse(c *zlexer, o string) *ParseError { | ||||||
| 	l, _ := c.Next() | 	l, _ := c.Next() | ||||||
| 	i, e := strconv.ParseUint(l.token, 10, 16) | 	i, e := strconv.ParseUint(l.token, 10, 16) | ||||||
|  |  | ||||||
							
								
								
									
										2
									
								
								vendor/github.com/miekg/dns/server.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/miekg/dns/server.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -18,7 +18,7 @@ import ( | ||||||
| const maxTCPQueries = 128 | const maxTCPQueries = 128 | ||||||
| 
 | 
 | ||||||
| // aLongTimeAgo is a non-zero time, far in the past, used for | // aLongTimeAgo is a non-zero time, far in the past, used for | ||||||
| // immediate cancelation of network operations. | // immediate cancellation of network operations. | ||||||
| var aLongTimeAgo = time.Unix(1, 0) | var aLongTimeAgo = time.Unix(1, 0) | ||||||
| 
 | 
 | ||||||
| // Handler is implemented by any value that implements ServeDNS. | // Handler is implemented by any value that implements ServeDNS. | ||||||
|  |  | ||||||
							
								
								
									
										2
									
								
								vendor/github.com/miekg/dns/svcb.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/miekg/dns/svcb.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -353,7 +353,7 @@ func (*SVCBAlpn) Key() SVCBKey { return SVCB_ALPN } | ||||||
| func (s *SVCBAlpn) String() string { | func (s *SVCBAlpn) String() string { | ||||||
| 	// An ALPN value is a comma-separated list of values, each of which can be | 	// An ALPN value is a comma-separated list of values, each of which can be | ||||||
| 	// an arbitrary binary value. In order to allow parsing, the comma and | 	// an arbitrary binary value. In order to allow parsing, the comma and | ||||||
| 	// backslash characters are themselves excaped. | 	// backslash characters are themselves escaped. | ||||||
| 	// | 	// | ||||||
| 	// However, this escaping is done in addition to the normal escaping which | 	// However, this escaping is done in addition to the normal escaping which | ||||||
| 	// happens in zone files, meaning that these values must be | 	// happens in zone files, meaning that these values must be | ||||||
|  |  | ||||||
							
								
								
									
										1
									
								
								vendor/github.com/miekg/dns/tools.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/miekg/dns/tools.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -1,3 +1,4 @@ | ||||||
|  | //go:build tools | ||||||
| // +build tools | // +build tools | ||||||
| 
 | 
 | ||||||
| // We include our tool dependencies for `go generate` here to ensure they're | // We include our tool dependencies for `go generate` here to ensure they're | ||||||
|  |  | ||||||
							
								
								
									
										81
									
								
								vendor/github.com/miekg/dns/types.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										81
									
								
								vendor/github.com/miekg/dns/types.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -65,6 +65,7 @@ const ( | ||||||
| 	TypeAPL        uint16 = 42 | 	TypeAPL        uint16 = 42 | ||||||
| 	TypeDS         uint16 = 43 | 	TypeDS         uint16 = 43 | ||||||
| 	TypeSSHFP      uint16 = 44 | 	TypeSSHFP      uint16 = 44 | ||||||
|  | 	TypeIPSECKEY   uint16 = 45 | ||||||
| 	TypeRRSIG      uint16 = 46 | 	TypeRRSIG      uint16 = 46 | ||||||
| 	TypeNSEC       uint16 = 47 | 	TypeNSEC       uint16 = 47 | ||||||
| 	TypeDNSKEY     uint16 = 48 | 	TypeDNSKEY     uint16 = 48 | ||||||
|  | @ -98,6 +99,7 @@ const ( | ||||||
| 	TypeURI        uint16 = 256 | 	TypeURI        uint16 = 256 | ||||||
| 	TypeCAA        uint16 = 257 | 	TypeCAA        uint16 = 257 | ||||||
| 	TypeAVC        uint16 = 258 | 	TypeAVC        uint16 = 258 | ||||||
|  | 	TypeAMTRELAY   uint16 = 260 | ||||||
| 
 | 
 | ||||||
| 	TypeTKEY uint16 = 249 | 	TypeTKEY uint16 = 249 | ||||||
| 	TypeTSIG uint16 = 250 | 	TypeTSIG uint16 = 250 | ||||||
|  | @ -159,6 +161,22 @@ const ( | ||||||
| 	ZoneMDHashAlgSHA512 = 2 | 	ZoneMDHashAlgSHA512 = 2 | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | // Used in IPSEC https://datatracker.ietf.org/doc/html/rfc4025#section-2.3 | ||||||
|  | const ( | ||||||
|  | 	IPSECGatewayNone uint8 = iota | ||||||
|  | 	IPSECGatewayIPv4 | ||||||
|  | 	IPSECGatewayIPv6 | ||||||
|  | 	IPSECGatewayHost | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | // Used in AMTRELAY https://datatracker.ietf.org/doc/html/rfc8777#section-4.2.3 | ||||||
|  | const ( | ||||||
|  | 	AMTRELAYNone = IPSECGatewayNone | ||||||
|  | 	AMTRELAYIPv4 = IPSECGatewayIPv4 | ||||||
|  | 	AMTRELAYIPv6 = IPSECGatewayIPv6 | ||||||
|  | 	AMTRELAYHost = IPSECGatewayHost | ||||||
|  | ) | ||||||
|  | 
 | ||||||
| // Header is the wire format for the DNS packet header. | // Header is the wire format for the DNS packet header. | ||||||
| type Header struct { | type Header struct { | ||||||
| 	Id                                 uint16 | 	Id                                 uint16 | ||||||
|  | @ -994,6 +1012,69 @@ func (rr *DNSKEY) String() string { | ||||||
| 		" " + rr.PublicKey | 		" " + rr.PublicKey | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // IPSECKEY RR. See RFC 4025. | ||||||
|  | type IPSECKEY struct { | ||||||
|  | 	Hdr         RR_Header | ||||||
|  | 	Precedence  uint8 | ||||||
|  | 	GatewayType uint8 | ||||||
|  | 	Algorithm   uint8 | ||||||
|  | 	GatewayAddr net.IP `dns:"-"` // packing/unpacking/parsing/etc handled together with GatewayHost | ||||||
|  | 	GatewayHost string `dns:"ipsechost"` | ||||||
|  | 	PublicKey   string `dns:"base64"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (rr *IPSECKEY) String() string { | ||||||
|  | 	var gateway string | ||||||
|  | 	switch rr.GatewayType { | ||||||
|  | 	case IPSECGatewayIPv4, IPSECGatewayIPv6: | ||||||
|  | 		gateway = rr.GatewayAddr.String() | ||||||
|  | 	case IPSECGatewayHost: | ||||||
|  | 		gateway = rr.GatewayHost | ||||||
|  | 	case IPSECGatewayNone: | ||||||
|  | 		fallthrough | ||||||
|  | 	default: | ||||||
|  | 		gateway = "." | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return rr.Hdr.String() + strconv.Itoa(int(rr.Precedence)) + | ||||||
|  | 		" " + strconv.Itoa(int(rr.GatewayType)) + | ||||||
|  | 		" " + strconv.Itoa(int(rr.Algorithm)) + | ||||||
|  | 		" " + gateway + | ||||||
|  | 		" " + rr.PublicKey | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // AMTRELAY RR. See RFC 8777. | ||||||
|  | type AMTRELAY struct { | ||||||
|  | 	Hdr         RR_Header | ||||||
|  | 	Precedence  uint8 | ||||||
|  | 	GatewayType uint8  // discovery is packed in here at bit 0x80 | ||||||
|  | 	GatewayAddr net.IP `dns:"-"` // packing/unpacking/parsing/etc handled together with GatewayHost | ||||||
|  | 	GatewayHost string `dns:"amtrelayhost"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (rr *AMTRELAY) String() string { | ||||||
|  | 	var gateway string | ||||||
|  | 	switch rr.GatewayType & 0x7f { | ||||||
|  | 	case AMTRELAYIPv4, AMTRELAYIPv6: | ||||||
|  | 		gateway = rr.GatewayAddr.String() | ||||||
|  | 	case AMTRELAYHost: | ||||||
|  | 		gateway = rr.GatewayHost | ||||||
|  | 	case AMTRELAYNone: | ||||||
|  | 		fallthrough | ||||||
|  | 	default: | ||||||
|  | 		gateway = "." | ||||||
|  | 	} | ||||||
|  | 	boolS := "0" | ||||||
|  | 	if rr.GatewayType&0x80 == 0x80 { | ||||||
|  | 		boolS = "1" | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return rr.Hdr.String() + strconv.Itoa(int(rr.Precedence)) + | ||||||
|  | 		" " + boolS + | ||||||
|  | 		" " + strconv.Itoa(int(rr.GatewayType&0x7f)) + | ||||||
|  | 		" " + gateway | ||||||
|  | } | ||||||
|  | 
 | ||||||
| // RKEY RR. See https://www.iana.org/assignments/dns-parameters/RKEY/rkey-completed-template. | // RKEY RR. See https://www.iana.org/assignments/dns-parameters/RKEY/rkey-completed-template. | ||||||
| type RKEY struct { | type RKEY struct { | ||||||
| 	Hdr       RR_Header | 	Hdr       RR_Header | ||||||
|  |  | ||||||
							
								
								
									
										1
									
								
								vendor/github.com/miekg/dns/udp.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/miekg/dns/udp.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -1,3 +1,4 @@ | ||||||
|  | //go:build !windows | ||||||
| // +build !windows | // +build !windows | ||||||
| 
 | 
 | ||||||
| package dns | package dns | ||||||
|  |  | ||||||
							
								
								
									
										1
									
								
								vendor/github.com/miekg/dns/udp_windows.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/miekg/dns/udp_windows.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -1,3 +1,4 @@ | ||||||
|  | //go:build windows | ||||||
| // +build windows | // +build windows | ||||||
| 
 | 
 | ||||||
| package dns | package dns | ||||||
|  |  | ||||||
							
								
								
									
										2
									
								
								vendor/github.com/miekg/dns/version.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/miekg/dns/version.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -3,7 +3,7 @@ package dns | ||||||
| import "fmt" | import "fmt" | ||||||
| 
 | 
 | ||||||
| // Version is current version of this library. | // Version is current version of this library. | ||||||
| var Version = v{1, 1, 50} | var Version = v{1, 1, 51} | ||||||
| 
 | 
 | ||||||
| // v holds the version of this library. | // v holds the version of this library. | ||||||
| type v struct { | type v struct { | ||||||
|  |  | ||||||
							
								
								
									
										1
									
								
								vendor/github.com/miekg/dns/xfr.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/miekg/dns/xfr.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -44,7 +44,6 @@ func (t *Transfer) tsigProvider() TsigProvider { | ||||||
| //	dnscon := &dns.Conn{Conn:con} | //	dnscon := &dns.Conn{Conn:con} | ||||||
| //	transfer = &dns.Transfer{Conn: dnscon} | //	transfer = &dns.Transfer{Conn: dnscon} | ||||||
| //	channel, err := transfer.In(message, master) | //	channel, err := transfer.In(message, master) | ||||||
| // |  | ||||||
| func (t *Transfer) In(q *Msg, a string) (env chan *Envelope, err error) { | func (t *Transfer) In(q *Msg, a string) (env chan *Envelope, err error) { | ||||||
| 	switch q.Question[0].Qtype { | 	switch q.Question[0].Qtype { | ||||||
| 	case TypeAXFR, TypeIXFR: | 	case TypeAXFR, TypeIXFR: | ||||||
|  |  | ||||||
							
								
								
									
										58
									
								
								vendor/github.com/miekg/dns/zduplicate.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										58
									
								
								vendor/github.com/miekg/dns/zduplicate.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -43,6 +43,32 @@ func (r1 *AFSDB) isDuplicate(_r2 RR) bool { | ||||||
| 	return true | 	return true | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | func (r1 *AMTRELAY) isDuplicate(_r2 RR) bool { | ||||||
|  | 	r2, ok := _r2.(*AMTRELAY) | ||||||
|  | 	if !ok { | ||||||
|  | 		return false | ||||||
|  | 	} | ||||||
|  | 	_ = r2 | ||||||
|  | 	if r1.Precedence != r2.Precedence { | ||||||
|  | 		return false | ||||||
|  | 	} | ||||||
|  | 	if r1.GatewayType != r2.GatewayType { | ||||||
|  | 		return false | ||||||
|  | 	} | ||||||
|  | 	switch r1.GatewayType { | ||||||
|  | 	case IPSECGatewayIPv4, IPSECGatewayIPv6: | ||||||
|  | 		if !r1.GatewayAddr.Equal(r2.GatewayAddr) { | ||||||
|  | 			return false | ||||||
|  | 		} | ||||||
|  | 	case IPSECGatewayHost: | ||||||
|  | 		if !isDuplicateName(r1.GatewayHost, r2.GatewayHost) { | ||||||
|  | 			return false | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return true | ||||||
|  | } | ||||||
|  | 
 | ||||||
| func (r1 *ANY) isDuplicate(_r2 RR) bool { | func (r1 *ANY) isDuplicate(_r2 RR) bool { | ||||||
| 	r2, ok := _r2.(*ANY) | 	r2, ok := _r2.(*ANY) | ||||||
| 	if !ok { | 	if !ok { | ||||||
|  | @ -423,6 +449,38 @@ func (r1 *HTTPS) isDuplicate(_r2 RR) bool { | ||||||
| 	return true | 	return true | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | func (r1 *IPSECKEY) isDuplicate(_r2 RR) bool { | ||||||
|  | 	r2, ok := _r2.(*IPSECKEY) | ||||||
|  | 	if !ok { | ||||||
|  | 		return false | ||||||
|  | 	} | ||||||
|  | 	_ = r2 | ||||||
|  | 	if r1.Precedence != r2.Precedence { | ||||||
|  | 		return false | ||||||
|  | 	} | ||||||
|  | 	if r1.GatewayType != r2.GatewayType { | ||||||
|  | 		return false | ||||||
|  | 	} | ||||||
|  | 	if r1.Algorithm != r2.Algorithm { | ||||||
|  | 		return false | ||||||
|  | 	} | ||||||
|  | 	switch r1.GatewayType { | ||||||
|  | 	case IPSECGatewayIPv4, IPSECGatewayIPv6: | ||||||
|  | 		if !r1.GatewayAddr.Equal(r2.GatewayAddr) { | ||||||
|  | 			return false | ||||||
|  | 		} | ||||||
|  | 	case IPSECGatewayHost: | ||||||
|  | 		if !isDuplicateName(r1.GatewayHost, r2.GatewayHost) { | ||||||
|  | 			return false | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	if r1.PublicKey != r2.PublicKey { | ||||||
|  | 		return false | ||||||
|  | 	} | ||||||
|  | 	return true | ||||||
|  | } | ||||||
|  | 
 | ||||||
| func (r1 *KEY) isDuplicate(_r2 RR) bool { | func (r1 *KEY) isDuplicate(_r2 RR) bool { | ||||||
| 	r2, ok := _r2.(*KEY) | 	r2, ok := _r2.(*KEY) | ||||||
| 	if !ok { | 	if !ok { | ||||||
|  |  | ||||||
							
								
								
									
										110
									
								
								vendor/github.com/miekg/dns/zmsg.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										110
									
								
								vendor/github.com/miekg/dns/zmsg.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -32,6 +32,22 @@ func (rr *AFSDB) pack(msg []byte, off int, compression compressionMap, compress | ||||||
| 	return off, nil | 	return off, nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | func (rr *AMTRELAY) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) { | ||||||
|  | 	off, err = packUint8(rr.Precedence, msg, off) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return off, err | ||||||
|  | 	} | ||||||
|  | 	off, err = packUint8(rr.GatewayType, msg, off) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return off, err | ||||||
|  | 	} | ||||||
|  | 	off, err = packIPSECGateway(rr.GatewayAddr, rr.GatewayHost, msg, off, rr.GatewayType, compression, false) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return off, err | ||||||
|  | 	} | ||||||
|  | 	return off, nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
| func (rr *ANY) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) { | func (rr *ANY) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) { | ||||||
| 	return off, nil | 	return off, nil | ||||||
| } | } | ||||||
|  | @ -332,6 +348,30 @@ func (rr *HTTPS) pack(msg []byte, off int, compression compressionMap, compress | ||||||
| 	return off, nil | 	return off, nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | func (rr *IPSECKEY) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) { | ||||||
|  | 	off, err = packUint8(rr.Precedence, msg, off) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return off, err | ||||||
|  | 	} | ||||||
|  | 	off, err = packUint8(rr.GatewayType, msg, off) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return off, err | ||||||
|  | 	} | ||||||
|  | 	off, err = packUint8(rr.Algorithm, msg, off) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return off, err | ||||||
|  | 	} | ||||||
|  | 	off, err = packIPSECGateway(rr.GatewayAddr, rr.GatewayHost, msg, off, rr.GatewayType, compression, false) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return off, err | ||||||
|  | 	} | ||||||
|  | 	off, err = packStringBase64(rr.PublicKey, msg, off) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return off, err | ||||||
|  | 	} | ||||||
|  | 	return off, nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
| func (rr *KEY) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) { | func (rr *KEY) pack(msg []byte, off int, compression compressionMap, compress bool) (off1 int, err error) { | ||||||
| 	off, err = packUint16(rr.Flags, msg, off) | 	off, err = packUint16(rr.Flags, msg, off) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
|  | @ -1180,6 +1220,34 @@ func (rr *AFSDB) unpack(msg []byte, off int) (off1 int, err error) { | ||||||
| 	return off, nil | 	return off, nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | func (rr *AMTRELAY) unpack(msg []byte, off int) (off1 int, err error) { | ||||||
|  | 	rdStart := off | ||||||
|  | 	_ = rdStart | ||||||
|  | 
 | ||||||
|  | 	rr.Precedence, off, err = unpackUint8(msg, off) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return off, err | ||||||
|  | 	} | ||||||
|  | 	if off == len(msg) { | ||||||
|  | 		return off, nil | ||||||
|  | 	} | ||||||
|  | 	rr.GatewayType, off, err = unpackUint8(msg, off) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return off, err | ||||||
|  | 	} | ||||||
|  | 	if off == len(msg) { | ||||||
|  | 		return off, nil | ||||||
|  | 	} | ||||||
|  | 	if off == len(msg) { | ||||||
|  | 		return off, nil | ||||||
|  | 	} | ||||||
|  | 	rr.GatewayAddr, rr.GatewayHost, off, err = unpackIPSECGateway(msg, off, rr.GatewayType) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return off, err | ||||||
|  | 	} | ||||||
|  | 	return off, nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
| func (rr *ANY) unpack(msg []byte, off int) (off1 int, err error) { | func (rr *ANY) unpack(msg []byte, off int) (off1 int, err error) { | ||||||
| 	rdStart := off | 	rdStart := off | ||||||
| 	_ = rdStart | 	_ = rdStart | ||||||
|  | @ -1636,6 +1704,48 @@ func (rr *HTTPS) unpack(msg []byte, off int) (off1 int, err error) { | ||||||
| 	return off, nil | 	return off, nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | func (rr *IPSECKEY) unpack(msg []byte, off int) (off1 int, err error) { | ||||||
|  | 	rdStart := off | ||||||
|  | 	_ = rdStart | ||||||
|  | 
 | ||||||
|  | 	rr.Precedence, off, err = unpackUint8(msg, off) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return off, err | ||||||
|  | 	} | ||||||
|  | 	if off == len(msg) { | ||||||
|  | 		return off, nil | ||||||
|  | 	} | ||||||
|  | 	rr.GatewayType, off, err = unpackUint8(msg, off) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return off, err | ||||||
|  | 	} | ||||||
|  | 	if off == len(msg) { | ||||||
|  | 		return off, nil | ||||||
|  | 	} | ||||||
|  | 	rr.Algorithm, off, err = unpackUint8(msg, off) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return off, err | ||||||
|  | 	} | ||||||
|  | 	if off == len(msg) { | ||||||
|  | 		return off, nil | ||||||
|  | 	} | ||||||
|  | 	if off == len(msg) { | ||||||
|  | 		return off, nil | ||||||
|  | 	} | ||||||
|  | 	rr.GatewayAddr, rr.GatewayHost, off, err = unpackIPSECGateway(msg, off, rr.GatewayType) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return off, err | ||||||
|  | 	} | ||||||
|  | 	if off == len(msg) { | ||||||
|  | 		return off, nil | ||||||
|  | 	} | ||||||
|  | 	rr.PublicKey, off, err = unpackStringBase64(msg, off, rdStart+int(rr.Hdr.Rdlength)) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return off, err | ||||||
|  | 	} | ||||||
|  | 	return off, nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
| func (rr *KEY) unpack(msg []byte, off int) (off1 int, err error) { | func (rr *KEY) unpack(msg []byte, off int) (off1 int, err error) { | ||||||
| 	rdStart := off | 	rdStart := off | ||||||
| 	_ = rdStart | 	_ = rdStart | ||||||
|  |  | ||||||
							
								
								
									
										42
									
								
								vendor/github.com/miekg/dns/ztypes.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										42
									
								
								vendor/github.com/miekg/dns/ztypes.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -12,6 +12,7 @@ var TypeToRR = map[uint16]func() RR{ | ||||||
| 	TypeA:          func() RR { return new(A) }, | 	TypeA:          func() RR { return new(A) }, | ||||||
| 	TypeAAAA:       func() RR { return new(AAAA) }, | 	TypeAAAA:       func() RR { return new(AAAA) }, | ||||||
| 	TypeAFSDB:      func() RR { return new(AFSDB) }, | 	TypeAFSDB:      func() RR { return new(AFSDB) }, | ||||||
|  | 	TypeAMTRELAY:   func() RR { return new(AMTRELAY) }, | ||||||
| 	TypeANY:        func() RR { return new(ANY) }, | 	TypeANY:        func() RR { return new(ANY) }, | ||||||
| 	TypeAPL:        func() RR { return new(APL) }, | 	TypeAPL:        func() RR { return new(APL) }, | ||||||
| 	TypeAVC:        func() RR { return new(AVC) }, | 	TypeAVC:        func() RR { return new(AVC) }, | ||||||
|  | @ -34,6 +35,7 @@ var TypeToRR = map[uint16]func() RR{ | ||||||
| 	TypeHINFO:      func() RR { return new(HINFO) }, | 	TypeHINFO:      func() RR { return new(HINFO) }, | ||||||
| 	TypeHIP:        func() RR { return new(HIP) }, | 	TypeHIP:        func() RR { return new(HIP) }, | ||||||
| 	TypeHTTPS:      func() RR { return new(HTTPS) }, | 	TypeHTTPS:      func() RR { return new(HTTPS) }, | ||||||
|  | 	TypeIPSECKEY:   func() RR { return new(IPSECKEY) }, | ||||||
| 	TypeKEY:        func() RR { return new(KEY) }, | 	TypeKEY:        func() RR { return new(KEY) }, | ||||||
| 	TypeKX:         func() RR { return new(KX) }, | 	TypeKX:         func() RR { return new(KX) }, | ||||||
| 	TypeL32:        func() RR { return new(L32) }, | 	TypeL32:        func() RR { return new(L32) }, | ||||||
|  | @ -90,6 +92,7 @@ var TypeToString = map[uint16]string{ | ||||||
| 	TypeA:          "A", | 	TypeA:          "A", | ||||||
| 	TypeAAAA:       "AAAA", | 	TypeAAAA:       "AAAA", | ||||||
| 	TypeAFSDB:      "AFSDB", | 	TypeAFSDB:      "AFSDB", | ||||||
|  | 	TypeAMTRELAY:   "AMTRELAY", | ||||||
| 	TypeANY:        "ANY", | 	TypeANY:        "ANY", | ||||||
| 	TypeAPL:        "APL", | 	TypeAPL:        "APL", | ||||||
| 	TypeATMA:       "ATMA", | 	TypeATMA:       "ATMA", | ||||||
|  | @ -114,6 +117,7 @@ var TypeToString = map[uint16]string{ | ||||||
| 	TypeHINFO:      "HINFO", | 	TypeHINFO:      "HINFO", | ||||||
| 	TypeHIP:        "HIP", | 	TypeHIP:        "HIP", | ||||||
| 	TypeHTTPS:      "HTTPS", | 	TypeHTTPS:      "HTTPS", | ||||||
|  | 	TypeIPSECKEY:   "IPSECKEY", | ||||||
| 	TypeISDN:       "ISDN", | 	TypeISDN:       "ISDN", | ||||||
| 	TypeIXFR:       "IXFR", | 	TypeIXFR:       "IXFR", | ||||||
| 	TypeKEY:        "KEY", | 	TypeKEY:        "KEY", | ||||||
|  | @ -176,6 +180,7 @@ var TypeToString = map[uint16]string{ | ||||||
| func (rr *A) Header() *RR_Header          { return &rr.Hdr } | func (rr *A) Header() *RR_Header          { return &rr.Hdr } | ||||||
| func (rr *AAAA) Header() *RR_Header       { return &rr.Hdr } | func (rr *AAAA) Header() *RR_Header       { return &rr.Hdr } | ||||||
| func (rr *AFSDB) Header() *RR_Header      { return &rr.Hdr } | func (rr *AFSDB) Header() *RR_Header      { return &rr.Hdr } | ||||||
|  | func (rr *AMTRELAY) Header() *RR_Header   { return &rr.Hdr } | ||||||
| func (rr *ANY) Header() *RR_Header        { return &rr.Hdr } | func (rr *ANY) Header() *RR_Header        { return &rr.Hdr } | ||||||
| func (rr *APL) Header() *RR_Header        { return &rr.Hdr } | func (rr *APL) Header() *RR_Header        { return &rr.Hdr } | ||||||
| func (rr *AVC) Header() *RR_Header        { return &rr.Hdr } | func (rr *AVC) Header() *RR_Header        { return &rr.Hdr } | ||||||
|  | @ -198,6 +203,7 @@ func (rr *GPOS) Header() *RR_Header       { return &rr.Hdr } | ||||||
| func (rr *HINFO) Header() *RR_Header      { return &rr.Hdr } | func (rr *HINFO) Header() *RR_Header      { return &rr.Hdr } | ||||||
| func (rr *HIP) Header() *RR_Header        { return &rr.Hdr } | func (rr *HIP) Header() *RR_Header        { return &rr.Hdr } | ||||||
| func (rr *HTTPS) Header() *RR_Header      { return &rr.Hdr } | func (rr *HTTPS) Header() *RR_Header      { return &rr.Hdr } | ||||||
|  | func (rr *IPSECKEY) Header() *RR_Header   { return &rr.Hdr } | ||||||
| func (rr *KEY) Header() *RR_Header        { return &rr.Hdr } | func (rr *KEY) Header() *RR_Header        { return &rr.Hdr } | ||||||
| func (rr *KX) Header() *RR_Header         { return &rr.Hdr } | func (rr *KX) Header() *RR_Header         { return &rr.Hdr } | ||||||
| func (rr *L32) Header() *RR_Header        { return &rr.Hdr } | func (rr *L32) Header() *RR_Header        { return &rr.Hdr } | ||||||
|  | @ -270,6 +276,20 @@ func (rr *AFSDB) len(off int, compression map[string]struct{}) int { | ||||||
| 	l += domainNameLen(rr.Hostname, off+l, compression, false) | 	l += domainNameLen(rr.Hostname, off+l, compression, false) | ||||||
| 	return l | 	return l | ||||||
| } | } | ||||||
|  | func (rr *AMTRELAY) len(off int, compression map[string]struct{}) int { | ||||||
|  | 	l := rr.Hdr.len(off, compression) | ||||||
|  | 	l++ // Precedence | ||||||
|  | 	l++ // GatewayType | ||||||
|  | 	switch rr.GatewayType { | ||||||
|  | 	case AMTRELAYIPv4: | ||||||
|  | 		l += net.IPv4len | ||||||
|  | 	case AMTRELAYIPv6: | ||||||
|  | 		l += net.IPv6len | ||||||
|  | 	case AMTRELAYHost: | ||||||
|  | 		l += len(rr.GatewayHost) + 1 | ||||||
|  | 	} | ||||||
|  | 	return l | ||||||
|  | } | ||||||
| func (rr *ANY) len(off int, compression map[string]struct{}) int { | func (rr *ANY) len(off int, compression map[string]struct{}) int { | ||||||
| 	l := rr.Hdr.len(off, compression) | 	l := rr.Hdr.len(off, compression) | ||||||
| 	return l | 	return l | ||||||
|  | @ -379,6 +399,22 @@ func (rr *HIP) len(off int, compression map[string]struct{}) int { | ||||||
| 	} | 	} | ||||||
| 	return l | 	return l | ||||||
| } | } | ||||||
|  | func (rr *IPSECKEY) len(off int, compression map[string]struct{}) int { | ||||||
|  | 	l := rr.Hdr.len(off, compression) | ||||||
|  | 	l++ // Precedence | ||||||
|  | 	l++ // GatewayType | ||||||
|  | 	l++ // Algorithm | ||||||
|  | 	switch rr.GatewayType { | ||||||
|  | 	case IPSECGatewayIPv4: | ||||||
|  | 		l += net.IPv4len | ||||||
|  | 	case IPSECGatewayIPv6: | ||||||
|  | 		l += net.IPv6len | ||||||
|  | 	case IPSECGatewayHost: | ||||||
|  | 		l += len(rr.GatewayHost) + 1 | ||||||
|  | 	} | ||||||
|  | 	l += base64.StdEncoding.DecodedLen(len(rr.PublicKey)) | ||||||
|  | 	return l | ||||||
|  | } | ||||||
| func (rr *KX) len(off int, compression map[string]struct{}) int { | func (rr *KX) len(off int, compression map[string]struct{}) int { | ||||||
| 	l := rr.Hdr.len(off, compression) | 	l := rr.Hdr.len(off, compression) | ||||||
| 	l += 2 // Preference | 	l += 2 // Preference | ||||||
|  | @ -706,6 +742,9 @@ func (rr *AAAA) copy() RR { | ||||||
| func (rr *AFSDB) copy() RR { | func (rr *AFSDB) copy() RR { | ||||||
| 	return &AFSDB{rr.Hdr, rr.Subtype, rr.Hostname} | 	return &AFSDB{rr.Hdr, rr.Subtype, rr.Hostname} | ||||||
| } | } | ||||||
|  | func (rr *AMTRELAY) copy() RR { | ||||||
|  | 	return &AMTRELAY{rr.Hdr, rr.Precedence, rr.GatewayType, copyIP(rr.GatewayAddr), rr.GatewayHost} | ||||||
|  | } | ||||||
| func (rr *ANY) copy() RR { | func (rr *ANY) copy() RR { | ||||||
| 	return &ANY{rr.Hdr} | 	return &ANY{rr.Hdr} | ||||||
| } | } | ||||||
|  | @ -782,6 +821,9 @@ func (rr *HIP) copy() RR { | ||||||
| func (rr *HTTPS) copy() RR { | func (rr *HTTPS) copy() RR { | ||||||
| 	return &HTTPS{*rr.SVCB.copy().(*SVCB)} | 	return &HTTPS{*rr.SVCB.copy().(*SVCB)} | ||||||
| } | } | ||||||
|  | func (rr *IPSECKEY) copy() RR { | ||||||
|  | 	return &IPSECKEY{rr.Hdr, rr.Precedence, rr.GatewayType, rr.Algorithm, copyIP(rr.GatewayAddr), rr.GatewayHost, rr.PublicKey} | ||||||
|  | } | ||||||
| func (rr *KEY) copy() RR { | func (rr *KEY) copy() RR { | ||||||
| 	return &KEY{*rr.DNSKEY.copy().(*DNSKEY)} | 	return &KEY{*rr.DNSKEY.copy().(*DNSKEY)} | ||||||
| } | } | ||||||
|  |  | ||||||
							
								
								
									
										8
									
								
								vendor/golang.org/x/tools/go/gcexportdata/gcexportdata.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								vendor/golang.org/x/tools/go/gcexportdata/gcexportdata.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -30,7 +30,7 @@ import ( | ||||||
| 	"io/ioutil" | 	"io/ioutil" | ||||||
| 	"os/exec" | 	"os/exec" | ||||||
| 
 | 
 | ||||||
| 	"golang.org/x/tools/go/internal/gcimporter" | 	"golang.org/x/tools/internal/gcimporter" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| // Find returns the name of an object (.o) or archive (.a) file | // Find returns the name of an object (.o) or archive (.a) file | ||||||
|  | @ -87,7 +87,11 @@ func NewReader(r io.Reader) (io.Reader, error) { | ||||||
| 
 | 
 | ||||||
| // Read reads export data from in, decodes it, and returns type | // Read reads export data from in, decodes it, and returns type | ||||||
| // information for the package. | // information for the package. | ||||||
| // The package name is specified by path. | // | ||||||
|  | // The package path (effectively its linker symbol prefix) is | ||||||
|  | // specified by path, since unlike the package name, this information | ||||||
|  | // may not be recorded in the export data. | ||||||
|  | // | ||||||
| // File position information is added to fset. | // File position information is added to fset. | ||||||
| // | // | ||||||
| // Read may inspect and add to the imports map to ensure that references | // Read may inspect and add to the imports map to ensure that references | ||||||
|  |  | ||||||
							
								
								
									
										9
									
								
								vendor/golang.org/x/tools/go/packages/golist.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/golang.org/x/tools/go/packages/golist.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -60,6 +60,7 @@ func (r *responseDeduper) addAll(dr *driverResponse) { | ||||||
| 	for _, root := range dr.Roots { | 	for _, root := range dr.Roots { | ||||||
| 		r.addRoot(root) | 		r.addRoot(root) | ||||||
| 	} | 	} | ||||||
|  | 	r.dr.GoVersion = dr.GoVersion | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (r *responseDeduper) addPackage(p *Package) { | func (r *responseDeduper) addPackage(p *Package) { | ||||||
|  | @ -454,11 +455,14 @@ func (state *golistState) createDriverResponse(words ...string) (*driverResponse | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
|  | 
 | ||||||
| 	seen := make(map[string]*jsonPackage) | 	seen := make(map[string]*jsonPackage) | ||||||
| 	pkgs := make(map[string]*Package) | 	pkgs := make(map[string]*Package) | ||||||
| 	additionalErrors := make(map[string][]Error) | 	additionalErrors := make(map[string][]Error) | ||||||
| 	// Decode the JSON and convert it to Package form. | 	// Decode the JSON and convert it to Package form. | ||||||
| 	var response driverResponse | 	response := &driverResponse{ | ||||||
|  | 		GoVersion: goVersion, | ||||||
|  | 	} | ||||||
| 	for dec := json.NewDecoder(buf); dec.More(); { | 	for dec := json.NewDecoder(buf); dec.More(); { | ||||||
| 		p := new(jsonPackage) | 		p := new(jsonPackage) | ||||||
| 		if err := dec.Decode(p); err != nil { | 		if err := dec.Decode(p); err != nil { | ||||||
|  | @ -730,7 +734,7 @@ func (state *golistState) createDriverResponse(words ...string) (*driverResponse | ||||||
| 	} | 	} | ||||||
| 	sort.Slice(response.Packages, func(i, j int) bool { return response.Packages[i].ID < response.Packages[j].ID }) | 	sort.Slice(response.Packages, func(i, j int) bool { return response.Packages[i].ID < response.Packages[j].ID }) | ||||||
| 
 | 
 | ||||||
| 	return &response, nil | 	return response, nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (state *golistState) shouldAddFilenameFromError(p *jsonPackage) bool { | func (state *golistState) shouldAddFilenameFromError(p *jsonPackage) bool { | ||||||
|  | @ -756,6 +760,7 @@ func (state *golistState) shouldAddFilenameFromError(p *jsonPackage) bool { | ||||||
| 	return len(p.Error.ImportStack) == 0 || p.Error.ImportStack[len(p.Error.ImportStack)-1] == p.ImportPath | 	return len(p.Error.ImportStack) == 0 || p.Error.ImportStack[len(p.Error.ImportStack)-1] == p.ImportPath | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // getGoVersion returns the effective minor version of the go command. | ||||||
| func (state *golistState) getGoVersion() (int, error) { | func (state *golistState) getGoVersion() (int, error) { | ||||||
| 	state.goVersionOnce.Do(func() { | 	state.goVersionOnce.Do(func() { | ||||||
| 		state.goVersion, state.goVersionError = gocommand.GoVersion(state.ctx, state.cfgInvocation(), state.cfg.gocmdRunner) | 		state.goVersion, state.goVersionError = gocommand.GoVersion(state.ctx, state.cfgInvocation(), state.cfg.gocmdRunner) | ||||||
|  |  | ||||||
							
								
								
									
										42
									
								
								vendor/golang.org/x/tools/go/packages/packages.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										42
									
								
								vendor/golang.org/x/tools/go/packages/packages.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -19,6 +19,7 @@ import ( | ||||||
| 	"log" | 	"log" | ||||||
| 	"os" | 	"os" | ||||||
| 	"path/filepath" | 	"path/filepath" | ||||||
|  | 	"runtime" | ||||||
| 	"strings" | 	"strings" | ||||||
| 	"sync" | 	"sync" | ||||||
| 	"time" | 	"time" | ||||||
|  | @ -233,6 +234,11 @@ type driverResponse struct { | ||||||
| 	// Imports will be connected and then type and syntax information added in a | 	// Imports will be connected and then type and syntax information added in a | ||||||
| 	// later pass (see refine). | 	// later pass (see refine). | ||||||
| 	Packages []*Package | 	Packages []*Package | ||||||
|  | 
 | ||||||
|  | 	// GoVersion is the minor version number used by the driver | ||||||
|  | 	// (e.g. the go command on the PATH) when selecting .go files. | ||||||
|  | 	// Zero means unknown. | ||||||
|  | 	GoVersion int | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Load loads and returns the Go packages named by the given patterns. | // Load loads and returns the Go packages named by the given patterns. | ||||||
|  | @ -256,7 +262,7 @@ func Load(cfg *Config, patterns ...string) ([]*Package, error) { | ||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
| 	l.sizes = response.Sizes | 	l.sizes = response.Sizes | ||||||
| 	return l.refine(response.Roots, response.Packages...) | 	return l.refine(response) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // defaultDriver is a driver that implements go/packages' fallback behavior. | // defaultDriver is a driver that implements go/packages' fallback behavior. | ||||||
|  | @ -532,6 +538,7 @@ type loaderPackage struct { | ||||||
| 	needsrc      bool  // load from source (Mode >= LoadTypes) | 	needsrc      bool  // load from source (Mode >= LoadTypes) | ||||||
| 	needtypes    bool  // type information is either requested or depended on | 	needtypes    bool  // type information is either requested or depended on | ||||||
| 	initial      bool  // package was matched by a pattern | 	initial      bool  // package was matched by a pattern | ||||||
|  | 	goVersion    int   // minor version number of go command on PATH | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // loader holds the working state of a single call to load. | // loader holds the working state of a single call to load. | ||||||
|  | @ -618,7 +625,8 @@ func newLoader(cfg *Config) *loader { | ||||||
| 
 | 
 | ||||||
| // refine connects the supplied packages into a graph and then adds type and | // refine connects the supplied packages into a graph and then adds type and | ||||||
| // and syntax information as requested by the LoadMode. | // and syntax information as requested by the LoadMode. | ||||||
| func (ld *loader) refine(roots []string, list ...*Package) ([]*Package, error) { | func (ld *loader) refine(response *driverResponse) ([]*Package, error) { | ||||||
|  | 	roots := response.Roots | ||||||
| 	rootMap := make(map[string]int, len(roots)) | 	rootMap := make(map[string]int, len(roots)) | ||||||
| 	for i, root := range roots { | 	for i, root := range roots { | ||||||
| 		rootMap[root] = i | 		rootMap[root] = i | ||||||
|  | @ -626,7 +634,7 @@ func (ld *loader) refine(roots []string, list ...*Package) ([]*Package, error) { | ||||||
| 	ld.pkgs = make(map[string]*loaderPackage) | 	ld.pkgs = make(map[string]*loaderPackage) | ||||||
| 	// first pass, fixup and build the map and roots | 	// first pass, fixup and build the map and roots | ||||||
| 	var initial = make([]*loaderPackage, len(roots)) | 	var initial = make([]*loaderPackage, len(roots)) | ||||||
| 	for _, pkg := range list { | 	for _, pkg := range response.Packages { | ||||||
| 		rootIndex := -1 | 		rootIndex := -1 | ||||||
| 		if i, found := rootMap[pkg.ID]; found { | 		if i, found := rootMap[pkg.ID]; found { | ||||||
| 			rootIndex = i | 			rootIndex = i | ||||||
|  | @ -648,6 +656,7 @@ func (ld *loader) refine(roots []string, list ...*Package) ([]*Package, error) { | ||||||
| 			Package:   pkg, | 			Package:   pkg, | ||||||
| 			needtypes: needtypes, | 			needtypes: needtypes, | ||||||
| 			needsrc:   needsrc, | 			needsrc:   needsrc, | ||||||
|  | 			goVersion: response.GoVersion, | ||||||
| 		} | 		} | ||||||
| 		ld.pkgs[lpkg.ID] = lpkg | 		ld.pkgs[lpkg.ID] = lpkg | ||||||
| 		if rootIndex >= 0 { | 		if rootIndex >= 0 { | ||||||
|  | @ -923,6 +932,33 @@ func (ld *loader) loadPackage(lpkg *loaderPackage) { | ||||||
| 		lpkg.Errors = append(lpkg.Errors, errs...) | 		lpkg.Errors = append(lpkg.Errors, errs...) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	// If the go command on the PATH is newer than the runtime, | ||||||
|  | 	// then the go/{scanner,ast,parser,types} packages from the | ||||||
|  | 	// standard library may be unable to process the files | ||||||
|  | 	// selected by go list. | ||||||
|  | 	// | ||||||
|  | 	// There is currently no way to downgrade the effective | ||||||
|  | 	// version of the go command (see issue 52078), so we proceed | ||||||
|  | 	// with the newer go command but, in case of parse or type | ||||||
|  | 	// errors, we emit an additional diagnostic. | ||||||
|  | 	// | ||||||
|  | 	// See: | ||||||
|  | 	// - golang.org/issue/52078 (flag to set release tags) | ||||||
|  | 	// - golang.org/issue/50825 (gopls legacy version support) | ||||||
|  | 	// - golang.org/issue/55883 (go/packages confusing error) | ||||||
|  | 	var runtimeVersion int | ||||||
|  | 	if _, err := fmt.Sscanf(runtime.Version(), "go1.%d", &runtimeVersion); err == nil && runtimeVersion < lpkg.goVersion { | ||||||
|  | 		defer func() { | ||||||
|  | 			if len(lpkg.Errors) > 0 { | ||||||
|  | 				appendError(Error{ | ||||||
|  | 					Pos:  "-", | ||||||
|  | 					Msg:  fmt.Sprintf("This application uses version go1.%d of the source-processing packages but runs version go1.%d of 'go list'. It may fail to process source files that rely on newer language features. If so, rebuild the application using a newer version of Go.", runtimeVersion, lpkg.goVersion), | ||||||
|  | 					Kind: UnknownError, | ||||||
|  | 				}) | ||||||
|  | 			} | ||||||
|  | 		}() | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	if ld.Config.Mode&NeedTypes != 0 && len(lpkg.CompiledGoFiles) == 0 && lpkg.ExportFile != "" { | 	if ld.Config.Mode&NeedTypes != 0 && len(lpkg.CompiledGoFiles) == 0 && lpkg.ExportFile != "" { | ||||||
| 		// The config requested loading sources and types, but sources are missing. | 		// The config requested loading sources and types, but sources are missing. | ||||||
| 		// Add an error to the package and fall back to loading from export data. | 		// Add an error to the package and fall back to loading from export data. | ||||||
|  |  | ||||||
|  | @ -12,7 +12,6 @@ import ( | ||||||
| 	"bytes" | 	"bytes" | ||||||
| 	"encoding/binary" | 	"encoding/binary" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"go/ast" |  | ||||||
| 	"go/constant" | 	"go/constant" | ||||||
| 	"go/token" | 	"go/token" | ||||||
| 	"go/types" | 	"go/types" | ||||||
|  | @ -145,7 +144,7 @@ func BExportData(fset *token.FileSet, pkg *types.Package) (b []byte, err error) | ||||||
| 	objcount := 0 | 	objcount := 0 | ||||||
| 	scope := pkg.Scope() | 	scope := pkg.Scope() | ||||||
| 	for _, name := range scope.Names() { | 	for _, name := range scope.Names() { | ||||||
| 		if !ast.IsExported(name) { | 		if !token.IsExported(name) { | ||||||
| 			continue | 			continue | ||||||
| 		} | 		} | ||||||
| 		if trace { | 		if trace { | ||||||
|  | @ -482,7 +481,7 @@ func (p *exporter) method(m *types.Func) { | ||||||
| 
 | 
 | ||||||
| 	p.pos(m) | 	p.pos(m) | ||||||
| 	p.string(m.Name()) | 	p.string(m.Name()) | ||||||
| 	if m.Name() != "_" && !ast.IsExported(m.Name()) { | 	if m.Name() != "_" && !token.IsExported(m.Name()) { | ||||||
| 		p.pkg(m.Pkg(), false) | 		p.pkg(m.Pkg(), false) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | @ -501,7 +500,7 @@ func (p *exporter) fieldName(f *types.Var) { | ||||||
| 		// 3) field name doesn't match base type name (alias name) | 		// 3) field name doesn't match base type name (alias name) | ||||||
| 		bname := basetypeName(f.Type()) | 		bname := basetypeName(f.Type()) | ||||||
| 		if name == bname { | 		if name == bname { | ||||||
| 			if ast.IsExported(name) { | 			if token.IsExported(name) { | ||||||
| 				name = "" // 1) we don't need to know the field name or package | 				name = "" // 1) we don't need to know the field name or package | ||||||
| 			} else { | 			} else { | ||||||
| 				name = "?" // 2) use unexported name "?" to force package export | 				name = "?" // 2) use unexported name "?" to force package export | ||||||
|  | @ -514,7 +513,7 @@ func (p *exporter) fieldName(f *types.Var) { | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	p.string(name) | 	p.string(name) | ||||||
| 	if name != "" && !ast.IsExported(name) { | 	if name != "" && !token.IsExported(name) { | ||||||
| 		p.pkg(f.Pkg(), false) | 		p.pkg(f.Pkg(), false) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | @ -9,7 +9,7 @@ | ||||||
| // Package gcimporter provides various functions for reading | // Package gcimporter provides various functions for reading | ||||||
| // gc-generated object files that can be used to implement the | // gc-generated object files that can be used to implement the | ||||||
| // Importer interface defined by the Go 1.5 standard library package. | // Importer interface defined by the Go 1.5 standard library package. | ||||||
| package gcimporter // import "golang.org/x/tools/go/internal/gcimporter" | package gcimporter // import "golang.org/x/tools/internal/gcimporter" | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"bufio" | 	"bufio" | ||||||
|  | @ -22,11 +22,14 @@ import ( | ||||||
| 	"io" | 	"io" | ||||||
| 	"io/ioutil" | 	"io/ioutil" | ||||||
| 	"os" | 	"os" | ||||||
|  | 	"path" | ||||||
| 	"path/filepath" | 	"path/filepath" | ||||||
| 	"sort" | 	"sort" | ||||||
| 	"strconv" | 	"strconv" | ||||||
| 	"strings" | 	"strings" | ||||||
| 	"text/scanner" | 	"text/scanner" | ||||||
|  | 
 | ||||||
|  | 	"golang.org/x/tools/internal/goroot" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| const ( | const ( | ||||||
|  | @ -38,6 +41,25 @@ const ( | ||||||
| 	trace = false | 	trace = false | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | func lookupGorootExport(pkgpath, srcRoot, srcDir string) (string, bool) { | ||||||
|  | 	pkgpath = filepath.ToSlash(pkgpath) | ||||||
|  | 	m, err := goroot.PkgfileMap() | ||||||
|  | 	if err != nil { | ||||||
|  | 		return "", false | ||||||
|  | 	} | ||||||
|  | 	if export, ok := m[pkgpath]; ok { | ||||||
|  | 		return export, true | ||||||
|  | 	} | ||||||
|  | 	vendorPrefix := "vendor" | ||||||
|  | 	if strings.HasPrefix(srcDir, filepath.Join(srcRoot, "cmd")) { | ||||||
|  | 		vendorPrefix = path.Join("cmd", vendorPrefix) | ||||||
|  | 	} | ||||||
|  | 	pkgpath = path.Join(vendorPrefix, pkgpath) | ||||||
|  | 	fmt.Fprintln(os.Stderr, "looking up ", pkgpath) | ||||||
|  | 	export, ok := m[pkgpath] | ||||||
|  | 	return export, ok | ||||||
|  | } | ||||||
|  | 
 | ||||||
| var pkgExts = [...]string{".a", ".o"} | var pkgExts = [...]string{".a", ".o"} | ||||||
| 
 | 
 | ||||||
| // FindPkg returns the filename and unique package id for an import | // FindPkg returns the filename and unique package id for an import | ||||||
|  | @ -60,11 +82,18 @@ func FindPkg(path, srcDir string) (filename, id string) { | ||||||
| 		} | 		} | ||||||
| 		bp, _ := build.Import(path, srcDir, build.FindOnly|build.AllowBinary) | 		bp, _ := build.Import(path, srcDir, build.FindOnly|build.AllowBinary) | ||||||
| 		if bp.PkgObj == "" { | 		if bp.PkgObj == "" { | ||||||
|  | 			var ok bool | ||||||
|  | 			if bp.Goroot { | ||||||
|  | 				filename, ok = lookupGorootExport(path, bp.SrcRoot, srcDir) | ||||||
|  | 			} | ||||||
|  | 			if !ok { | ||||||
| 				id = path // make sure we have an id to print in error message | 				id = path // make sure we have an id to print in error message | ||||||
| 				return | 				return | ||||||
| 			} | 			} | ||||||
|  | 		} else { | ||||||
| 			noext = strings.TrimSuffix(bp.PkgObj, ".a") | 			noext = strings.TrimSuffix(bp.PkgObj, ".a") | ||||||
| 			id = bp.ImportPath | 			id = bp.ImportPath | ||||||
|  | 		} | ||||||
| 
 | 
 | ||||||
| 	case build.IsLocalImport(path): | 	case build.IsLocalImport(path): | ||||||
| 		// "./x" -> "/this/directory/x.ext", "/this/directory/x" | 		// "./x" -> "/this/directory/x.ext", "/this/directory/x" | ||||||
|  | @ -85,6 +114,12 @@ func FindPkg(path, srcDir string) (filename, id string) { | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	if filename != "" { | ||||||
|  | 		if f, err := os.Stat(filename); err == nil && !f.IsDir() { | ||||||
|  | 			return | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	// try extensions | 	// try extensions | ||||||
| 	for _, ext := range pkgExts { | 	for _, ext := range pkgExts { | ||||||
| 		filename = noext + ext | 		filename = noext + ext | ||||||
|  | @ -12,7 +12,6 @@ import ( | ||||||
| 	"bytes" | 	"bytes" | ||||||
| 	"encoding/binary" | 	"encoding/binary" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"go/ast" |  | ||||||
| 	"go/constant" | 	"go/constant" | ||||||
| 	"go/token" | 	"go/token" | ||||||
| 	"go/types" | 	"go/types" | ||||||
|  | @ -26,6 +25,41 @@ import ( | ||||||
| 	"golang.org/x/tools/internal/typeparams" | 	"golang.org/x/tools/internal/typeparams" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | // IExportShallow encodes "shallow" export data for the specified package. | ||||||
|  | // | ||||||
|  | // No promises are made about the encoding other than that it can be | ||||||
|  | // decoded by the same version of IIExportShallow. If you plan to save | ||||||
|  | // export data in the file system, be sure to include a cryptographic | ||||||
|  | // digest of the executable in the key to avoid version skew. | ||||||
|  | func IExportShallow(fset *token.FileSet, pkg *types.Package) ([]byte, error) { | ||||||
|  | 	// In principle this operation can only fail if out.Write fails, | ||||||
|  | 	// but that's impossible for bytes.Buffer---and as a matter of | ||||||
|  | 	// fact iexportCommon doesn't even check for I/O errors. | ||||||
|  | 	// TODO(adonovan): handle I/O errors properly. | ||||||
|  | 	// TODO(adonovan): use byte slices throughout, avoiding copying. | ||||||
|  | 	const bundle, shallow = false, true | ||||||
|  | 	var out bytes.Buffer | ||||||
|  | 	err := iexportCommon(&out, fset, bundle, shallow, iexportVersion, []*types.Package{pkg}) | ||||||
|  | 	return out.Bytes(), err | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // IImportShallow decodes "shallow" types.Package data encoded by IExportShallow | ||||||
|  | // in the same executable. This function cannot import data from | ||||||
|  | // cmd/compile or gcexportdata.Write. | ||||||
|  | func IImportShallow(fset *token.FileSet, imports map[string]*types.Package, data []byte, path string, insert InsertType) (*types.Package, error) { | ||||||
|  | 	const bundle = false | ||||||
|  | 	pkgs, err := iimportCommon(fset, imports, data, bundle, path, insert) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  | 	return pkgs[0], nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // InsertType is the type of a function that creates a types.TypeName | ||||||
|  | // object for a named type and inserts it into the scope of the | ||||||
|  | // specified Package. | ||||||
|  | type InsertType = func(pkg *types.Package, name string) | ||||||
|  | 
 | ||||||
| // Current bundled export format version. Increase with each format change. | // Current bundled export format version. Increase with each format change. | ||||||
| // 0: initial implementation | // 0: initial implementation | ||||||
| const bundleVersion = 0 | const bundleVersion = 0 | ||||||
|  | @ -36,15 +70,17 @@ const bundleVersion = 0 | ||||||
| // The package path of the top-level package will not be recorded, | // The package path of the top-level package will not be recorded, | ||||||
| // so that calls to IImportData can override with a provided package path. | // so that calls to IImportData can override with a provided package path. | ||||||
| func IExportData(out io.Writer, fset *token.FileSet, pkg *types.Package) error { | func IExportData(out io.Writer, fset *token.FileSet, pkg *types.Package) error { | ||||||
| 	return iexportCommon(out, fset, false, iexportVersion, []*types.Package{pkg}) | 	const bundle, shallow = false, false | ||||||
|  | 	return iexportCommon(out, fset, bundle, shallow, iexportVersion, []*types.Package{pkg}) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // IExportBundle writes an indexed export bundle for pkgs to out. | // IExportBundle writes an indexed export bundle for pkgs to out. | ||||||
| func IExportBundle(out io.Writer, fset *token.FileSet, pkgs []*types.Package) error { | func IExportBundle(out io.Writer, fset *token.FileSet, pkgs []*types.Package) error { | ||||||
| 	return iexportCommon(out, fset, true, iexportVersion, pkgs) | 	const bundle, shallow = true, false | ||||||
|  | 	return iexportCommon(out, fset, bundle, shallow, iexportVersion, pkgs) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func iexportCommon(out io.Writer, fset *token.FileSet, bundle bool, version int, pkgs []*types.Package) (err error) { | func iexportCommon(out io.Writer, fset *token.FileSet, bundle, shallow bool, version int, pkgs []*types.Package) (err error) { | ||||||
| 	if !debug { | 	if !debug { | ||||||
| 		defer func() { | 		defer func() { | ||||||
| 			if e := recover(); e != nil { | 			if e := recover(); e != nil { | ||||||
|  | @ -61,6 +97,7 @@ func iexportCommon(out io.Writer, fset *token.FileSet, bundle bool, version int, | ||||||
| 	p := iexporter{ | 	p := iexporter{ | ||||||
| 		fset:        fset, | 		fset:        fset, | ||||||
| 		version:     version, | 		version:     version, | ||||||
|  | 		shallow:     shallow, | ||||||
| 		allPkgs:     map[*types.Package]bool{}, | 		allPkgs:     map[*types.Package]bool{}, | ||||||
| 		stringIndex: map[string]uint64{}, | 		stringIndex: map[string]uint64{}, | ||||||
| 		declIndex:   map[types.Object]uint64{}, | 		declIndex:   map[types.Object]uint64{}, | ||||||
|  | @ -82,7 +119,7 @@ func iexportCommon(out io.Writer, fset *token.FileSet, bundle bool, version int, | ||||||
| 	for _, pkg := range pkgs { | 	for _, pkg := range pkgs { | ||||||
| 		scope := pkg.Scope() | 		scope := pkg.Scope() | ||||||
| 		for _, name := range scope.Names() { | 		for _, name := range scope.Names() { | ||||||
| 			if ast.IsExported(name) { | 			if token.IsExported(name) { | ||||||
| 				p.pushDecl(scope.Lookup(name)) | 				p.pushDecl(scope.Lookup(name)) | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
|  | @ -205,7 +242,8 @@ type iexporter struct { | ||||||
| 	out     *bytes.Buffer | 	out     *bytes.Buffer | ||||||
| 	version int | 	version int | ||||||
| 
 | 
 | ||||||
| 	localpkg *types.Package | 	shallow  bool           // don't put types from other packages in the index | ||||||
|  | 	localpkg *types.Package // (nil in bundle mode) | ||||||
| 
 | 
 | ||||||
| 	// allPkgs tracks all packages that have been referenced by | 	// allPkgs tracks all packages that have been referenced by | ||||||
| 	// the export data, so we can ensure to include them in the | 	// the export data, so we can ensure to include them in the | ||||||
|  | @ -256,6 +294,11 @@ func (p *iexporter) pushDecl(obj types.Object) { | ||||||
| 		panic("cannot export package unsafe") | 		panic("cannot export package unsafe") | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	// Shallow export data: don't index decls from other packages. | ||||||
|  | 	if p.shallow && obj.Pkg() != p.localpkg { | ||||||
|  | 		return | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	if _, ok := p.declIndex[obj]; ok { | 	if _, ok := p.declIndex[obj]; ok { | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|  | @ -497,7 +540,7 @@ func (w *exportWriter) pkg(pkg *types.Package) { | ||||||
| 	w.string(w.exportPath(pkg)) | 	w.string(w.exportPath(pkg)) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (w *exportWriter) qualifiedIdent(obj types.Object) { | func (w *exportWriter) qualifiedType(obj *types.TypeName) { | ||||||
| 	name := w.p.exportName(obj) | 	name := w.p.exportName(obj) | ||||||
| 
 | 
 | ||||||
| 	// Ensure any referenced declarations are written out too. | 	// Ensure any referenced declarations are written out too. | ||||||
|  | @ -556,11 +599,11 @@ func (w *exportWriter) doTyp(t types.Type, pkg *types.Package) { | ||||||
| 			return | 			return | ||||||
| 		} | 		} | ||||||
| 		w.startType(definedType) | 		w.startType(definedType) | ||||||
| 		w.qualifiedIdent(t.Obj()) | 		w.qualifiedType(t.Obj()) | ||||||
| 
 | 
 | ||||||
| 	case *typeparams.TypeParam: | 	case *typeparams.TypeParam: | ||||||
| 		w.startType(typeParamType) | 		w.startType(typeParamType) | ||||||
| 		w.qualifiedIdent(t.Obj()) | 		w.qualifiedType(t.Obj()) | ||||||
| 
 | 
 | ||||||
| 	case *types.Pointer: | 	case *types.Pointer: | ||||||
| 		w.startType(pointerType) | 		w.startType(pointerType) | ||||||
|  | @ -602,14 +645,17 @@ func (w *exportWriter) doTyp(t types.Type, pkg *types.Package) { | ||||||
| 
 | 
 | ||||||
| 	case *types.Struct: | 	case *types.Struct: | ||||||
| 		w.startType(structType) | 		w.startType(structType) | ||||||
| 		w.setPkg(pkg, true) |  | ||||||
| 
 |  | ||||||
| 		n := t.NumFields() | 		n := t.NumFields() | ||||||
|  | 		if n > 0 { | ||||||
|  | 			w.setPkg(t.Field(0).Pkg(), true) // qualifying package for field objects | ||||||
|  | 		} else { | ||||||
|  | 			w.setPkg(pkg, true) | ||||||
|  | 		} | ||||||
| 		w.uint64(uint64(n)) | 		w.uint64(uint64(n)) | ||||||
| 		for i := 0; i < n; i++ { | 		for i := 0; i < n; i++ { | ||||||
| 			f := t.Field(i) | 			f := t.Field(i) | ||||||
| 			w.pos(f.Pos()) | 			w.pos(f.Pos()) | ||||||
| 			w.string(f.Name()) | 			w.string(f.Name()) // unexported fields implicitly qualified by prior setPkg | ||||||
| 			w.typ(f.Type(), pkg) | 			w.typ(f.Type(), pkg) | ||||||
| 			w.bool(f.Anonymous()) | 			w.bool(f.Anonymous()) | ||||||
| 			w.string(t.Tag(i)) // note (or tag) | 			w.string(t.Tag(i)) // note (or tag) | ||||||
|  | @ -51,6 +51,8 @@ const ( | ||||||
| 	iexportVersionPosCol   = 1 | 	iexportVersionPosCol   = 1 | ||||||
| 	iexportVersionGo1_18   = 2 | 	iexportVersionGo1_18   = 2 | ||||||
| 	iexportVersionGenerics = 2 | 	iexportVersionGenerics = 2 | ||||||
|  | 
 | ||||||
|  | 	iexportVersionCurrent = 2 | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| type ident struct { | type ident struct { | ||||||
|  | @ -83,7 +85,7 @@ const ( | ||||||
| // If the export data version is not recognized or the format is otherwise | // If the export data version is not recognized or the format is otherwise | ||||||
| // compromised, an error is returned. | // compromised, an error is returned. | ||||||
| func IImportData(fset *token.FileSet, imports map[string]*types.Package, data []byte, path string) (int, *types.Package, error) { | func IImportData(fset *token.FileSet, imports map[string]*types.Package, data []byte, path string) (int, *types.Package, error) { | ||||||
| 	pkgs, err := iimportCommon(fset, imports, data, false, path) | 	pkgs, err := iimportCommon(fset, imports, data, false, path, nil) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return 0, nil, err | 		return 0, nil, err | ||||||
| 	} | 	} | ||||||
|  | @ -92,11 +94,11 @@ func IImportData(fset *token.FileSet, imports map[string]*types.Package, data [] | ||||||
| 
 | 
 | ||||||
| // IImportBundle imports a set of packages from the serialized package bundle. | // IImportBundle imports a set of packages from the serialized package bundle. | ||||||
| func IImportBundle(fset *token.FileSet, imports map[string]*types.Package, data []byte) ([]*types.Package, error) { | func IImportBundle(fset *token.FileSet, imports map[string]*types.Package, data []byte) ([]*types.Package, error) { | ||||||
| 	return iimportCommon(fset, imports, data, true, "") | 	return iimportCommon(fset, imports, data, true, "", nil) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func iimportCommon(fset *token.FileSet, imports map[string]*types.Package, data []byte, bundle bool, path string) (pkgs []*types.Package, err error) { | func iimportCommon(fset *token.FileSet, imports map[string]*types.Package, data []byte, bundle bool, path string, insert InsertType) (pkgs []*types.Package, err error) { | ||||||
| 	const currentVersion = 1 | 	const currentVersion = iexportVersionCurrent | ||||||
| 	version := int64(-1) | 	version := int64(-1) | ||||||
| 	if !debug { | 	if !debug { | ||||||
| 		defer func() { | 		defer func() { | ||||||
|  | @ -145,6 +147,7 @@ func iimportCommon(fset *token.FileSet, imports map[string]*types.Package, data | ||||||
| 	p := iimporter{ | 	p := iimporter{ | ||||||
| 		version: int(version), | 		version: int(version), | ||||||
| 		ipath:   path, | 		ipath:   path, | ||||||
|  | 		insert:  insert, | ||||||
| 
 | 
 | ||||||
| 		stringData:  stringData, | 		stringData:  stringData, | ||||||
| 		stringCache: make(map[uint64]string), | 		stringCache: make(map[uint64]string), | ||||||
|  | @ -185,11 +188,18 @@ func iimportCommon(fset *token.FileSet, imports map[string]*types.Package, data | ||||||
| 		} else if pkg.Name() != pkgName { | 		} else if pkg.Name() != pkgName { | ||||||
| 			errorf("conflicting names %s and %s for package %q", pkg.Name(), pkgName, path) | 			errorf("conflicting names %s and %s for package %q", pkg.Name(), pkgName, path) | ||||||
| 		} | 		} | ||||||
|  | 		if i == 0 && !bundle { | ||||||
|  | 			p.localpkg = pkg | ||||||
|  | 		} | ||||||
| 
 | 
 | ||||||
| 		p.pkgCache[pkgPathOff] = pkg | 		p.pkgCache[pkgPathOff] = pkg | ||||||
| 
 | 
 | ||||||
|  | 		// Read index for package. | ||||||
| 		nameIndex := make(map[string]uint64) | 		nameIndex := make(map[string]uint64) | ||||||
| 		for nSyms := r.uint64(); nSyms > 0; nSyms-- { | 		nSyms := r.uint64() | ||||||
|  | 		// In shallow mode we don't expect an index for other packages. | ||||||
|  | 		assert(nSyms == 0 || p.localpkg == pkg || p.insert == nil) | ||||||
|  | 		for ; nSyms > 0; nSyms-- { | ||||||
| 			name := p.stringAt(r.uint64()) | 			name := p.stringAt(r.uint64()) | ||||||
| 			nameIndex[name] = r.uint64() | 			nameIndex[name] = r.uint64() | ||||||
| 		} | 		} | ||||||
|  | @ -265,6 +275,9 @@ type iimporter struct { | ||||||
| 	version int | 	version int | ||||||
| 	ipath   string | 	ipath   string | ||||||
| 
 | 
 | ||||||
|  | 	localpkg *types.Package | ||||||
|  | 	insert   func(pkg *types.Package, name string) // "shallow" mode only | ||||||
|  | 
 | ||||||
| 	stringData  []byte | 	stringData  []byte | ||||||
| 	stringCache map[uint64]string | 	stringCache map[uint64]string | ||||||
| 	pkgCache    map[uint64]*types.Package | 	pkgCache    map[uint64]*types.Package | ||||||
|  | @ -308,6 +321,13 @@ func (p *iimporter) doDecl(pkg *types.Package, name string) { | ||||||
| 
 | 
 | ||||||
| 	off, ok := p.pkgIndex[pkg][name] | 	off, ok := p.pkgIndex[pkg][name] | ||||||
| 	if !ok { | 	if !ok { | ||||||
|  | 		// In "shallow" mode, call back to the application to | ||||||
|  | 		// find the object and insert it into the package scope. | ||||||
|  | 		if p.insert != nil { | ||||||
|  | 			assert(pkg != p.localpkg) | ||||||
|  | 			p.insert(pkg, name) // "can't fail" | ||||||
|  | 			return | ||||||
|  | 		} | ||||||
| 		errorf("%v.%v not in index", pkg, name) | 		errorf("%v.%v not in index", pkg, name) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | @ -21,3 +21,17 @@ func additionalPredeclared() []types.Type { | ||||||
| 		types.Universe.Lookup("any").Type(), | 		types.Universe.Lookup("any").Type(), | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | // See cmd/compile/internal/types.SplitVargenSuffix. | ||||||
|  | func splitVargenSuffix(name string) (base, suffix string) { | ||||||
|  | 	i := len(name) | ||||||
|  | 	for i > 0 && name[i-1] >= '0' && name[i-1] <= '9' { | ||||||
|  | 		i-- | ||||||
|  | 	} | ||||||
|  | 	const dot = "·" | ||||||
|  | 	if i >= len(dot) && name[i-len(dot):i] == dot { | ||||||
|  | 		i -= len(dot) | ||||||
|  | 		return name[:i], name[i:] | ||||||
|  | 	} | ||||||
|  | 	return name, "" | ||||||
|  | } | ||||||
|  | @ -14,7 +14,7 @@ import ( | ||||||
| 	"go/types" | 	"go/types" | ||||||
| 	"strings" | 	"strings" | ||||||
| 
 | 
 | ||||||
| 	"golang.org/x/tools/go/internal/pkgbits" | 	"golang.org/x/tools/internal/pkgbits" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| // A pkgReader holds the shared state for reading a unified IR package | // A pkgReader holds the shared state for reading a unified IR package | ||||||
|  | @ -36,6 +36,12 @@ type pkgReader struct { | ||||||
| 	// laterFns holds functions that need to be invoked at the end of | 	// laterFns holds functions that need to be invoked at the end of | ||||||
| 	// import reading. | 	// import reading. | ||||||
| 	laterFns []func() | 	laterFns []func() | ||||||
|  | 	// laterFors is used in case of 'type A B' to ensure that B is processed before A. | ||||||
|  | 	laterFors map[types.Type]int | ||||||
|  | 
 | ||||||
|  | 	// ifaces holds a list of constructed Interfaces, which need to have | ||||||
|  | 	// Complete called after importing is done. | ||||||
|  | 	ifaces []*types.Interface | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // later adds a function to be invoked at the end of import reading. | // later adds a function to be invoked at the end of import reading. | ||||||
|  | @ -63,6 +69,15 @@ func UImportData(fset *token.FileSet, imports map[string]*types.Package, data [] | ||||||
| 	return | 	return | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // laterFor adds a function to be invoked at the end of import reading, and records the type that function is finishing. | ||||||
|  | func (pr *pkgReader) laterFor(t types.Type, fn func()) { | ||||||
|  | 	if pr.laterFors == nil { | ||||||
|  | 		pr.laterFors = make(map[types.Type]int) | ||||||
|  | 	} | ||||||
|  | 	pr.laterFors[t] = len(pr.laterFns) | ||||||
|  | 	pr.laterFns = append(pr.laterFns, fn) | ||||||
|  | } | ||||||
|  | 
 | ||||||
| // readUnifiedPackage reads a package description from the given | // readUnifiedPackage reads a package description from the given | ||||||
| // unified IR export data decoder. | // unified IR export data decoder. | ||||||
| func readUnifiedPackage(fset *token.FileSet, ctxt *types.Context, imports map[string]*types.Package, input pkgbits.PkgDecoder) *types.Package { | func readUnifiedPackage(fset *token.FileSet, ctxt *types.Context, imports map[string]*types.Package, input pkgbits.PkgDecoder) *types.Package { | ||||||
|  | @ -102,6 +117,10 @@ func readUnifiedPackage(fset *token.FileSet, ctxt *types.Context, imports map[st | ||||||
| 		fn() | 		fn() | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	for _, iface := range pr.ifaces { | ||||||
|  | 		iface.Complete() | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	pkg.MarkComplete() | 	pkg.MarkComplete() | ||||||
| 	return pkg | 	return pkg | ||||||
| } | } | ||||||
|  | @ -231,11 +250,35 @@ func (r *reader) doPkg() *types.Package { | ||||||
| 	for i := range imports { | 	for i := range imports { | ||||||
| 		imports[i] = r.pkg() | 		imports[i] = r.pkg() | ||||||
| 	} | 	} | ||||||
| 	pkg.SetImports(imports) | 	pkg.SetImports(flattenImports(imports)) | ||||||
| 
 | 
 | ||||||
| 	return pkg | 	return pkg | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // flattenImports returns the transitive closure of all imported | ||||||
|  | // packages rooted from pkgs. | ||||||
|  | func flattenImports(pkgs []*types.Package) []*types.Package { | ||||||
|  | 	var res []*types.Package | ||||||
|  | 
 | ||||||
|  | 	seen := make(map[*types.Package]bool) | ||||||
|  | 	var add func(pkg *types.Package) | ||||||
|  | 	add = func(pkg *types.Package) { | ||||||
|  | 		if seen[pkg] { | ||||||
|  | 			return | ||||||
|  | 		} | ||||||
|  | 		seen[pkg] = true | ||||||
|  | 		res = append(res, pkg) | ||||||
|  | 		for _, imp := range pkg.Imports() { | ||||||
|  | 			add(imp) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	for _, pkg := range pkgs { | ||||||
|  | 		add(pkg) | ||||||
|  | 	} | ||||||
|  | 	return res | ||||||
|  | } | ||||||
|  | 
 | ||||||
| // @@@ Types | // @@@ Types | ||||||
| 
 | 
 | ||||||
| func (r *reader) typ() types.Type { | func (r *reader) typ() types.Type { | ||||||
|  | @ -372,6 +415,16 @@ func (r *reader) interfaceType() *types.Interface { | ||||||
| 	if implicit { | 	if implicit { | ||||||
| 		iface.MarkImplicit() | 		iface.MarkImplicit() | ||||||
| 	} | 	} | ||||||
|  | 
 | ||||||
|  | 	// We need to call iface.Complete(), but if there are any embedded | ||||||
|  | 	// defined types, then we may not have set their underlying | ||||||
|  | 	// interface type yet. So we need to defer calling Complete until | ||||||
|  | 	// after we've called SetUnderlying everywhere. | ||||||
|  | 	// | ||||||
|  | 	// TODO(mdempsky): After CL 424876 lands, it should be safe to call | ||||||
|  | 	// iface.Complete() immediately. | ||||||
|  | 	r.p.ifaces = append(r.p.ifaces, iface) | ||||||
|  | 
 | ||||||
| 	return iface | 	return iface | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -437,6 +490,11 @@ func (pr *pkgReader) objIdx(idx pkgbits.Index) (*types.Package, string) { | ||||||
| 		return objPkg, objName | 		return objPkg, objName | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	// Ignore local types promoted to global scope (#55110). | ||||||
|  | 	if _, suffix := splitVargenSuffix(objName); suffix != "" { | ||||||
|  | 		return objPkg, objName | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	if objPkg.Scope().Lookup(objName) == nil { | 	if objPkg.Scope().Lookup(objName) == nil { | ||||||
| 		dict := pr.objDictIdx(idx) | 		dict := pr.objDictIdx(idx) | ||||||
| 
 | 
 | ||||||
|  | @ -477,13 +535,41 @@ func (pr *pkgReader) objIdx(idx pkgbits.Index) (*types.Package, string) { | ||||||
| 
 | 
 | ||||||
| 			named.SetTypeParams(r.typeParamNames()) | 			named.SetTypeParams(r.typeParamNames()) | ||||||
| 
 | 
 | ||||||
| 			// TODO(mdempsky): Rewrite receiver types to underlying is an |  | ||||||
| 			// Interface? The go/types importer does this (I think because |  | ||||||
| 			// unit tests expected that), but cmd/compile doesn't care |  | ||||||
| 			// about it, so maybe we can avoid worrying about that here. |  | ||||||
| 			rhs := r.typ() | 			rhs := r.typ() | ||||||
| 			r.p.later(func() { | 			pk := r.p | ||||||
|  | 			pk.laterFor(named, func() { | ||||||
|  | 				// First be sure that the rhs is initialized, if it needs to be initialized. | ||||||
|  | 				delete(pk.laterFors, named) // prevent cycles | ||||||
|  | 				if i, ok := pk.laterFors[rhs]; ok { | ||||||
|  | 					f := pk.laterFns[i] | ||||||
|  | 					pk.laterFns[i] = func() {} // function is running now, so replace it with a no-op | ||||||
|  | 					f()                        // initialize RHS | ||||||
|  | 				} | ||||||
| 				underlying := rhs.Underlying() | 				underlying := rhs.Underlying() | ||||||
|  | 
 | ||||||
|  | 				// If the underlying type is an interface, we need to | ||||||
|  | 				// duplicate its methods so we can replace the receiver | ||||||
|  | 				// parameter's type (#49906). | ||||||
|  | 				if iface, ok := underlying.(*types.Interface); ok && iface.NumExplicitMethods() != 0 { | ||||||
|  | 					methods := make([]*types.Func, iface.NumExplicitMethods()) | ||||||
|  | 					for i := range methods { | ||||||
|  | 						fn := iface.ExplicitMethod(i) | ||||||
|  | 						sig := fn.Type().(*types.Signature) | ||||||
|  | 
 | ||||||
|  | 						recv := types.NewVar(fn.Pos(), fn.Pkg(), "", named) | ||||||
|  | 						methods[i] = types.NewFunc(fn.Pos(), fn.Pkg(), fn.Name(), types.NewSignature(recv, sig.Params(), sig.Results(), sig.Variadic())) | ||||||
|  | 					} | ||||||
|  | 
 | ||||||
|  | 					embeds := make([]types.Type, iface.NumEmbeddeds()) | ||||||
|  | 					for i := range embeds { | ||||||
|  | 						embeds[i] = iface.EmbeddedType(i) | ||||||
|  | 					} | ||||||
|  | 
 | ||||||
|  | 					newIface := types.NewInterfaceType(methods, embeds) | ||||||
|  | 					r.p.ifaces = append(r.p.ifaces, newIface) | ||||||
|  | 					underlying = newIface | ||||||
|  | 				} | ||||||
|  | 
 | ||||||
| 				named.SetUnderlying(underlying) | 				named.SetUnderlying(underlying) | ||||||
| 			}) | 			}) | ||||||
| 
 | 
 | ||||||
							
								
								
									
										75
									
								
								vendor/golang.org/x/tools/internal/gocommand/invoke.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										75
									
								
								vendor/golang.org/x/tools/internal/gocommand/invoke.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -10,8 +10,10 @@ import ( | ||||||
| 	"context" | 	"context" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"io" | 	"io" | ||||||
|  | 	"log" | ||||||
| 	"os" | 	"os" | ||||||
| 	"regexp" | 	"regexp" | ||||||
|  | 	"runtime" | ||||||
| 	"strconv" | 	"strconv" | ||||||
| 	"strings" | 	"strings" | ||||||
| 	"sync" | 	"sync" | ||||||
|  | @ -232,6 +234,12 @@ func (i *Invocation) run(ctx context.Context, stdout, stderr io.Writer) error { | ||||||
| 	return runCmdContext(ctx, cmd) | 	return runCmdContext(ctx, cmd) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // DebugHangingGoCommands may be set by tests to enable additional | ||||||
|  | // instrumentation (including panics) for debugging hanging Go commands. | ||||||
|  | // | ||||||
|  | // See golang/go#54461 for details. | ||||||
|  | var DebugHangingGoCommands = false | ||||||
|  | 
 | ||||||
| // runCmdContext is like exec.CommandContext except it sends os.Interrupt | // runCmdContext is like exec.CommandContext except it sends os.Interrupt | ||||||
| // before os.Kill. | // before os.Kill. | ||||||
| func runCmdContext(ctx context.Context, cmd *exec.Cmd) error { | func runCmdContext(ctx context.Context, cmd *exec.Cmd) error { | ||||||
|  | @ -243,11 +251,24 @@ func runCmdContext(ctx context.Context, cmd *exec.Cmd) error { | ||||||
| 		resChan <- cmd.Wait() | 		resChan <- cmd.Wait() | ||||||
| 	}() | 	}() | ||||||
| 
 | 
 | ||||||
|  | 	// If we're interested in debugging hanging Go commands, stop waiting after a | ||||||
|  | 	// minute and panic with interesting information. | ||||||
|  | 	if DebugHangingGoCommands { | ||||||
|  | 		select { | ||||||
|  | 		case err := <-resChan: | ||||||
|  | 			return err | ||||||
|  | 		case <-time.After(1 * time.Minute): | ||||||
|  | 			HandleHangingGoCommand(cmd.Process) | ||||||
|  | 		case <-ctx.Done(): | ||||||
|  | 		} | ||||||
|  | 	} else { | ||||||
| 		select { | 		select { | ||||||
| 		case err := <-resChan: | 		case err := <-resChan: | ||||||
| 			return err | 			return err | ||||||
| 		case <-ctx.Done(): | 		case <-ctx.Done(): | ||||||
| 		} | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	// Cancelled. Interrupt and see if it ends voluntarily. | 	// Cancelled. Interrupt and see if it ends voluntarily. | ||||||
| 	cmd.Process.Signal(os.Interrupt) | 	cmd.Process.Signal(os.Interrupt) | ||||||
| 	select { | 	select { | ||||||
|  | @ -255,11 +276,63 @@ func runCmdContext(ctx context.Context, cmd *exec.Cmd) error { | ||||||
| 		return err | 		return err | ||||||
| 	case <-time.After(time.Second): | 	case <-time.After(time.Second): | ||||||
| 	} | 	} | ||||||
|  | 
 | ||||||
| 	// Didn't shut down in response to interrupt. Kill it hard. | 	// Didn't shut down in response to interrupt. Kill it hard. | ||||||
| 	cmd.Process.Kill() | 	// TODO(rfindley): per advice from bcmills@, it may be better to send SIGQUIT | ||||||
|  | 	// on certain platforms, such as unix. | ||||||
|  | 	if err := cmd.Process.Kill(); err != nil && DebugHangingGoCommands { | ||||||
|  | 		// Don't panic here as this reliably fails on windows with EINVAL. | ||||||
|  | 		log.Printf("error killing the Go command: %v", err) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	// See above: don't wait indefinitely if we're debugging hanging Go commands. | ||||||
|  | 	if DebugHangingGoCommands { | ||||||
|  | 		select { | ||||||
|  | 		case err := <-resChan: | ||||||
|  | 			return err | ||||||
|  | 		case <-time.After(10 * time.Second): // a shorter wait as resChan should return quickly following Kill | ||||||
|  | 			HandleHangingGoCommand(cmd.Process) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
| 	return <-resChan | 	return <-resChan | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | func HandleHangingGoCommand(proc *os.Process) { | ||||||
|  | 	switch runtime.GOOS { | ||||||
|  | 	case "linux", "darwin", "freebsd", "netbsd": | ||||||
|  | 		fmt.Fprintln(os.Stderr, `DETECTED A HANGING GO COMMAND | ||||||
|  | 
 | ||||||
|  | The gopls test runner has detected a hanging go command. In order to debug | ||||||
|  | this, the output of ps and lsof/fstat is printed below. | ||||||
|  | 
 | ||||||
|  | See golang/go#54461 for more details.`) | ||||||
|  | 
 | ||||||
|  | 		fmt.Fprintln(os.Stderr, "\nps axo ppid,pid,command:") | ||||||
|  | 		fmt.Fprintln(os.Stderr, "-------------------------") | ||||||
|  | 		psCmd := exec.Command("ps", "axo", "ppid,pid,command") | ||||||
|  | 		psCmd.Stdout = os.Stderr | ||||||
|  | 		psCmd.Stderr = os.Stderr | ||||||
|  | 		if err := psCmd.Run(); err != nil { | ||||||
|  | 			panic(fmt.Sprintf("running ps: %v", err)) | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		listFiles := "lsof" | ||||||
|  | 		if runtime.GOOS == "freebsd" || runtime.GOOS == "netbsd" { | ||||||
|  | 			listFiles = "fstat" | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		fmt.Fprintln(os.Stderr, "\n"+listFiles+":") | ||||||
|  | 		fmt.Fprintln(os.Stderr, "-----") | ||||||
|  | 		listFilesCmd := exec.Command(listFiles) | ||||||
|  | 		listFilesCmd.Stdout = os.Stderr | ||||||
|  | 		listFilesCmd.Stderr = os.Stderr | ||||||
|  | 		if err := listFilesCmd.Run(); err != nil { | ||||||
|  | 			panic(fmt.Sprintf("running %s: %v", listFiles, err)) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	panic(fmt.Sprintf("detected hanging go command (pid %d): see golang/go#54461 for more details", proc.Pid)) | ||||||
|  | } | ||||||
|  | 
 | ||||||
| func cmdDebugStr(cmd *exec.Cmd) string { | func cmdDebugStr(cmd *exec.Cmd) string { | ||||||
| 	env := make(map[string]string) | 	env := make(map[string]string) | ||||||
| 	for _, kv := range cmd.Env { | 	for _, kv := range cmd.Env { | ||||||
|  |  | ||||||
							
								
								
									
										13
									
								
								vendor/golang.org/x/tools/internal/gocommand/version.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										13
									
								
								vendor/golang.org/x/tools/internal/gocommand/version.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -10,8 +10,15 @@ import ( | ||||||
| 	"strings" | 	"strings" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| // GoVersion checks the go version by running "go list" with modules off. | // GoVersion reports the minor version number of the highest release | ||||||
| // It returns the X in Go 1.X. | // tag built into the go command on the PATH. | ||||||
|  | // | ||||||
|  | // Note that this may be higher than the version of the go tool used | ||||||
|  | // to build this application, and thus the versions of the standard | ||||||
|  | // go/{scanner,parser,ast,types} packages that are linked into it. | ||||||
|  | // In that case, callers should either downgrade to the version of | ||||||
|  | // go used to build the application, or report an error that the | ||||||
|  | // application is too old to use the go command on the PATH. | ||||||
| func GoVersion(ctx context.Context, inv Invocation, r *Runner) (int, error) { | func GoVersion(ctx context.Context, inv Invocation, r *Runner) (int, error) { | ||||||
| 	inv.Verb = "list" | 	inv.Verb = "list" | ||||||
| 	inv.Args = []string{"-e", "-f", `{{context.ReleaseTags}}`, `--`, `unsafe`} | 	inv.Args = []string{"-e", "-f", `{{context.ReleaseTags}}`, `--`, `unsafe`} | ||||||
|  | @ -38,7 +45,7 @@ func GoVersion(ctx context.Context, inv Invocation, r *Runner) (int, error) { | ||||||
| 	if len(stdout) < 3 { | 	if len(stdout) < 3 { | ||||||
| 		return 0, fmt.Errorf("bad ReleaseTags output: %q", stdout) | 		return 0, fmt.Errorf("bad ReleaseTags output: %q", stdout) | ||||||
| 	} | 	} | ||||||
| 	// Split up "[go1.1 go1.15]" | 	// Split up "[go1.1 go1.15]" and return highest go1.X value. | ||||||
| 	tags := strings.Fields(stdout[1 : len(stdout)-2]) | 	tags := strings.Fields(stdout[1 : len(stdout)-2]) | ||||||
| 	for i := len(tags) - 1; i >= 0; i-- { | 	for i := len(tags) - 1; i >= 0; i-- { | ||||||
| 		var version int | 		var version int | ||||||
|  |  | ||||||
							
								
								
									
										71
									
								
								vendor/golang.org/x/tools/internal/goroot/importcfg.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								vendor/golang.org/x/tools/internal/goroot/importcfg.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,71 @@ | ||||||
|  | // Copyright 2022 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 goroot is a copy of package internal/goroot | ||||||
|  | // in the main GO repot. It provides a utility to produce | ||||||
|  | // an importcfg and import path to package file map mapping | ||||||
|  | // standard library packages to the locations of their export | ||||||
|  | // data files. | ||||||
|  | package goroot | ||||||
|  | 
 | ||||||
|  | import ( | ||||||
|  | 	"bytes" | ||||||
|  | 	"fmt" | ||||||
|  | 	"os/exec" | ||||||
|  | 	"strings" | ||||||
|  | 	"sync" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | // Importcfg returns an importcfg file to be passed to the | ||||||
|  | // Go compiler that contains the cached paths for the .a files for the | ||||||
|  | // standard library. | ||||||
|  | func Importcfg() (string, error) { | ||||||
|  | 	var icfg bytes.Buffer | ||||||
|  | 
 | ||||||
|  | 	m, err := PkgfileMap() | ||||||
|  | 	if err != nil { | ||||||
|  | 		return "", err | ||||||
|  | 	} | ||||||
|  | 	fmt.Fprintf(&icfg, "# import config") | ||||||
|  | 	for importPath, export := range m { | ||||||
|  | 		if importPath != "unsafe" && export != "" { // unsafe | ||||||
|  | 			fmt.Fprintf(&icfg, "\npackagefile %s=%s", importPath, export) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	s := icfg.String() | ||||||
|  | 	return s, nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | var ( | ||||||
|  | 	stdlibPkgfileMap map[string]string | ||||||
|  | 	stdlibPkgfileErr error | ||||||
|  | 	once             sync.Once | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | // PkgfileMap returns a map of package paths to the location on disk | ||||||
|  | // of the .a file for the package. | ||||||
|  | // The caller must not modify the map. | ||||||
|  | func PkgfileMap() (map[string]string, error) { | ||||||
|  | 	once.Do(func() { | ||||||
|  | 		m := make(map[string]string) | ||||||
|  | 		output, err := exec.Command("go", "list", "-export", "-e", "-f", "{{.ImportPath}} {{.Export}}", "std", "cmd").Output() | ||||||
|  | 		if err != nil { | ||||||
|  | 			stdlibPkgfileErr = err | ||||||
|  | 		} | ||||||
|  | 		for _, line := range strings.Split(string(output), "\n") { | ||||||
|  | 			if line == "" { | ||||||
|  | 				continue | ||||||
|  | 			} | ||||||
|  | 			sp := strings.SplitN(line, " ", 2) | ||||||
|  | 			if len(sp) != 2 { | ||||||
|  | 				err = fmt.Errorf("determining pkgfile map: invalid line in go list output: %q", line) | ||||||
|  | 				return | ||||||
|  | 			} | ||||||
|  | 			importPath, export := sp[0], sp[1] | ||||||
|  | 			m[importPath] = export | ||||||
|  | 		} | ||||||
|  | 		stdlibPkgfileMap = m | ||||||
|  | 	}) | ||||||
|  | 	return stdlibPkgfileMap, stdlibPkgfileErr | ||||||
|  | } | ||||||
|  | @ -9,6 +9,7 @@ import ( | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"go/constant" | 	"go/constant" | ||||||
| 	"go/token" | 	"go/token" | ||||||
|  | 	"io" | ||||||
| 	"math/big" | 	"math/big" | ||||||
| 	"os" | 	"os" | ||||||
| 	"runtime" | 	"runtime" | ||||||
|  | @ -94,7 +95,7 @@ func NewPkgDecoder(pkgPath, input string) PkgDecoder { | ||||||
| 	pr.elemEnds = make([]uint32, pr.elemEndsEnds[len(pr.elemEndsEnds)-1]) | 	pr.elemEnds = make([]uint32, pr.elemEndsEnds[len(pr.elemEndsEnds)-1]) | ||||||
| 	assert(binary.Read(r, binary.LittleEndian, pr.elemEnds[:]) == nil) | 	assert(binary.Read(r, binary.LittleEndian, pr.elemEnds[:]) == nil) | ||||||
| 
 | 
 | ||||||
| 	pos, err := r.Seek(0, os.SEEK_CUR) | 	pos, err := r.Seek(0, io.SeekCurrent) | ||||||
| 	assert(err == nil) | 	assert(err == nil) | ||||||
| 
 | 
 | ||||||
| 	pr.elemData = input[pos:] | 	pr.elemData = input[pos:] | ||||||
|  | @ -237,7 +238,7 @@ func (r *Decoder) Sync(mWant SyncMarker) { | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	pos, _ := r.Data.Seek(0, os.SEEK_CUR) // TODO(mdempsky): io.SeekCurrent after #44505 is resolved | 	pos, _ := r.Data.Seek(0, io.SeekCurrent) | ||||||
| 	mHave := SyncMarker(r.rawUvarint()) | 	mHave := SyncMarker(r.rawUvarint()) | ||||||
| 	writerPCs := make([]int, r.rawUvarint()) | 	writerPCs := make([]int, r.rawUvarint()) | ||||||
| 	for i := range writerPCs { | 	for i := range writerPCs { | ||||||
|  | @ -148,6 +148,7 @@ type Encoder struct { | ||||||
| 	p *PkgEncoder | 	p *PkgEncoder | ||||||
| 
 | 
 | ||||||
| 	Relocs   []RelocEnt | 	Relocs   []RelocEnt | ||||||
|  | 	RelocMap map[RelocEnt]uint32 | ||||||
| 	Data     bytes.Buffer // accumulated element bitstream data | 	Data     bytes.Buffer // accumulated element bitstream data | ||||||
| 
 | 
 | ||||||
| 	encodingRelocHeader bool | 	encodingRelocHeader bool | ||||||
|  | @ -210,15 +211,18 @@ func (w *Encoder) rawVarint(x int64) { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (w *Encoder) rawReloc(r RelocKind, idx Index) int { | func (w *Encoder) rawReloc(r RelocKind, idx Index) int { | ||||||
| 	// TODO(mdempsky): Use map for lookup; this takes quadratic time. | 	e := RelocEnt{r, idx} | ||||||
| 	for i, rEnt := range w.Relocs { | 	if w.RelocMap != nil { | ||||||
| 		if rEnt.Kind == r && rEnt.Idx == idx { | 		if i, ok := w.RelocMap[e]; ok { | ||||||
| 			return i | 			return int(i) | ||||||
| 		} | 		} | ||||||
|  | 	} else { | ||||||
|  | 		w.RelocMap = make(map[RelocEnt]uint32) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	i := len(w.Relocs) | 	i := len(w.Relocs) | ||||||
| 	w.Relocs = append(w.Relocs, RelocEnt{r, idx}) | 	w.RelocMap[e] = uint32(i) | ||||||
|  | 	w.Relocs = append(w.Relocs, e) | ||||||
| 	return i | 	return i | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -5,11 +5,11 @@ | ||||||
| package pkgbits | package pkgbits | ||||||
| 
 | 
 | ||||||
| // A RelocKind indicates a particular section within a unified IR export. | // A RelocKind indicates a particular section within a unified IR export. | ||||||
| type RelocKind int | type RelocKind int32 | ||||||
| 
 | 
 | ||||||
| // An Index represents a bitstream element index within a particular | // An Index represents a bitstream element index within a particular | ||||||
| // section. | // section. | ||||||
| type Index int | type Index int32 | ||||||
| 
 | 
 | ||||||
| // A relocEnt (relocation entry) is an entry in an element's local | // A relocEnt (relocation entry) is an entry in an element's local | ||||||
| // reference table. | // reference table. | ||||||
							
								
								
									
										11
									
								
								vendor/modules.txt
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								vendor/modules.txt
									
										
									
									
										vendored
									
									
								
							|  | @ -347,7 +347,7 @@ github.com/mattn/go-isatty | ||||||
| ## explicit; go 1.19 | ## explicit; go 1.19 | ||||||
| github.com/microcosm-cc/bluemonday | github.com/microcosm-cc/bluemonday | ||||||
| github.com/microcosm-cc/bluemonday/css | github.com/microcosm-cc/bluemonday/css | ||||||
| # github.com/miekg/dns v1.1.50 | # github.com/miekg/dns v1.1.51 | ||||||
| ## explicit; go 1.14 | ## explicit; go 1.14 | ||||||
| github.com/miekg/dns | github.com/miekg/dns | ||||||
| # github.com/minio/md5-simd v1.1.2 | # github.com/minio/md5-simd v1.1.2 | ||||||
|  | @ -769,7 +769,7 @@ golang.org/x/image/tiff/lzw | ||||||
| golang.org/x/image/vp8 | golang.org/x/image/vp8 | ||||||
| golang.org/x/image/vp8l | golang.org/x/image/vp8l | ||||||
| golang.org/x/image/webp | golang.org/x/image/webp | ||||||
| # golang.org/x/mod v0.6.0-dev.0.20220907135952-02c991387e35 | # golang.org/x/mod v0.7.0 | ||||||
| ## explicit; go 1.17 | ## explicit; go 1.17 | ||||||
| golang.org/x/mod/semver | golang.org/x/mod/semver | ||||||
| # golang.org/x/net v0.7.0 | # golang.org/x/net v0.7.0 | ||||||
|  | @ -814,19 +814,20 @@ golang.org/x/text/transform | ||||||
| golang.org/x/text/unicode/bidi | golang.org/x/text/unicode/bidi | ||||||
| golang.org/x/text/unicode/norm | golang.org/x/text/unicode/norm | ||||||
| golang.org/x/text/width | golang.org/x/text/width | ||||||
| # golang.org/x/tools v0.1.12 | # golang.org/x/tools v0.3.0 | ||||||
| ## explicit; go 1.18 | ## explicit; go 1.18 | ||||||
| golang.org/x/tools/go/gcexportdata | golang.org/x/tools/go/gcexportdata | ||||||
| golang.org/x/tools/go/internal/gcimporter |  | ||||||
| golang.org/x/tools/go/internal/packagesdriver | golang.org/x/tools/go/internal/packagesdriver | ||||||
| golang.org/x/tools/go/internal/pkgbits |  | ||||||
| golang.org/x/tools/go/packages | golang.org/x/tools/go/packages | ||||||
| golang.org/x/tools/internal/event | golang.org/x/tools/internal/event | ||||||
| golang.org/x/tools/internal/event/core | golang.org/x/tools/internal/event/core | ||||||
| golang.org/x/tools/internal/event/keys | golang.org/x/tools/internal/event/keys | ||||||
| golang.org/x/tools/internal/event/label | golang.org/x/tools/internal/event/label | ||||||
|  | golang.org/x/tools/internal/gcimporter | ||||||
| golang.org/x/tools/internal/gocommand | golang.org/x/tools/internal/gocommand | ||||||
|  | golang.org/x/tools/internal/goroot | ||||||
| golang.org/x/tools/internal/packagesinternal | golang.org/x/tools/internal/packagesinternal | ||||||
|  | golang.org/x/tools/internal/pkgbits | ||||||
| golang.org/x/tools/internal/typeparams | golang.org/x/tools/internal/typeparams | ||||||
| golang.org/x/tools/internal/typesinternal | golang.org/x/tools/internal/typesinternal | ||||||
| # google.golang.org/appengine v1.6.7 | # google.golang.org/appengine v1.6.7 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue