truss: Decode sendfile(2) arguments

MFC after:	2 weeks
This commit is contained in:
Mark Johnston 2021-02-05 11:28:09 -05:00
parent 59fffbcf46
commit 90da2c797b
2 changed files with 24 additions and 0 deletions

View File

@ -117,6 +117,8 @@ enum Argtype {
Procctl,
Priowhich,
Ptraceop,
Sendfileflags,
Sendfilehdtr,
Quotactlcmd,
Reboothowto,
Resource,

View File

@ -478,6 +478,10 @@ static struct syscall decoded_syscalls[] = {
.args = { { Int, 0 }, { Iovec | IN, 1 }, { Int, 2 },
{ Sockaddr | IN, 3 }, { Socklent, 4 },
{ Sctpsndrcvinfo | IN, 5 }, { Msgflags, 6 } } },
{ .name = "sendfile", .ret_type = 1, .nargs = 7,
.args = { { Int, 0 }, { Int, 1 }, { QuadHex, 2 }, { Sizet, 3 },
{ Sendfilehdtr, 4 }, { QuadHex | OUT, 5 },
{ Sendfileflags, 6 } } },
{ .name = "select", .ret_type = 1, .nargs = 5,
.args = { { Int, 0 }, { Fd_set, 1 }, { Fd_set, 2 }, { Fd_set, 3 },
{ Timeval, 4 } } },
@ -2670,6 +2674,24 @@ print_arg(struct syscall_args *sc, unsigned long *args, register_t *retval,
print_integer_arg(sysdecode_ptrace_request, fp,
args[sc->offset]);
break;
case Sendfileflags:
print_mask_arg(sysdecode_sendfile_flags, fp, args[sc->offset]);
break;
case Sendfilehdtr: {
struct sf_hdtr hdtr;
if (get_struct(pid, args[sc->offset], &hdtr, sizeof(hdtr)) !=
-1) {
fprintf(fp, "{");
print_iovec(fp, trussinfo, (uintptr_t)hdtr.headers,
hdtr.hdr_cnt);
print_iovec(fp, trussinfo, (uintptr_t)hdtr.trailers,
hdtr.trl_cnt);
fprintf(fp, "}");
} else
print_pointer(fp, args[sc->offset]);
break;
}
case Quotactlcmd:
if (!sysdecode_quotactl_cmd(fp, args[sc->offset]))
fprintf(fp, "%#x", (int)args[sc->offset]);