Format FDs in strace logs

Normal files display their path in the current mount namespace:

I0410 10:57:54.964196  216336 x:0] [   1] ls X read(0x3 /proc/filesystems, 0x55cee3bdb2c0 "nodev\t9p\nnodev\tdevpts \nnodev\tdevtmpfs\nnodev\tproc\nnodev\tramdiskfs\nnodev\tsysfs\nnodev\ttmpfs\n", 0x1000) = 0x58 (24.462?s)

AT_FDCWD includes the CWD:

I0411 12:58:48.278427    1526 x:0] [   1] stat_test E newfstatat(AT_FDCWD /home/prattmic, 0x55ea719b564e /proc/self, 0x7ef5cefc2be8, 0x0)

Sockets (and other non-vfs files) display an inode number (like
/proc/PID/fd):

I0410 10:54:38.909123  207684 x:0] [   1] nc E bind(0x3 socket:[1], 0x55b5a1652040 {Family: AF_INET, Addr: , Port: 8080}, 0x10)

I also fixed a few syscall args that should be Path.

PiperOrigin-RevId: 243169025
Change-Id: Ic7dda6a82ae27062fe2a4a371557acfd6a21fa2a
This commit is contained in:
Michael Pratt
2019-04-11 16:48:39 -07:00
committed by Shentubot
parent efacb8d900
commit 6b24f7ab08
4 changed files with 112 additions and 76 deletions
+1
View File
@@ -29,6 +29,7 @@ go_library(
"//pkg/seccomp",
"//pkg/sentry/arch",
"//pkg/sentry/kernel",
"//pkg/sentry/kernel/kdefs",
"//pkg/sentry/socket/control",
"//pkg/sentry/socket/epsocket",
"//pkg/sentry/socket/netlink",
+76 -76
View File
@@ -17,27 +17,27 @@ package strace
// linuxAMD64 provides a mapping of the Linux amd64 syscalls and their argument
// types for display / formatting.
var linuxAMD64 = SyscallMap{
0: makeSyscallInfo("read", Hex, ReadBuffer, Hex),
1: makeSyscallInfo("write", Hex, WriteBuffer, Hex),
0: makeSyscallInfo("read", FD, ReadBuffer, Hex),
1: makeSyscallInfo("write", FD, WriteBuffer, Hex),
2: makeSyscallInfo("open", Path, OpenFlags, Mode),
3: makeSyscallInfo("close", Hex),
3: makeSyscallInfo("close", FD),
4: makeSyscallInfo("stat", Path, Stat),
5: makeSyscallInfo("fstat", Hex, Stat),
5: makeSyscallInfo("fstat", FD, Stat),
6: makeSyscallInfo("lstat", Path, Stat),
7: makeSyscallInfo("poll", Hex, Hex, Hex),
8: makeSyscallInfo("lseek", Hex, Hex, Hex),
9: makeSyscallInfo("mmap", Hex, Hex, Hex, Hex, Hex, Hex),
9: makeSyscallInfo("mmap", Hex, Hex, Hex, Hex, FD, Hex),
10: makeSyscallInfo("mprotect", Hex, Hex, Hex),
11: makeSyscallInfo("munmap", Hex, Hex),
12: makeSyscallInfo("brk", Hex),
13: makeSyscallInfo("rt_sigaction", Signal, SigAction, PostSigAction),
14: makeSyscallInfo("rt_sigprocmask", SignalMaskAction, SigSet, PostSigSet, Hex),
15: makeSyscallInfo("rt_sigreturn"),
16: makeSyscallInfo("ioctl", Hex, Hex, Hex),
17: makeSyscallInfo("pread64", Hex, ReadBuffer, Hex, Hex),
18: makeSyscallInfo("pwrite64", Hex, WriteBuffer, Hex, Hex),
19: makeSyscallInfo("readv", Hex, ReadIOVec, Hex),
20: makeSyscallInfo("writev", Hex, WriteIOVec, Hex),
16: makeSyscallInfo("ioctl", FD, Hex, Hex),
17: makeSyscallInfo("pread64", FD, ReadBuffer, Hex, Hex),
18: makeSyscallInfo("pwrite64", FD, WriteBuffer, Hex, Hex),
19: makeSyscallInfo("readv", FD, ReadIOVec, Hex),
20: makeSyscallInfo("writev", FD, WriteIOVec, Hex),
21: makeSyscallInfo("access", Path, Oct),
22: makeSyscallInfo("pipe", PipeFDs),
23: makeSyscallInfo("select", Hex, Hex, Hex, Hex, Timeval),
@@ -49,30 +49,30 @@ var linuxAMD64 = SyscallMap{
29: makeSyscallInfo("shmget", Hex, Hex, Hex),
30: makeSyscallInfo("shmat", Hex, Hex, Hex),
31: makeSyscallInfo("shmctl", Hex, Hex, Hex),
32: makeSyscallInfo("dup", Hex),
33: makeSyscallInfo("dup2", Hex, Hex),
32: makeSyscallInfo("dup", FD),
33: makeSyscallInfo("dup2", FD, FD),
34: makeSyscallInfo("pause"),
35: makeSyscallInfo("nanosleep", Timespec, PostTimespec),
36: makeSyscallInfo("getitimer", ItimerType, PostItimerVal),
37: makeSyscallInfo("alarm", Hex),
38: makeSyscallInfo("setitimer", ItimerType, ItimerVal, PostItimerVal),
39: makeSyscallInfo("getpid"),
40: makeSyscallInfo("sendfile", Hex, Hex, Hex, Hex),
40: makeSyscallInfo("sendfile", FD, FD, Hex, Hex),
41: makeSyscallInfo("socket", SockFamily, SockType, SockProtocol),
42: makeSyscallInfo("connect", Hex, SockAddr, Hex),
43: makeSyscallInfo("accept", Hex, PostSockAddr, SockLen),
44: makeSyscallInfo("sendto", Hex, Hex, Hex, Hex, SockAddr, Hex),
45: makeSyscallInfo("recvfrom", Hex, Hex, Hex, Hex, PostSockAddr, SockLen),
46: makeSyscallInfo("sendmsg", Hex, SendMsgHdr, Hex),
47: makeSyscallInfo("recvmsg", Hex, RecvMsgHdr, Hex),
48: makeSyscallInfo("shutdown", Hex, Hex),
49: makeSyscallInfo("bind", Hex, SockAddr, Hex),
50: makeSyscallInfo("listen", Hex, Hex),
51: makeSyscallInfo("getsockname", Hex, PostSockAddr, SockLen),
52: makeSyscallInfo("getpeername", Hex, PostSockAddr, SockLen),
42: makeSyscallInfo("connect", FD, SockAddr, Hex),
43: makeSyscallInfo("accept", FD, PostSockAddr, SockLen),
44: makeSyscallInfo("sendto", FD, Hex, Hex, Hex, SockAddr, Hex),
45: makeSyscallInfo("recvfrom", FD, Hex, Hex, Hex, PostSockAddr, SockLen),
46: makeSyscallInfo("sendmsg", FD, SendMsgHdr, Hex),
47: makeSyscallInfo("recvmsg", FD, RecvMsgHdr, Hex),
48: makeSyscallInfo("shutdown", FD, Hex),
49: makeSyscallInfo("bind", FD, SockAddr, Hex),
50: makeSyscallInfo("listen", FD, Hex),
51: makeSyscallInfo("getsockname", FD, PostSockAddr, SockLen),
52: makeSyscallInfo("getpeername", FD, PostSockAddr, SockLen),
53: makeSyscallInfo("socketpair", SockFamily, SockType, SockProtocol, Hex),
54: makeSyscallInfo("setsockopt", Hex, Hex, Hex, Hex, Hex),
55: makeSyscallInfo("getsockopt", Hex, Hex, Hex, Hex, Hex),
54: makeSyscallInfo("setsockopt", FD, Hex, Hex, Hex, Hex),
55: makeSyscallInfo("getsockopt", FD, Hex, Hex, Hex, Hex),
56: makeSyscallInfo("clone", CloneFlags, Hex, Hex, Hex, Hex),
57: makeSyscallInfo("fork"),
58: makeSyscallInfo("vfork"),
@@ -89,16 +89,16 @@ var linuxAMD64 = SyscallMap{
69: makeSyscallInfo("msgsnd", Hex, Hex, Hex, Hex),
70: makeSyscallInfo("msgrcv", Hex, Hex, Hex, Hex, Hex),
71: makeSyscallInfo("msgctl", Hex, Hex, Hex),
72: makeSyscallInfo("fcntl", Hex, Hex, Hex),
73: makeSyscallInfo("flock", Hex, Hex),
74: makeSyscallInfo("fsync", Hex),
75: makeSyscallInfo("fdatasync", Hex),
72: makeSyscallInfo("fcntl", FD, Hex, Hex),
73: makeSyscallInfo("flock", FD, Hex),
74: makeSyscallInfo("fsync", FD),
75: makeSyscallInfo("fdatasync", FD),
76: makeSyscallInfo("truncate", Path, Hex),
77: makeSyscallInfo("ftruncate", Hex, Hex),
78: makeSyscallInfo("getdents", Hex, Hex, Hex),
77: makeSyscallInfo("ftruncate", FD, Hex),
78: makeSyscallInfo("getdents", FD, Hex, Hex),
79: makeSyscallInfo("getcwd", PostPath, Hex),
80: makeSyscallInfo("chdir", Path),
81: makeSyscallInfo("fchdir", Hex),
81: makeSyscallInfo("fchdir", FD),
82: makeSyscallInfo("rename", Path, Path),
83: makeSyscallInfo("mkdir", Path, Oct),
84: makeSyscallInfo("rmdir", Path),
@@ -108,10 +108,10 @@ var linuxAMD64 = SyscallMap{
88: makeSyscallInfo("symlink", Path, Path),
89: makeSyscallInfo("readlink", Path, ReadBuffer, Hex),
90: makeSyscallInfo("chmod", Path, Mode),
91: makeSyscallInfo("fchmod", Hex, Mode),
91: makeSyscallInfo("fchmod", FD, Mode),
92: makeSyscallInfo("chown", Path, Hex, Hex),
93: makeSyscallInfo("fchown", Hex, Hex, Hex),
94: makeSyscallInfo("lchown", Hex, Hex, Hex),
93: makeSyscallInfo("fchown", FD, Hex, Hex),
94: makeSyscallInfo("lchown", Path, Hex, Hex),
95: makeSyscallInfo("umask", Hex),
96: makeSyscallInfo("gettimeofday", Timeval, Hex),
97: makeSyscallInfo("getrlimit", Hex, Hex),
@@ -155,7 +155,7 @@ var linuxAMD64 = SyscallMap{
135: makeSyscallInfo("personality", Hex),
136: makeSyscallInfo("ustat", Hex, Hex),
137: makeSyscallInfo("statfs", Path, Hex),
138: makeSyscallInfo("fstatfs", Hex, Hex),
138: makeSyscallInfo("fstatfs", FD, Hex),
139: makeSyscallInfo("sysfs", Hex, Hex, Hex),
140: makeSyscallInfo("getpriority", Hex, Hex),
141: makeSyscallInfo("setpriority", Hex, Hex, Hex),
@@ -172,7 +172,7 @@ var linuxAMD64 = SyscallMap{
152: makeSyscallInfo("munlockall"),
153: makeSyscallInfo("vhangup"),
154: makeSyscallInfo("modify_ldt", Hex, Hex, Hex),
155: makeSyscallInfo("pivot_root", Hex, Hex),
155: makeSyscallInfo("pivot_root", Path, Path),
156: makeSyscallInfo("_sysctl", Hex),
157: makeSyscallInfo("prctl", Hex, Hex, Hex, Hex, Hex),
158: makeSyscallInfo("arch_prctl", Hex, Hex),
@@ -207,16 +207,16 @@ var linuxAMD64 = SyscallMap{
187: makeSyscallInfo("readahead", Hex, Hex, Hex),
188: makeSyscallInfo("setxattr", Path, Path, Hex, Hex, Hex),
189: makeSyscallInfo("lsetxattr", Path, Path, Hex, Hex, Hex),
190: makeSyscallInfo("fsetxattr", Hex, Path, Hex, Hex, Hex),
190: makeSyscallInfo("fsetxattr", FD, Path, Hex, Hex, Hex),
191: makeSyscallInfo("getxattr", Path, Path, Hex, Hex),
192: makeSyscallInfo("lgetxattr", Path, Path, Hex, Hex),
193: makeSyscallInfo("fgetxattr", Hex, Path, Hex, Hex),
193: makeSyscallInfo("fgetxattr", FD, Path, Hex, Hex),
194: makeSyscallInfo("listxattr", Path, Path, Hex),
195: makeSyscallInfo("llistxattr", Path, Path, Hex),
196: makeSyscallInfo("flistxattr", Hex, Path, Hex),
196: makeSyscallInfo("flistxattr", FD, Path, Hex),
197: makeSyscallInfo("removexattr", Path, Path),
198: makeSyscallInfo("lremovexattr", Path, Path),
199: makeSyscallInfo("fremovexattr", Hex, Path),
199: makeSyscallInfo("fremovexattr", FD, Path),
200: makeSyscallInfo("tkill", Hex, Signal),
201: makeSyscallInfo("time", Hex),
202: makeSyscallInfo("futex", Hex, FutexOp, Hex, Timespec, Hex, Hex),
@@ -234,11 +234,11 @@ var linuxAMD64 = SyscallMap{
// 214: epoll_ctl_old (not implemented in the Linux kernel)
// 215: epoll_wait_old (not implemented in the Linux kernel)
216: makeSyscallInfo("remap_file_pages", Hex, Hex, Hex, Hex, Hex),
217: makeSyscallInfo("getdents64", Hex, Hex, Hex),
217: makeSyscallInfo("getdents64", FD, Hex, Hex),
218: makeSyscallInfo("set_tid_address", Hex),
219: makeSyscallInfo("restart_syscall"),
220: makeSyscallInfo("semtimedop", Hex, Hex, Hex, Hex),
221: makeSyscallInfo("fadvise64", Hex, Hex, Hex, Hex),
221: makeSyscallInfo("fadvise64", FD, Hex, Hex, Hex),
222: makeSyscallInfo("timer_create", Hex, Hex, Hex),
223: makeSyscallInfo("timer_settime", Hex, Hex, ItimerSpec, PostItimerSpec),
224: makeSyscallInfo("timer_gettime", Hex, PostItimerSpec),
@@ -250,7 +250,7 @@ var linuxAMD64 = SyscallMap{
230: makeSyscallInfo("clock_nanosleep", Hex, Hex, Timespec, PostTimespec),
231: makeSyscallInfo("exit_group", Hex),
232: makeSyscallInfo("epoll_wait", Hex, Hex, Hex, Hex),
233: makeSyscallInfo("epoll_ctl", Hex, Hex, Hex, Hex),
233: makeSyscallInfo("epoll_ctl", Hex, Hex, FD, Hex),
234: makeSyscallInfo("tgkill", Hex, Hex, Signal),
235: makeSyscallInfo("utimes", Path, Timeval),
// 236: vserver (not implemented in the Linux kernel)
@@ -274,58 +274,58 @@ var linuxAMD64 = SyscallMap{
254: makeSyscallInfo("inotify_add_watch", Hex, Path, Hex),
255: makeSyscallInfo("inotify_rm_watch", Hex, Hex),
256: makeSyscallInfo("migrate_pages", Hex, Hex, Hex, Hex),
257: makeSyscallInfo("openat", Hex, Path, OpenFlags, Mode),
258: makeSyscallInfo("mkdirat", Hex, Path, Hex),
259: makeSyscallInfo("mknodat", Hex, Path, Mode, Hex),
260: makeSyscallInfo("fchownat", Hex, Path, Hex, Hex, Hex),
261: makeSyscallInfo("futimesat", Hex, Path, Hex),
262: makeSyscallInfo("newfstatat", Hex, Path, Stat, Hex),
263: makeSyscallInfo("unlinkat", Hex, Path, Hex),
264: makeSyscallInfo("renameat", Hex, Path, Hex, Path),
265: makeSyscallInfo("linkat", Hex, Path, Hex, Path, Hex),
257: makeSyscallInfo("openat", FD, Path, OpenFlags, Mode),
258: makeSyscallInfo("mkdirat", FD, Path, Hex),
259: makeSyscallInfo("mknodat", FD, Path, Mode, Hex),
260: makeSyscallInfo("fchownat", FD, Path, Hex, Hex, Hex),
261: makeSyscallInfo("futimesat", FD, Path, Hex),
262: makeSyscallInfo("newfstatat", FD, Path, Stat, Hex),
263: makeSyscallInfo("unlinkat", FD, Path, Hex),
264: makeSyscallInfo("renameat", FD, Path, Hex, Path),
265: makeSyscallInfo("linkat", FD, Path, Hex, Path, Hex),
266: makeSyscallInfo("symlinkat", Path, Hex, Path),
267: makeSyscallInfo("readlinkat", Hex, Path, ReadBuffer, Hex),
268: makeSyscallInfo("fchmodat", Hex, Path, Mode),
269: makeSyscallInfo("faccessat", Hex, Path, Oct, Hex),
267: makeSyscallInfo("readlinkat", FD, Path, ReadBuffer, Hex),
268: makeSyscallInfo("fchmodat", FD, Path, Mode),
269: makeSyscallInfo("faccessat", FD, Path, Oct, Hex),
270: makeSyscallInfo("pselect6", Hex, Hex, Hex, Hex, Hex, Hex),
271: makeSyscallInfo("ppoll", Hex, Hex, Timespec, SigSet, Hex),
272: makeSyscallInfo("unshare", CloneFlags),
273: makeSyscallInfo("set_robust_list", Hex, Hex),
274: makeSyscallInfo("get_robust_list", Hex, Hex, Hex),
275: makeSyscallInfo("splice", Hex, Hex, Hex, Hex, Hex, Hex),
276: makeSyscallInfo("tee", Hex, Hex, Hex, Hex),
277: makeSyscallInfo("sync_file_range", Hex, Hex, Hex, Hex),
278: makeSyscallInfo("vmsplice", Hex, Hex, Hex, Hex),
275: makeSyscallInfo("splice", FD, Hex, FD, Hex, Hex, Hex),
276: makeSyscallInfo("tee", FD, FD, Hex, Hex),
277: makeSyscallInfo("sync_file_range", FD, Hex, Hex, Hex),
278: makeSyscallInfo("vmsplice", FD, Hex, Hex, Hex),
279: makeSyscallInfo("move_pages", Hex, Hex, Hex, Hex, Hex, Hex),
280: makeSyscallInfo("utimensat", Hex, Path, UTimeTimespec, Hex),
280: makeSyscallInfo("utimensat", FD, Path, UTimeTimespec, Hex),
281: makeSyscallInfo("epoll_pwait", Hex, Hex, Hex, Hex, SigSet, Hex),
282: makeSyscallInfo("signalfd", Hex, Hex, Hex),
283: makeSyscallInfo("timerfd_create", Hex, Hex),
284: makeSyscallInfo("eventfd", Hex),
285: makeSyscallInfo("fallocate", Hex, Hex, Hex, Hex),
286: makeSyscallInfo("timerfd_settime", Hex, Hex, ItimerSpec, PostItimerSpec),
287: makeSyscallInfo("timerfd_gettime", Hex, PostItimerSpec),
288: makeSyscallInfo("accept4", Hex, PostSockAddr, SockLen, SockFlags),
285: makeSyscallInfo("fallocate", FD, Hex, Hex, Hex),
286: makeSyscallInfo("timerfd_settime", FD, Hex, ItimerSpec, PostItimerSpec),
287: makeSyscallInfo("timerfd_gettime", FD, PostItimerSpec),
288: makeSyscallInfo("accept4", FD, PostSockAddr, SockLen, SockFlags),
289: makeSyscallInfo("signalfd4", Hex, Hex, Hex, Hex),
290: makeSyscallInfo("eventfd2", Hex, Hex),
291: makeSyscallInfo("epoll_create1", Hex),
292: makeSyscallInfo("dup3", Hex, Hex, Hex),
292: makeSyscallInfo("dup3", FD, FD, Hex),
293: makeSyscallInfo("pipe2", PipeFDs, Hex),
294: makeSyscallInfo("inotify_init1", Hex),
295: makeSyscallInfo("preadv", Hex, ReadIOVec, Hex, Hex),
296: makeSyscallInfo("pwritev", Hex, WriteIOVec, Hex, Hex),
295: makeSyscallInfo("preadv", FD, ReadIOVec, Hex, Hex),
296: makeSyscallInfo("pwritev", FD, WriteIOVec, Hex, Hex),
297: makeSyscallInfo("rt_tgsigqueueinfo", Hex, Hex, Signal, Hex),
298: makeSyscallInfo("perf_event_open", Hex, Hex, Hex, Hex, Hex),
299: makeSyscallInfo("recvmmsg", Hex, Hex, Hex, Hex, Hex),
299: makeSyscallInfo("recvmmsg", FD, Hex, Hex, Hex, Hex),
300: makeSyscallInfo("fanotify_init", Hex, Hex),
301: makeSyscallInfo("fanotify_mark", Hex, Hex, Hex, Hex, Hex),
302: makeSyscallInfo("prlimit64", Hex, Hex, Hex, Hex),
303: makeSyscallInfo("name_to_handle_at", Hex, Hex, Hex, Hex, Hex),
304: makeSyscallInfo("open_by_handle_at", Hex, Hex, Hex),
303: makeSyscallInfo("name_to_handle_at", FD, Hex, Hex, Hex, Hex),
304: makeSyscallInfo("open_by_handle_at", FD, Hex, Hex),
305: makeSyscallInfo("clock_adjtime", Hex, Hex),
306: makeSyscallInfo("syncfs", Hex),
307: makeSyscallInfo("sendmmsg", Hex, Hex, Hex, Hex),
308: makeSyscallInfo("setns", Hex, Hex),
306: makeSyscallInfo("syncfs", FD),
307: makeSyscallInfo("sendmmsg", FD, Hex, Hex, Hex),
308: makeSyscallInfo("setns", FD, Hex),
309: makeSyscallInfo("getcpu", Hex, Hex, Hex),
310: makeSyscallInfo("process_vm_readv", Hex, ReadIOVec, Hex, IOVec, Hex, Hex),
311: makeSyscallInfo("process_vm_writev", Hex, IOVec, Hex, WriteIOVec, Hex, Hex),
@@ -333,6 +333,6 @@ var linuxAMD64 = SyscallMap{
313: makeSyscallInfo("finit_module", Hex, Hex, Hex),
314: makeSyscallInfo("sched_setattr", Hex, Hex, Hex),
315: makeSyscallInfo("sched_getattr", Hex, Hex, Hex),
316: makeSyscallInfo("renameat2", Hex, Path, Hex, Path, Hex),
316: makeSyscallInfo("renameat2", FD, Path, Hex, Path, Hex),
317: makeSyscallInfo("seccomp", Hex, Hex, Hex),
}
+32
View File
@@ -31,6 +31,7 @@ import (
"gvisor.googlesource.com/gvisor/pkg/seccomp"
"gvisor.googlesource.com/gvisor/pkg/sentry/arch"
"gvisor.googlesource.com/gvisor/pkg/sentry/kernel"
"gvisor.googlesource.com/gvisor/pkg/sentry/kernel/kdefs"
pb "gvisor.googlesource.com/gvisor/pkg/sentry/strace/strace_go_proto"
slinux "gvisor.googlesource.com/gvisor/pkg/sentry/syscalls/linux"
"gvisor.googlesource.com/gvisor/pkg/sentry/usermem"
@@ -132,6 +133,35 @@ func path(t *kernel.Task, addr usermem.Addr) string {
return fmt.Sprintf("%#x %s", addr, path)
}
func fd(t *kernel.Task, fd kdefs.FD) string {
root := t.FSContext().RootDirectory()
if root != nil {
defer root.DecRef()
}
if fd == linux.AT_FDCWD {
wd := t.FSContext().WorkingDirectory()
var name string
if wd != nil {
defer wd.DecRef()
name, _ = wd.FullName(root)
} else {
name = "(unknown cwd)"
}
return fmt.Sprintf("AT_FDCWD %s", name)
}
file := t.FDMap().GetFile(fd)
if file == nil {
// Cast FD to uint64 to avoid printing negative hex.
return fmt.Sprintf("%#x (bad FD)", uint64(fd))
}
defer file.DecRef()
name, _ := file.Dirent.FullName(root)
return fmt.Sprintf("%#x %s", fd, name)
}
func fdpair(t *kernel.Task, addr usermem.Addr) string {
var fds [2]int32
_, err := t.CopyIn(addr, &fds)
@@ -344,6 +374,8 @@ func (i *SyscallInfo) pre(t *kernel.Task, args arch.SyscallArguments, maximumBlo
break
}
switch i.format[arg] {
case FD:
output = append(output, fd(t, kdefs.FD(args[arg].Int())))
case WriteBuffer:
output = append(output, dump(t, args[arg].Pointer(), args[arg+1].SizeT(), maximumBlobSize))
case WriteIOVec:
+3
View File
@@ -35,6 +35,9 @@ const (
// Oct is just an octal number.
Oct
// FD is a file descriptor.
FD
// ReadBuffer is a buffer for a read-style call. The syscall return
// value is used for the length.
//