diff options
| author | Ophestra <cat@gensokyo.uk> | 2025-11-07 04:02:40 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2025-11-07 04:30:06 +0900 |
| commit | 3d188ef884d6147d579e59eb8f51332bb8959ad5 (patch) | |
| tree | 4d5bd73ee6e9f5c4fde3824ae2c366ea2ef702f1 /container/std/mksysnum_linux.pl | |
| parent | 34ccda84b23f381b22496fda89785f4a48802ab6 (diff) | |
std: separate seccomp constants
This avoids inadvertently using PNRs as syscall numbers.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'container/std/mksysnum_linux.pl')
| -rwxr-xr-x | container/std/mksysnum_linux.pl | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/container/std/mksysnum_linux.pl b/container/std/mksysnum_linux.pl index 95a636d3..65689dd2 100755 --- a/container/std/mksysnum_linux.pl +++ b/container/std/mksysnum_linux.pl @@ -22,7 +22,7 @@ package std import . "syscall" -var syscallNum = map[string]int{ +var syscallNum = map[string]ScmpSyscall{ EOF my $offset = 0; @@ -37,16 +37,14 @@ sub fmt { } (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"; - } + if($num > $syscall_cutoff_arch{$uname_arch} && $state == 0){ # not wired in Go standard library + print " SYS_$name_upper = $num\n"; } - elsif($state < 0){ - print " \"$name\": SYS_$name_upper,\n"; + elsif($state == -1){ + print " \"$name\": SNR_$name_upper,\n"; + } + elsif($state == 1){ + print " SNR_$name_upper ScmpSyscall = SYS_$name_upper\n"; } else{ return; @@ -81,10 +79,16 @@ while(<GCC>){ } } -if($state < 0){ - $state = $state + 1; +if($state == -1){ print "}\n\nconst (\n"; - goto GENERATE; } +elsif($state == 0){ + print ")\n\nconst (\n"; +} +elsif($state == 1){ + print ")"; + exit; +} +++$state; +goto GENERATE; -print ")"; |
