All checks were successful
		
		
	
	Test / Create distribution (push) Successful in 32s
				
			Test / Sandbox (push) Successful in 1m54s
				
			Test / Hakurei (push) Successful in 2m47s
				
			Test / Sandbox (race detector) (push) Successful in 3m5s
				
			Test / Planterette (push) Successful in 3m30s
				
			Test / Hakurei (race detector) (push) Successful in 4m20s
				
			Test / Flake checks (push) Successful in 1m10s
				
			Signed-off-by: Ophestra <cat@gensokyo.uk>
		
			
				
	
	
		
			90 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Perl
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Perl
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env perl
 | |
| # Copyright 2009 The Go Authors. All rights reserved.
 | |
| # Use of this source code is governed by a BSD-style
 | |
| # license that can be found in the LICENSE file.
 | |
| 
 | |
| use strict;
 | |
| use POSIX ();
 | |
| 
 | |
| my $command = "mksysnum_linux.pl ". join(' ', @ARGV);
 | |
| my $uname_arch = (POSIX::uname)[4];
 | |
| my %syscall_cutoff_arch = (
 | |
| 	"x86_64" => 302,
 | |
| 	"aarch64" => 281,
 | |
| );
 | |
| 
 | |
| print <<EOF;
 | |
| // $command
 | |
| // Code generated by the command above; DO NOT EDIT.
 | |
| 
 | |
| package seccomp
 | |
| 
 | |
| import . "syscall"
 | |
| 
 | |
| var syscallNum = map[string]int{
 | |
| EOF
 | |
| 
 | |
| my $offset = 0;
 | |
| my $state = -1;
 | |
| 
 | |
| sub fmt {
 | |
| 	my ($name, $num) = @_;
 | |
| 	if($num > 999){
 | |
| 		# ignore deprecated syscalls that are no longer implemented
 | |
| 		# https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/uapi/asm-generic/unistd.h?id=refs/heads/master#n716
 | |
| 		return;
 | |
| 	}
 | |
| 	(my $name_upper = $name) =~ y/a-z/A-Z/;
 | |
| 	$num = $num + $offset;
 | |
| 	if($num > $syscall_cutoff_arch{$uname_arch}){ # not wired in Go standard library
 | |
| 		if($state < 0){
 | |
| 			print "	\"$name\": SYS_$name_upper,\n";
 | |
| 		}
 | |
| 		else{
 | |
| 			print " SYS_$name_upper = $num;\n";
 | |
| 		}
 | |
| 	}
 | |
| 	elsif($state < 0){
 | |
| 		print "	\"$name\": SYS_$name_upper,\n";
 | |
| 	}
 | |
| 	else{
 | |
| 		return;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| GENERATE:
 | |
| 
 | |
| my $prev;
 | |
| open(GCC, "gcc -E -dD $ARGV[0] |") || die "can't run gcc";
 | |
| while(<GCC>){
 | |
| 	if(/^#define __NR_Linux\s+([0-9]+)/){
 | |
| 		# mips/mips64: extract offset
 | |
| 		$offset = $1;
 | |
| 	}
 | |
| 	elsif(/^#define __NR_syscalls\s+/) {
 | |
| 		# ignore redefinitions of __NR_syscalls
 | |
| 	}
 | |
| 	elsif(/^#define __NR_(\w+)\s+([0-9]+)/){
 | |
| 		$prev = $2;
 | |
| 		fmt($1, $2);
 | |
| 	}
 | |
| 	elsif(/^#define __NR3264_(\w+)\s+([0-9]+)/){
 | |
| 		$prev = $2;
 | |
| 		fmt($1, $2);
 | |
| 	}
 | |
| 	elsif(/^#define __NR_(\w+)\s+\(\w+\+\s*([0-9]+)\)/){
 | |
| 		fmt($1, $prev+$2)
 | |
| 	}
 | |
| 	elsif(/^#define __NR_(\w+)\s+\(__NR_Linux \+ ([0-9]+)/){
 | |
| 		fmt($1, $2);
 | |
| 	}
 | |
| }
 | |
| 
 | |
| if($state < 0){
 | |
| 	$state = $state + 1;
 | |
| 	print "}\n\nconst (\n";
 | |
| 	goto GENERATE;
 | |
| }
 | |
| 
 | |
| print ")";
 |