in arch/mk_syscalls_linux.go [252:291]
func buildX32(dir string) (*Arch, error) {
const path = "/arch/x86/entry/syscalls/syscall_64.tbl"
syscalls, err := readSyscalls(path, dir, func(line string) (*Syscall, error) {
if len(line) == 0 || strings.HasPrefix(line, "#") {
return nil, nil
}
fields := strings.Fields(line)
if len(fields) < 3 {
return nil, fmt.Errorf("unexpected line format: %v", line)
}
if fields[1] == "x64" {
return nil, nil
}
num, err := strconv.Atoi(fields[0])
if err != nil {
return nil, fmt.Errorf("failed to parse syscall number: %v at '%v'", err, line)
}
return &Syscall{
Num: num,
Name: fields[2],
}, nil
})
if err != nil {
return nil, err
}
sort.Slice(syscalls, func(i, j int) bool {
return syscalls[i].Num < syscalls[j].Num
})
return &Arch{
Name: "X32",
Syscalls: syscalls,
}, nil
}