From 99c7e4ecfa8ec1fd402d22caea619c5df72ef169 Mon Sep 17 00:00:00 2001 From: Dokyung Song Date: Mon, 27 Aug 2018 17:48:08 -0700 Subject: sys/fuchsia: describe method response types & handles; add support for union * create a response handle structure for each FIDL method * generate zx_channel_write for requests having no response * generate zx_channel_read for events (no request but just response) * translate FIDL union types to syzkaller union types (see fuchsia_io_ObjectInfoHandles) --- executor/syscalls.h | 68 ++++++++++++++++++++++++++--------------------------- 1 file changed, 34 insertions(+), 34 deletions(-) (limited to 'executor/syscalls.h') diff --git a/executor/syscalls.h b/executor/syscalls.h index dcd597ec4..e4023386c 100644 --- a/executor/syscalls.h +++ b/executor/syscalls.h @@ -558,24 +558,18 @@ const call_t syscalls[] = { {"writev", 0, (syscall_t)writev}, {"zx_cache_flush", 0, (syscall_t)zx_cache_flush}, {"zx_channel_call", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_io_DirectoryBind", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_io_DirectoryClone", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_DirectoryClose", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_DirectoryDescribe", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_DirectoryGetAttr", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_DirectoryGetToken", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_DirectoryIoctl", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_DirectoryLink", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_io_DirectoryOnOpen", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_io_DirectoryOpen", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_DirectoryReadDirents", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_DirectoryRename", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_DirectoryRewind", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_DirectorySetAttr", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_DirectorySync", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_DirectoryUnlink", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_io_FileBind", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_io_FileClone", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_FileClose", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_FileDescribe", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_FileGetAttr", 0, (syscall_t)zx_channel_call}, @@ -583,7 +577,6 @@ const call_t syscalls[] = { {"zx_channel_call$fuchsia_io_FileGetVmo", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_FileGetVmoAt", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_FileIoctl", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_io_FileOnOpen", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_FileRead", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_FileReadAt", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_FileSeek", 0, (syscall_t)zx_channel_call}, @@ -593,24 +586,14 @@ const call_t syscalls[] = { {"zx_channel_call$fuchsia_io_FileTruncate", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_FileWrite", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_FileWriteAt", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_io_NodeBind", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_io_NodeClone", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_NodeClose", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_NodeDescribe", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_NodeGetAttr", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_NodeIoctl", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_io_NodeOnOpen", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_NodeSetAttr", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_NodeSync", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_io_ObjectBind", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_io_ObjectClone", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_ObjectClose", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_ObjectDescribe", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_io_ObjectOnOpen", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_process_LauncherAddArgs", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_process_LauncherAddEnvirons", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_process_LauncherAddHandles", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_process_LauncherAddNames", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_process_LauncherCreateWithoutStarting", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_process_LauncherLaunch", 0, (syscall_t)zx_channel_call}, {"zx_channel_create", 0, (syscall_t)zx_channel_create}, @@ -620,8 +603,25 @@ const call_t syscalls[] = { {"zx_channel_create$fuchsia_io_Object", 0, (syscall_t)zx_channel_create}, {"zx_channel_create$fuchsia_process_Launcher", 0, (syscall_t)zx_channel_create}, {"zx_channel_read", 0, (syscall_t)zx_channel_read}, + {"zx_channel_read$fuchsia_io_DirectoryOnOpen", 0, (syscall_t)zx_channel_read}, + {"zx_channel_read$fuchsia_io_FileOnOpen", 0, (syscall_t)zx_channel_read}, + {"zx_channel_read$fuchsia_io_NodeOnOpen", 0, (syscall_t)zx_channel_read}, + {"zx_channel_read$fuchsia_io_ObjectOnOpen", 0, (syscall_t)zx_channel_read}, {"zx_channel_read_etc", 0, (syscall_t)zx_channel_read_etc}, {"zx_channel_write", 0, (syscall_t)zx_channel_write}, + {"zx_channel_write$fuchsia_io_DirectoryBind", 0, (syscall_t)zx_channel_write}, + {"zx_channel_write$fuchsia_io_DirectoryClone", 0, (syscall_t)zx_channel_write}, + {"zx_channel_write$fuchsia_io_DirectoryOpen", 0, (syscall_t)zx_channel_write}, + {"zx_channel_write$fuchsia_io_FileBind", 0, (syscall_t)zx_channel_write}, + {"zx_channel_write$fuchsia_io_FileClone", 0, (syscall_t)zx_channel_write}, + {"zx_channel_write$fuchsia_io_NodeBind", 0, (syscall_t)zx_channel_write}, + {"zx_channel_write$fuchsia_io_NodeClone", 0, (syscall_t)zx_channel_write}, + {"zx_channel_write$fuchsia_io_ObjectBind", 0, (syscall_t)zx_channel_write}, + {"zx_channel_write$fuchsia_io_ObjectClone", 0, (syscall_t)zx_channel_write}, + {"zx_channel_write$fuchsia_process_LauncherAddArgs", 0, (syscall_t)zx_channel_write}, + {"zx_channel_write$fuchsia_process_LauncherAddEnvirons", 0, (syscall_t)zx_channel_write}, + {"zx_channel_write$fuchsia_process_LauncherAddHandles", 0, (syscall_t)zx_channel_write}, + {"zx_channel_write$fuchsia_process_LauncherAddNames", 0, (syscall_t)zx_channel_write}, {"zx_clock_get", 0, (syscall_t)zx_clock_get}, {"zx_clock_get_monotonic", 0, (syscall_t)zx_clock_get_monotonic}, {"zx_clock_get_new", 0, (syscall_t)zx_clock_get_new}, @@ -805,24 +805,18 @@ const call_t syscalls[] = { {"writev", 0, (syscall_t)writev}, {"zx_cache_flush", 0, (syscall_t)zx_cache_flush}, {"zx_channel_call", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_io_DirectoryBind", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_io_DirectoryClone", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_DirectoryClose", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_DirectoryDescribe", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_DirectoryGetAttr", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_DirectoryGetToken", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_DirectoryIoctl", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_DirectoryLink", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_io_DirectoryOnOpen", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_io_DirectoryOpen", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_DirectoryReadDirents", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_DirectoryRename", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_DirectoryRewind", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_DirectorySetAttr", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_DirectorySync", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_DirectoryUnlink", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_io_FileBind", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_io_FileClone", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_FileClose", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_FileDescribe", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_FileGetAttr", 0, (syscall_t)zx_channel_call}, @@ -830,7 +824,6 @@ const call_t syscalls[] = { {"zx_channel_call$fuchsia_io_FileGetVmo", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_FileGetVmoAt", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_FileIoctl", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_io_FileOnOpen", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_FileRead", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_FileReadAt", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_FileSeek", 0, (syscall_t)zx_channel_call}, @@ -840,24 +833,14 @@ const call_t syscalls[] = { {"zx_channel_call$fuchsia_io_FileTruncate", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_FileWrite", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_FileWriteAt", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_io_NodeBind", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_io_NodeClone", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_NodeClose", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_NodeDescribe", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_NodeGetAttr", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_NodeIoctl", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_io_NodeOnOpen", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_NodeSetAttr", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_NodeSync", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_io_ObjectBind", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_io_ObjectClone", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_ObjectClose", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_io_ObjectDescribe", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_io_ObjectOnOpen", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_process_LauncherAddArgs", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_process_LauncherAddEnvirons", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_process_LauncherAddHandles", 0, (syscall_t)zx_channel_call}, - {"zx_channel_call$fuchsia_process_LauncherAddNames", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_process_LauncherCreateWithoutStarting", 0, (syscall_t)zx_channel_call}, {"zx_channel_call$fuchsia_process_LauncherLaunch", 0, (syscall_t)zx_channel_call}, {"zx_channel_create", 0, (syscall_t)zx_channel_create}, @@ -867,8 +850,25 @@ const call_t syscalls[] = { {"zx_channel_create$fuchsia_io_Object", 0, (syscall_t)zx_channel_create}, {"zx_channel_create$fuchsia_process_Launcher", 0, (syscall_t)zx_channel_create}, {"zx_channel_read", 0, (syscall_t)zx_channel_read}, + {"zx_channel_read$fuchsia_io_DirectoryOnOpen", 0, (syscall_t)zx_channel_read}, + {"zx_channel_read$fuchsia_io_FileOnOpen", 0, (syscall_t)zx_channel_read}, + {"zx_channel_read$fuchsia_io_NodeOnOpen", 0, (syscall_t)zx_channel_read}, + {"zx_channel_read$fuchsia_io_ObjectOnOpen", 0, (syscall_t)zx_channel_read}, {"zx_channel_read_etc", 0, (syscall_t)zx_channel_read_etc}, {"zx_channel_write", 0, (syscall_t)zx_channel_write}, + {"zx_channel_write$fuchsia_io_DirectoryBind", 0, (syscall_t)zx_channel_write}, + {"zx_channel_write$fuchsia_io_DirectoryClone", 0, (syscall_t)zx_channel_write}, + {"zx_channel_write$fuchsia_io_DirectoryOpen", 0, (syscall_t)zx_channel_write}, + {"zx_channel_write$fuchsia_io_FileBind", 0, (syscall_t)zx_channel_write}, + {"zx_channel_write$fuchsia_io_FileClone", 0, (syscall_t)zx_channel_write}, + {"zx_channel_write$fuchsia_io_NodeBind", 0, (syscall_t)zx_channel_write}, + {"zx_channel_write$fuchsia_io_NodeClone", 0, (syscall_t)zx_channel_write}, + {"zx_channel_write$fuchsia_io_ObjectBind", 0, (syscall_t)zx_channel_write}, + {"zx_channel_write$fuchsia_io_ObjectClone", 0, (syscall_t)zx_channel_write}, + {"zx_channel_write$fuchsia_process_LauncherAddArgs", 0, (syscall_t)zx_channel_write}, + {"zx_channel_write$fuchsia_process_LauncherAddEnvirons", 0, (syscall_t)zx_channel_write}, + {"zx_channel_write$fuchsia_process_LauncherAddHandles", 0, (syscall_t)zx_channel_write}, + {"zx_channel_write$fuchsia_process_LauncherAddNames", 0, (syscall_t)zx_channel_write}, {"zx_clock_get", 0, (syscall_t)zx_clock_get}, {"zx_clock_get_monotonic", 0, (syscall_t)zx_clock_get_monotonic}, {"zx_clock_get_new", 0, (syscall_t)zx_clock_get_new}, -- cgit mrf-deployment