func buildX86_64()

in arch/mk_syscalls_linux.go [293:332]


func buildX86_64(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] == "x32" {
			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:     "X86_64",
		Syscalls: syscalls,
	}, nil
}