go-seccomp: add support for arm64.
BUG=None
TEST=Ran 'go test -cpu=10 -test_install -test_endian' on host.
TEST=Cross compiled test with 'x86_64-cros-linux-gnu-go' and ran on a chell device.
TEST=Cross compiled test with 'armv7a-cros-linux-gnueabi-go' and ran on a daisy device.
TEST=Cross compiled test with 'aarch64-cros-linux-gnu-go' and ran on an elm device.
Change-Id: I577a42a83515fc40cb06e90d8d3746f55816a110
Reviewed-on: https://chromium-review.googlesource.com/740011
Commit-Ready: Rahul Chaudhry <rahulchaudhry@chromium.org>
Tested-by: Rahul Chaudhry <rahulchaudhry@chromium.org>
Reviewed-by: Manoj Gupta <manojgupta@chromium.org>
Reviewed-by: Rahul Chaudhry <rahulchaudhry@chromium.org>
diff --git a/src/chromiumos/seccomp/audit_arm64.go b/src/chromiumos/seccomp/audit_arm64.go
new file mode 100644
index 0000000..ad06179
--- /dev/null
+++ b/src/chromiumos/seccomp/audit_arm64.go
@@ -0,0 +1,13 @@
+// Copyright 2015 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package seccomp
+
+// #include <linux/audit.h>
+import "C"
+
+const (
+ auditArch = C.AUDIT_ARCH_AARCH64
+ nbits = 64
+)
diff --git a/src/chromiumos/seccomp/syscalls_amd64.go b/src/chromiumos/seccomp/syscalls_amd64.go
index 77c90da..409fefb 100644
--- a/src/chromiumos/seccomp/syscalls_amd64.go
+++ b/src/chromiumos/seccomp/syscalls_amd64.go
@@ -2,7 +2,7 @@
package seccomp
-// #include <asm/unistd.h>
+// #include "unistd.h"
import "C"
// syscallNum maps system call names to numbers.
diff --git a/src/chromiumos/seccomp/syscalls_arm.go b/src/chromiumos/seccomp/syscalls_arm.go
index ae7156a..bec0f51 100644
--- a/src/chromiumos/seccomp/syscalls_arm.go
+++ b/src/chromiumos/seccomp/syscalls_arm.go
@@ -2,7 +2,7 @@
package seccomp
-// #include <asm/unistd.h>
+// #include "unistd.h"
import "C"
// syscallNum maps system call names to numbers.
diff --git a/src/chromiumos/seccomp/syscalls_arm64.go b/src/chromiumos/seccomp/syscalls_arm64.go
new file mode 100644
index 0000000..af71acb
--- /dev/null
+++ b/src/chromiumos/seccomp/syscalls_arm64.go
@@ -0,0 +1,323 @@
+// DO NOT EDIT. Autogenerated by syscalls_gen.go
+
+package seccomp
+
+// #include "unistd.h"
+import "C"
+
+// syscallNum maps system call names to numbers.
+var syscallNum = map[string]int{
+ "io_setup": C.__NR_io_setup,
+ "io_destroy": C.__NR_io_destroy,
+ "io_submit": C.__NR_io_submit,
+ "io_cancel": C.__NR_io_cancel,
+ "io_getevents": C.__NR_io_getevents,
+ "setxattr": C.__NR_setxattr,
+ "lsetxattr": C.__NR_lsetxattr,
+ "fsetxattr": C.__NR_fsetxattr,
+ "getxattr": C.__NR_getxattr,
+ "lgetxattr": C.__NR_lgetxattr,
+ "fgetxattr": C.__NR_fgetxattr,
+ "listxattr": C.__NR_listxattr,
+ "llistxattr": C.__NR_llistxattr,
+ "flistxattr": C.__NR_flistxattr,
+ "removexattr": C.__NR_removexattr,
+ "lremovexattr": C.__NR_lremovexattr,
+ "fremovexattr": C.__NR_fremovexattr,
+ "getcwd": C.__NR_getcwd,
+ "lookup_dcookie": C.__NR_lookup_dcookie,
+ "eventfd2": C.__NR_eventfd2,
+ "epoll_create1": C.__NR_epoll_create1,
+ "epoll_ctl": C.__NR_epoll_ctl,
+ "epoll_pwait": C.__NR_epoll_pwait,
+ "dup": C.__NR_dup,
+ "dup3": C.__NR_dup3,
+ "inotify_init1": C.__NR_inotify_init1,
+ "inotify_add_watch": C.__NR_inotify_add_watch,
+ "inotify_rm_watch": C.__NR_inotify_rm_watch,
+ "ioctl": C.__NR_ioctl,
+ "ioprio_set": C.__NR_ioprio_set,
+ "ioprio_get": C.__NR_ioprio_get,
+ "flock": C.__NR_flock,
+ "mknodat": C.__NR_mknodat,
+ "mkdirat": C.__NR_mkdirat,
+ "unlinkat": C.__NR_unlinkat,
+ "symlinkat": C.__NR_symlinkat,
+ "linkat": C.__NR_linkat,
+ "renameat": C.__NR_renameat,
+ "umount2": C.__NR_umount2,
+ "mount": C.__NR_mount,
+ "pivot_root": C.__NR_pivot_root,
+ "nfsservctl": C.__NR_nfsservctl,
+ "fallocate": C.__NR_fallocate,
+ "faccessat": C.__NR_faccessat,
+ "chdir": C.__NR_chdir,
+ "fchdir": C.__NR_fchdir,
+ "chroot": C.__NR_chroot,
+ "fchmod": C.__NR_fchmod,
+ "fchmodat": C.__NR_fchmodat,
+ "fchownat": C.__NR_fchownat,
+ "fchown": C.__NR_fchown,
+ "openat": C.__NR_openat,
+ "close": C.__NR_close,
+ "vhangup": C.__NR_vhangup,
+ "pipe2": C.__NR_pipe2,
+ "quotactl": C.__NR_quotactl,
+ "getdents64": C.__NR_getdents64,
+ "read": C.__NR_read,
+ "write": C.__NR_write,
+ "readv": C.__NR_readv,
+ "writev": C.__NR_writev,
+ "pread64": C.__NR_pread64,
+ "pwrite64": C.__NR_pwrite64,
+ "preadv": C.__NR_preadv,
+ "pwritev": C.__NR_pwritev,
+ "pselect6": C.__NR_pselect6,
+ "ppoll": C.__NR_ppoll,
+ "signalfd4": C.__NR_signalfd4,
+ "vmsplice": C.__NR_vmsplice,
+ "splice": C.__NR_splice,
+ "tee": C.__NR_tee,
+ "readlinkat": C.__NR_readlinkat,
+ "sync": C.__NR_sync,
+ "fsync": C.__NR_fsync,
+ "fdatasync": C.__NR_fdatasync,
+ "sync_file_range": C.__NR_sync_file_range,
+ "timerfd_create": C.__NR_timerfd_create,
+ "timerfd_settime": C.__NR_timerfd_settime,
+ "timerfd_gettime": C.__NR_timerfd_gettime,
+ "utimensat": C.__NR_utimensat,
+ "acct": C.__NR_acct,
+ "capget": C.__NR_capget,
+ "capset": C.__NR_capset,
+ "personality": C.__NR_personality,
+ "exit": C.__NR_exit,
+ "exit_group": C.__NR_exit_group,
+ "waitid": C.__NR_waitid,
+ "set_tid_address": C.__NR_set_tid_address,
+ "unshare": C.__NR_unshare,
+ "futex": C.__NR_futex,
+ "set_robust_list": C.__NR_set_robust_list,
+ "get_robust_list": C.__NR_get_robust_list,
+ "nanosleep": C.__NR_nanosleep,
+ "getitimer": C.__NR_getitimer,
+ "setitimer": C.__NR_setitimer,
+ "kexec_load": C.__NR_kexec_load,
+ "init_module": C.__NR_init_module,
+ "delete_module": C.__NR_delete_module,
+ "timer_create": C.__NR_timer_create,
+ "timer_gettime": C.__NR_timer_gettime,
+ "timer_getoverrun": C.__NR_timer_getoverrun,
+ "timer_settime": C.__NR_timer_settime,
+ "timer_delete": C.__NR_timer_delete,
+ "clock_settime": C.__NR_clock_settime,
+ "clock_gettime": C.__NR_clock_gettime,
+ "clock_getres": C.__NR_clock_getres,
+ "clock_nanosleep": C.__NR_clock_nanosleep,
+ "syslog": C.__NR_syslog,
+ "ptrace": C.__NR_ptrace,
+ "sched_setparam": C.__NR_sched_setparam,
+ "sched_setscheduler": C.__NR_sched_setscheduler,
+ "sched_getscheduler": C.__NR_sched_getscheduler,
+ "sched_getparam": C.__NR_sched_getparam,
+ "sched_setaffinity": C.__NR_sched_setaffinity,
+ "sched_getaffinity": C.__NR_sched_getaffinity,
+ "sched_yield": C.__NR_sched_yield,
+ "sched_get_priority_max": C.__NR_sched_get_priority_max,
+ "sched_get_priority_min": C.__NR_sched_get_priority_min,
+ "sched_rr_get_interval": C.__NR_sched_rr_get_interval,
+ "restart_syscall": C.__NR_restart_syscall,
+ "kill": C.__NR_kill,
+ "tkill": C.__NR_tkill,
+ "tgkill": C.__NR_tgkill,
+ "sigaltstack": C.__NR_sigaltstack,
+ "rt_sigsuspend": C.__NR_rt_sigsuspend,
+ "rt_sigaction": C.__NR_rt_sigaction,
+ "rt_sigprocmask": C.__NR_rt_sigprocmask,
+ "rt_sigpending": C.__NR_rt_sigpending,
+ "rt_sigtimedwait": C.__NR_rt_sigtimedwait,
+ "rt_sigqueueinfo": C.__NR_rt_sigqueueinfo,
+ "rt_sigreturn": C.__NR_rt_sigreturn,
+ "setpriority": C.__NR_setpriority,
+ "getpriority": C.__NR_getpriority,
+ "reboot": C.__NR_reboot,
+ "setregid": C.__NR_setregid,
+ "setgid": C.__NR_setgid,
+ "setreuid": C.__NR_setreuid,
+ "setuid": C.__NR_setuid,
+ "setresuid": C.__NR_setresuid,
+ "getresuid": C.__NR_getresuid,
+ "setresgid": C.__NR_setresgid,
+ "getresgid": C.__NR_getresgid,
+ "setfsuid": C.__NR_setfsuid,
+ "setfsgid": C.__NR_setfsgid,
+ "times": C.__NR_times,
+ "setpgid": C.__NR_setpgid,
+ "getpgid": C.__NR_getpgid,
+ "getsid": C.__NR_getsid,
+ "setsid": C.__NR_setsid,
+ "getgroups": C.__NR_getgroups,
+ "setgroups": C.__NR_setgroups,
+ "uname": C.__NR_uname,
+ "sethostname": C.__NR_sethostname,
+ "setdomainname": C.__NR_setdomainname,
+ "getrlimit": C.__NR_getrlimit,
+ "setrlimit": C.__NR_setrlimit,
+ "getrusage": C.__NR_getrusage,
+ "umask": C.__NR_umask,
+ "prctl": C.__NR_prctl,
+ "getcpu": C.__NR_getcpu,
+ "gettimeofday": C.__NR_gettimeofday,
+ "settimeofday": C.__NR_settimeofday,
+ "adjtimex": C.__NR_adjtimex,
+ "getpid": C.__NR_getpid,
+ "getppid": C.__NR_getppid,
+ "getuid": C.__NR_getuid,
+ "geteuid": C.__NR_geteuid,
+ "getgid": C.__NR_getgid,
+ "getegid": C.__NR_getegid,
+ "gettid": C.__NR_gettid,
+ "sysinfo": C.__NR_sysinfo,
+ "mq_open": C.__NR_mq_open,
+ "mq_unlink": C.__NR_mq_unlink,
+ "mq_timedsend": C.__NR_mq_timedsend,
+ "mq_timedreceive": C.__NR_mq_timedreceive,
+ "mq_notify": C.__NR_mq_notify,
+ "mq_getsetattr": C.__NR_mq_getsetattr,
+ "msgget": C.__NR_msgget,
+ "msgctl": C.__NR_msgctl,
+ "msgrcv": C.__NR_msgrcv,
+ "msgsnd": C.__NR_msgsnd,
+ "semget": C.__NR_semget,
+ "semctl": C.__NR_semctl,
+ "semtimedop": C.__NR_semtimedop,
+ "semop": C.__NR_semop,
+ "shmget": C.__NR_shmget,
+ "shmctl": C.__NR_shmctl,
+ "shmat": C.__NR_shmat,
+ "shmdt": C.__NR_shmdt,
+ "socket": C.__NR_socket,
+ "socketpair": C.__NR_socketpair,
+ "bind": C.__NR_bind,
+ "listen": C.__NR_listen,
+ "accept": C.__NR_accept,
+ "connect": C.__NR_connect,
+ "getsockname": C.__NR_getsockname,
+ "getpeername": C.__NR_getpeername,
+ "sendto": C.__NR_sendto,
+ "recvfrom": C.__NR_recvfrom,
+ "setsockopt": C.__NR_setsockopt,
+ "getsockopt": C.__NR_getsockopt,
+ "shutdown": C.__NR_shutdown,
+ "sendmsg": C.__NR_sendmsg,
+ "recvmsg": C.__NR_recvmsg,
+ "readahead": C.__NR_readahead,
+ "brk": C.__NR_brk,
+ "munmap": C.__NR_munmap,
+ "mremap": C.__NR_mremap,
+ "add_key": C.__NR_add_key,
+ "request_key": C.__NR_request_key,
+ "keyctl": C.__NR_keyctl,
+ "clone": C.__NR_clone,
+ "execve": C.__NR_execve,
+ "swapon": C.__NR_swapon,
+ "swapoff": C.__NR_swapoff,
+ "mprotect": C.__NR_mprotect,
+ "msync": C.__NR_msync,
+ "mlock": C.__NR_mlock,
+ "munlock": C.__NR_munlock,
+ "mlockall": C.__NR_mlockall,
+ "munlockall": C.__NR_munlockall,
+ "mincore": C.__NR_mincore,
+ "madvise": C.__NR_madvise,
+ "remap_file_pages": C.__NR_remap_file_pages,
+ "mbind": C.__NR_mbind,
+ "get_mempolicy": C.__NR_get_mempolicy,
+ "set_mempolicy": C.__NR_set_mempolicy,
+ "migrate_pages": C.__NR_migrate_pages,
+ "move_pages": C.__NR_move_pages,
+ "rt_tgsigqueueinfo": C.__NR_rt_tgsigqueueinfo,
+ "perf_event_open": C.__NR_perf_event_open,
+ "accept4": C.__NR_accept4,
+ "recvmmsg": C.__NR_recvmmsg,
+ "arch_specific_syscall": C.__NR_arch_specific_syscall,
+ "wait4": C.__NR_wait4,
+ "prlimit64": C.__NR_prlimit64,
+ "fanotify_init": C.__NR_fanotify_init,
+ "fanotify_mark": C.__NR_fanotify_mark,
+ "name_to_handle_at": C.__NR_name_to_handle_at,
+ "open_by_handle_at": C.__NR_open_by_handle_at,
+ "clock_adjtime": C.__NR_clock_adjtime,
+ "syncfs": C.__NR_syncfs,
+ "setns": C.__NR_setns,
+ "sendmmsg": C.__NR_sendmmsg,
+ "process_vm_readv": C.__NR_process_vm_readv,
+ "process_vm_writev": C.__NR_process_vm_writev,
+ "kcmp": C.__NR_kcmp,
+ "finit_module": C.__NR_finit_module,
+ "sched_setattr": C.__NR_sched_setattr,
+ "sched_getattr": C.__NR_sched_getattr,
+ "renameat2": C.__NR_renameat2,
+ "seccomp": C.__NR_seccomp,
+ "getrandom": C.__NR_getrandom,
+ "memfd_create": C.__NR_memfd_create,
+ "bpf": C.__NR_bpf,
+ "execveat": C.__NR_execveat,
+ "userfaultfd": C.__NR_userfaultfd,
+ "membarrier": C.__NR_membarrier,
+ "mlock2": C.__NR_mlock2,
+ "open": C.__NR_open,
+ "link": C.__NR_link,
+ "unlink": C.__NR_unlink,
+ "mknod": C.__NR_mknod,
+ "chmod": C.__NR_chmod,
+ "chown": C.__NR_chown,
+ "mkdir": C.__NR_mkdir,
+ "rmdir": C.__NR_rmdir,
+ "lchown": C.__NR_lchown,
+ "access": C.__NR_access,
+ "rename": C.__NR_rename,
+ "readlink": C.__NR_readlink,
+ "symlink": C.__NR_symlink,
+ "utimes": C.__NR_utimes,
+ "pipe": C.__NR_pipe,
+ "dup2": C.__NR_dup2,
+ "epoll_create": C.__NR_epoll_create,
+ "inotify_init": C.__NR_inotify_init,
+ "eventfd": C.__NR_eventfd,
+ "signalfd": C.__NR_signalfd,
+ "alarm": C.__NR_alarm,
+ "getpgrp": C.__NR_getpgrp,
+ "pause": C.__NR_pause,
+ "time": C.__NR_time,
+ "utime": C.__NR_utime,
+ "creat": C.__NR_creat,
+ "getdents": C.__NR_getdents,
+ "futimesat": C.__NR_futimesat,
+ "select": C.__NR_select,
+ "poll": C.__NR_poll,
+ "epoll_wait": C.__NR_epoll_wait,
+ "ustat": C.__NR_ustat,
+ "vfork": C.__NR_vfork,
+ "oldwait4": C.__NR_oldwait4,
+ "recv": C.__NR_recv,
+ "send": C.__NR_send,
+ "bdflush": C.__NR_bdflush,
+ "umount": C.__NR_umount,
+ "uselib": C.__NR_uselib,
+ "_sysctl": C.__NR__sysctl,
+ "fork": C.__NR_fork,
+ "fcntl": C.__NR_fcntl,
+ "statfs": C.__NR_statfs,
+ "fstatfs": C.__NR_fstatfs,
+ "truncate": C.__NR_truncate,
+ "ftruncate": C.__NR_ftruncate,
+ "lseek": C.__NR_lseek,
+ "sendfile": C.__NR_sendfile,
+ "newfstatat": C.__NR_newfstatat,
+ "fstat": C.__NR_fstat,
+ "mmap": C.__NR_mmap,
+ "fadvise64": C.__NR_fadvise64,
+ "stat": C.__NR_stat,
+ "lstat": C.__NR_lstat,
+}
diff --git a/src/chromiumos/seccomp/syscalls_gen.go b/src/chromiumos/seccomp/syscalls_gen.go
index 079b3e9..47be10c 100644
--- a/src/chromiumos/seccomp/syscalls_gen.go
+++ b/src/chromiumos/seccomp/syscalls_gen.go
@@ -6,8 +6,9 @@
// syscalls_gen processes system headers and generates a mapping from system call names to numbers.
// Usage:
-// $ echo "#include <asm/unistd.h>" | x86_64-cros-linux-gnu-gcc -E -dD - | go run syscalls_gen.go | gofmt > syscalls_amd64.go
-// $ echo "#include <asm/unistd.h>" | armv7a-cros-linux-gnueabi-gcc -E -dD - | go run syscalls_gen.go | gofmt > syscalls_arm.go
+// $ echo "#include \"unistd.h\"" | x86_64-cros-linux-gnu-gcc -E -dD - | go run syscalls_gen.go | gofmt > syscalls_amd64.go
+// $ echo "#include \"unistd.h\"" | armv7a-cros-linux-gnueabi-gcc -E -dD - | go run syscalls_gen.go | gofmt > syscalls_arm.go
+// $ echo "#include \"unistd.h\"" | aarch64-cros-linux-gnu-gcc -E -dD - | go run syscalls_gen.go | gofmt > syscalls_arm64.go
package main
import (
@@ -47,7 +48,7 @@
fmt.Println("// DO NOT EDIT. Autogenerated by syscalls_gen.go")
fmt.Println()
fmt.Println("package seccomp")
- fmt.Println("// #include <asm/unistd.h>")
+ fmt.Println("// #include \"unistd.h\"")
fmt.Println("import \"C\"")
fmt.Println("// syscallNum maps system call names to numbers.")
fmt.Println("var syscallNum = map[string]int{")
diff --git a/src/chromiumos/seccomp/unistd.h b/src/chromiumos/seccomp/unistd.h
new file mode 100644
index 0000000..739f7d8
--- /dev/null
+++ b/src/chromiumos/seccomp/unistd.h
@@ -0,0 +1,4 @@
+#define __ARCH_WANT_SYSCALL_NO_AT
+#define __ARCH_WANT_SYSCALL_NO_FLAGS
+#define __ARCH_WANT_SYSCALL_DEPRECATED
+#include <asm/unistd.h>