sandbox/seccomp: emit syscall constants

Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
2025-06-30 20:34:33 +09:00
parent 972f4006f0
commit 8ef71e14d5
2 changed files with 166 additions and 76 deletions

View File

@@ -19,6 +19,7 @@ var syscallNum = map[string]int{
EOF
my $offset = 0;
my $state = -1;
sub fmt {
my ($name, $num) = @_;
@@ -30,13 +31,23 @@ sub fmt {
(my $name_upper = $name) =~ y/a-z/A-Z/;
$num = $num + $offset;
if($num > 302){ # not wired in Go standard library
print " \"$name\": $num,\n";
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{
print " \"$name\": SYS_$name_upper,\n";
return;
}
}
GENERATE:
my $prev;
open(GCC, "gcc -E -dD $ARGV[0] |") || die "can't run gcc";
while(<GCC>){
@@ -63,6 +74,10 @@ while(<GCC>){
}
}
print <<EOF;
if($state < 0){
$state = $state + 1;
print "}\n\nconst (\n";
goto GENERATE;
}
EOF
print ")";