aboutsummaryrefslogtreecommitdiffstats
path: root/executor
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2017-10-16 19:23:13 +0200
committerDmitry Vyukov <dvyukov@google.com>2017-10-16 19:23:13 +0200
commit8793f74c6cb46d87b53758c6d99705b8018ceeba (patch)
tree19baf11b5fca42b250223b761dec6cc0f640dd47 /executor
parent6222b00f4b1c59b46db26edf71980a6b03865492 (diff)
sys/fuchsia: more descriptions
Diffstat (limited to 'executor')
-rw-r--r--executor/common_fuchsia.h43
-rw-r--r--executor/executor_fuchsia.cc3
-rw-r--r--executor/syscalls_fuchsia.h172
3 files changed, 193 insertions, 25 deletions
diff --git a/executor/common_fuchsia.h b/executor/common_fuchsia.h
index 092734d66..f3889daec 100644
--- a/executor/common_fuchsia.h
+++ b/executor/common_fuchsia.h
@@ -3,7 +3,14 @@
// This file is shared between executor and csource package.
+#include <fcntl.h>
+#include <poll.h>
+#include <sys/file.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <sys/uio.h>
#include <unistd.h>
+#include <utime.h>
#include <zircon/process.h>
#include <zircon/syscalls.h>
#if defined(SYZ_EXECUTOR) || defined(SYZ_THREADED) || defined(SYZ_COLLIDE)
@@ -191,3 +198,39 @@ long syz_job_default()
return zx_job_default();
}
#endif
+
+#if defined(SYZ_EXECUTOR) || defined(__NR_syz_future_time)
+long syz_future_time(long when)
+{
+ zx_time_t delta_ms;
+ switch (when) {
+ case 0:
+ delta_ms = 5;
+ case 1:
+ delta_ms = 30;
+ default:
+ delta_ms = 10000;
+ }
+ zx_time_t now = zx_time_get(ZX_CLOCK_MONOTONIC);
+ return now + delta_ms * 1000 * 1000;
+}
+#endif
+
+#if defined(SYZ_EXECUTOR) || defined(__NR_zx_channel_call_finish) || defined(zx_channel_call_noretry)
+#include "kernel/lib/vdso/vdso-code.h"
+#define UNEXPORTED(name) ((syscall_t)((long)&zx_handle_close - VDSO_SYSCALL_zx_handle_close + VDSO_SYSCALL_##name))
+#endif
+
+#if defined(SYZ_EXECUTOR) || defined(__NR_zx_channel_call_finish)
+zx_status_t zx_channel_call_finish(long a0, long a1, long a2, long a3, long a4, long a5, long a6, long a7, long a8)
+{
+ return UNEXPORTED(zx_channel_call_finish)(a0, a1, a2, a3, a4, a5, a6, a7, a8);
+}
+#endif
+
+#if defined(SYZ_EXECUTOR) || defined(__NR_zx_channel_call_noretry)
+zx_status_t zx_channel_call_noretry(long a0, long a1, long a2, long a3, long a4, long a5, long a6, long a7, long a8)
+{
+ return UNEXPORTED(zx_channel_call_noretry)(a0, a1, a2, a3, a4, a5, a6, a7, a8);
+}
+#endif
diff --git a/executor/executor_fuchsia.cc b/executor/executor_fuchsia.cc
index b01bf5880..490ec551c 100644
--- a/executor/executor_fuchsia.cc
+++ b/executor/executor_fuchsia.cc
@@ -30,7 +30,8 @@ int main(int argc, char** argv)
long execute_syscall(call_t* c, long a0, long a1, long a2, long a3, long a4, long a5, long a6, long a7, long a8)
{
- long res = c->call(a0, a1, a2, a3, a4, a5, a6, a7, a8);
+ long res = ZX_ERR_INVALID_ARGS;
+ NONFAILING(res = c->call(a0, a1, a2, a3, a4, a5, a6, a7, a8));
errno = res;
return res;
}
diff --git a/executor/syscalls_fuchsia.h b/executor/syscalls_fuchsia.h
index 1b01edef1..fb04855de 100644
--- a/executor/syscalls_fuchsia.h
+++ b/executor/syscalls_fuchsia.h
@@ -2,21 +2,82 @@
#if defined(__x86_64__) || 0
#define GOARCH "amd64"
-#define SYZ_REVISION "c4bd217e1073de2f960be149f5f3763258a9f8ea"
-#define __NR_syz_job_default 1000000
-#define __NR_syz_mmap 1000001
-#define __NR_syz_process_self 1000002
-#define __NR_syz_thread_self 1000003
-#define __NR_syz_vmar_root_self 1000004
+#define SYZ_REVISION "5a8e70818b54cb32826aacef1b4b176d34b5c768"
+#define __NR_syz_future_time 1000000
+#define __NR_syz_job_default 1000001
+#define __NR_syz_mmap 1000002
+#define __NR_syz_process_self 1000003
+#define __NR_syz_thread_self 1000004
+#define __NR_syz_vmar_root_self 1000005
-unsigned syscall_count = 103;
+unsigned syscall_count = 164;
call_t syscalls[] = {
- {"syz_job_default", 1000000, (syscall_t)syz_job_default},
- {"syz_mmap", 1000001, (syscall_t)syz_mmap},
- {"syz_process_self", 1000002, (syscall_t)syz_process_self},
- {"syz_thread_self", 1000003, (syscall_t)syz_thread_self},
- {"syz_vmar_root_self", 1000004, (syscall_t)syz_vmar_root_self},
+ {"chdir", 0, (syscall_t)chdir},
+ {"chmod", 0, (syscall_t)chmod},
+ {"chown", 0, (syscall_t)chown},
+ {"close", 0, (syscall_t)close},
+ {"creat", 0, (syscall_t)creat},
+ {"dup", 0, (syscall_t)dup},
+ {"dup2", 0, (syscall_t)dup2},
+ {"dup3", 0, (syscall_t)dup3},
+ {"faccessat", 0, (syscall_t)faccessat},
+ {"fchdir", 0, (syscall_t)fchdir},
+ {"fchmod", 0, (syscall_t)fchmod},
+ {"fchmodat", 0, (syscall_t)fchmodat},
+ {"fchown", 0, (syscall_t)fchown},
+ {"fchownat", 0, (syscall_t)fchownat},
+ {"fdatasync", 0, (syscall_t)fdatasync},
+ {"flock", 0, (syscall_t)flock},
+ {"fstat", 0, (syscall_t)fstat},
+ {"fsync", 0, (syscall_t)fsync},
+ {"ftruncate", 0, (syscall_t)ftruncate},
+ {"futimesat", 0, (syscall_t)futimesat},
+ {"getcwd", 0, (syscall_t)getcwd},
+ {"getgid", 0, (syscall_t)getgid},
+ {"getpid", 0, (syscall_t)getpid},
+ {"getuid", 0, (syscall_t)getuid},
+ {"lchown", 0, (syscall_t)lchown},
+ {"link", 0, (syscall_t)link},
+ {"linkat", 0, (syscall_t)linkat},
+ {"lseek", 0, (syscall_t)lseek},
+ {"lstat", 0, (syscall_t)lstat},
+ {"mkdir", 0, (syscall_t)mkdir},
+ {"mkdirat", 0, (syscall_t)mkdirat},
+ {"open", 0, (syscall_t)open},
+ {"openat", 0, (syscall_t)openat},
+ {"poll", 0, (syscall_t)poll},
+ {"ppoll", 0, (syscall_t)ppoll},
+ {"preadv", 0, (syscall_t)preadv},
+ {"pwritev", 0, (syscall_t)pwritev},
+ {"read", 0, (syscall_t)read},
+ {"readlink", 0, (syscall_t)readlink},
+ {"readlinkat", 0, (syscall_t)readlinkat},
+ {"readv", 0, (syscall_t)readv},
+ {"rename", 0, (syscall_t)rename},
+ {"renameat", 0, (syscall_t)renameat},
+ {"rmdir", 0, (syscall_t)rmdir},
+ {"select", 0, (syscall_t)select},
+ {"stat", 0, (syscall_t)stat},
+ {"symlink", 0, (syscall_t)symlink},
+ {"symlinkat", 0, (syscall_t)symlinkat},
+ {"sync", 0, (syscall_t)sync},
+ {"syz_future_time", 1000000, (syscall_t)syz_future_time},
+ {"syz_job_default", 1000001, (syscall_t)syz_job_default},
+ {"syz_mmap", 1000002, (syscall_t)syz_mmap},
+ {"syz_process_self", 1000003, (syscall_t)syz_process_self},
+ {"syz_thread_self", 1000004, (syscall_t)syz_thread_self},
+ {"syz_vmar_root_self", 1000005, (syscall_t)syz_vmar_root_self},
+ {"truncate", 0, (syscall_t)truncate},
+ {"unlink", 0, (syscall_t)unlink},
+ {"unlinkat", 0, (syscall_t)unlinkat},
+ {"utime", 0, (syscall_t)utime},
+ {"utimensat", 0, (syscall_t)utimensat},
+ {"utimes", 0, (syscall_t)utimes},
+ {"write", 0, (syscall_t)write},
+ {"writev", 0, (syscall_t)writev},
{"zx_channel_call", 0, (syscall_t)zx_channel_call},
+ {"zx_channel_call_finish", 0, (syscall_t)zx_channel_call_finish},
+ {"zx_channel_call_noretry", 0, (syscall_t)zx_channel_call_noretry},
{"zx_channel_create", 0, (syscall_t)zx_channel_create},
{"zx_channel_read", 0, (syscall_t)zx_channel_read},
{"zx_channel_write", 0, (syscall_t)zx_channel_write},
@@ -112,6 +173,7 @@ call_t syscalls[] = {
{"zx_vmo_op_range$ZX_VMO_OP_DECOMMIT", 0, (syscall_t)zx_vmo_op_range},
{"zx_vmo_op_range$ZX_VMO_OP_LOOKUP", 0, (syscall_t)zx_vmo_op_range},
{"zx_vmo_read", 0, (syscall_t)zx_vmo_read},
+ {"zx_vmo_set_cache_policy", 0, (syscall_t)zx_vmo_set_cache_policy},
{"zx_vmo_set_size", 0, (syscall_t)zx_vmo_set_size},
{"zx_vmo_write", 0, (syscall_t)zx_vmo_write},
@@ -120,21 +182,82 @@ call_t syscalls[] = {
#if defined(__aarch64__) || 0
#define GOARCH "arm64"
-#define SYZ_REVISION "74d9a48364f654cbf79562ea1efc049b48db9a72"
-#define __NR_syz_job_default 1000000
-#define __NR_syz_mmap 1000001
-#define __NR_syz_process_self 1000002
-#define __NR_syz_thread_self 1000003
-#define __NR_syz_vmar_root_self 1000004
+#define SYZ_REVISION "181d2b70232bd5b7de2d6d08ad038157ec35803f"
+#define __NR_syz_future_time 1000000
+#define __NR_syz_job_default 1000001
+#define __NR_syz_mmap 1000002
+#define __NR_syz_process_self 1000003
+#define __NR_syz_thread_self 1000004
+#define __NR_syz_vmar_root_self 1000005
-unsigned syscall_count = 103;
+unsigned syscall_count = 164;
call_t syscalls[] = {
- {"syz_job_default", 1000000, (syscall_t)syz_job_default},
- {"syz_mmap", 1000001, (syscall_t)syz_mmap},
- {"syz_process_self", 1000002, (syscall_t)syz_process_self},
- {"syz_thread_self", 1000003, (syscall_t)syz_thread_self},
- {"syz_vmar_root_self", 1000004, (syscall_t)syz_vmar_root_self},
+ {"chdir", 0, (syscall_t)chdir},
+ {"chmod", 0, (syscall_t)chmod},
+ {"chown", 0, (syscall_t)chown},
+ {"close", 0, (syscall_t)close},
+ {"creat", 0, (syscall_t)creat},
+ {"dup", 0, (syscall_t)dup},
+ {"dup2", 0, (syscall_t)dup2},
+ {"dup3", 0, (syscall_t)dup3},
+ {"faccessat", 0, (syscall_t)faccessat},
+ {"fchdir", 0, (syscall_t)fchdir},
+ {"fchmod", 0, (syscall_t)fchmod},
+ {"fchmodat", 0, (syscall_t)fchmodat},
+ {"fchown", 0, (syscall_t)fchown},
+ {"fchownat", 0, (syscall_t)fchownat},
+ {"fdatasync", 0, (syscall_t)fdatasync},
+ {"flock", 0, (syscall_t)flock},
+ {"fstat", 0, (syscall_t)fstat},
+ {"fsync", 0, (syscall_t)fsync},
+ {"ftruncate", 0, (syscall_t)ftruncate},
+ {"futimesat", 0, (syscall_t)futimesat},
+ {"getcwd", 0, (syscall_t)getcwd},
+ {"getgid", 0, (syscall_t)getgid},
+ {"getpid", 0, (syscall_t)getpid},
+ {"getuid", 0, (syscall_t)getuid},
+ {"lchown", 0, (syscall_t)lchown},
+ {"link", 0, (syscall_t)link},
+ {"linkat", 0, (syscall_t)linkat},
+ {"lseek", 0, (syscall_t)lseek},
+ {"lstat", 0, (syscall_t)lstat},
+ {"mkdir", 0, (syscall_t)mkdir},
+ {"mkdirat", 0, (syscall_t)mkdirat},
+ {"open", 0, (syscall_t)open},
+ {"openat", 0, (syscall_t)openat},
+ {"poll", 0, (syscall_t)poll},
+ {"ppoll", 0, (syscall_t)ppoll},
+ {"preadv", 0, (syscall_t)preadv},
+ {"pwritev", 0, (syscall_t)pwritev},
+ {"read", 0, (syscall_t)read},
+ {"readlink", 0, (syscall_t)readlink},
+ {"readlinkat", 0, (syscall_t)readlinkat},
+ {"readv", 0, (syscall_t)readv},
+ {"rename", 0, (syscall_t)rename},
+ {"renameat", 0, (syscall_t)renameat},
+ {"rmdir", 0, (syscall_t)rmdir},
+ {"select", 0, (syscall_t)select},
+ {"stat", 0, (syscall_t)stat},
+ {"symlink", 0, (syscall_t)symlink},
+ {"symlinkat", 0, (syscall_t)symlinkat},
+ {"sync", 0, (syscall_t)sync},
+ {"syz_future_time", 1000000, (syscall_t)syz_future_time},
+ {"syz_job_default", 1000001, (syscall_t)syz_job_default},
+ {"syz_mmap", 1000002, (syscall_t)syz_mmap},
+ {"syz_process_self", 1000003, (syscall_t)syz_process_self},
+ {"syz_thread_self", 1000004, (syscall_t)syz_thread_self},
+ {"syz_vmar_root_self", 1000005, (syscall_t)syz_vmar_root_self},
+ {"truncate", 0, (syscall_t)truncate},
+ {"unlink", 0, (syscall_t)unlink},
+ {"unlinkat", 0, (syscall_t)unlinkat},
+ {"utime", 0, (syscall_t)utime},
+ {"utimensat", 0, (syscall_t)utimensat},
+ {"utimes", 0, (syscall_t)utimes},
+ {"write", 0, (syscall_t)write},
+ {"writev", 0, (syscall_t)writev},
{"zx_channel_call", 0, (syscall_t)zx_channel_call},
+ {"zx_channel_call_finish", 0, (syscall_t)zx_channel_call_finish},
+ {"zx_channel_call_noretry", 0, (syscall_t)zx_channel_call_noretry},
{"zx_channel_create", 0, (syscall_t)zx_channel_create},
{"zx_channel_read", 0, (syscall_t)zx_channel_read},
{"zx_channel_write", 0, (syscall_t)zx_channel_write},
@@ -230,6 +353,7 @@ call_t syscalls[] = {
{"zx_vmo_op_range$ZX_VMO_OP_DECOMMIT", 0, (syscall_t)zx_vmo_op_range},
{"zx_vmo_op_range$ZX_VMO_OP_LOOKUP", 0, (syscall_t)zx_vmo_op_range},
{"zx_vmo_read", 0, (syscall_t)zx_vmo_read},
+ {"zx_vmo_set_cache_policy", 0, (syscall_t)zx_vmo_set_cache_policy},
{"zx_vmo_set_size", 0, (syscall_t)zx_vmo_set_size},
{"zx_vmo_write", 0, (syscall_t)zx_vmo_write},