From a05e6dc01b05e41f0a21333e9006a3de92a1ee9a Mon Sep 17 00:00:00 2001 From: "Dmitry V. Levin" Date: Sun, 12 May 2019 22:45:45 +0000 Subject: [PATCH] Implement and use new parsers of recvmmsg syscall * mmsghdr.c (SYS_FUNC(recvmmsg)): Remove. [HAVE_ARCH_TIME32_SYSCALLS] (SYS_FUNC(recvmmsg_time32)): New function. * syscall.c (dumpio): Handle SEN_recvmmsg_time32. * linux/subcall32.h (sys_recvmmsg): Redirect to sys_recvmmsg_time32. * linux/subcall64.h (sys_recvmmsg): Redirect to sys_recvmmsg_time64. * linux/64/syscallent.h: Replace SEN(recvmmsg) with SEN(recvmmsg_time64). * linux/alpha/syscallent.h: Likewise. * linux/ia64/syscallent.h: Likewise. * linux/mips/syscallent-n64.h: Likewise. * linux/powerpc64/syscallent.h: Likewise. * linux/s390x/syscallent.h: Likewise. * linux/sparc64/syscallent.h: Likewise. * linux/x32/syscallent.h: Likewise. * linux/x86_64/syscallent.h: Likewise. * linux/32/syscallent.h: Replace SEN(recvmmsg) with SEN(recvmmsg_time32). * linux/arm/syscallent.h: Likewise. * linux/avr32/syscallent.h: Likewise. * linux/bfin/syscallent.h: Likewise. * linux/hppa/syscallent.h: Likewise. * linux/microblaze/syscallent.h: Likewise. * linux/mips/syscallent-n32.h: Likewise. * linux/xtensa/syscallent.h: Likewise. --- linux/32/syscallent.h | 2 +- linux/64/syscallent.h | 2 +- linux/alpha/syscallent.h | 2 +- linux/arm/syscallent.h | 2 +- linux/avr32/syscallent.h | 2 +- linux/bfin/syscallent.h | 2 +- linux/hppa/syscallent.h | 2 +- linux/i386/syscallent.h | 2 +- linux/ia64/syscallent.h | 2 +- linux/m68k/syscallent.h | 2 +- linux/microblaze/syscallent.h | 2 +- linux/mips/syscallent-n32.h | 2 +- linux/mips/syscallent-n64.h | 2 +- linux/mips/syscallent-o32.h | 2 +- linux/powerpc/syscallent.h | 2 +- linux/powerpc64/syscallent.h | 2 +- linux/s390/syscallent.h | 2 +- linux/s390x/syscallent.h | 2 +- linux/sh/syscallent.h | 2 +- linux/sh64/syscallent.h | 2 +- linux/sparc/syscallent.h | 2 +- linux/sparc64/syscallent.h | 2 +- linux/subcall32.h | 2 ++ linux/subcall64.h | 2 ++ linux/x32/syscallent.h | 2 +- linux/x86_64/syscallent.h | 2 +- linux/xtensa/syscallent.h | 2 +- mmsghdr.c | 6 ++++-- syscall.c | 1 + 29 files changed, 34 insertions(+), 27 deletions(-) diff --git a/linux/32/syscallent.h b/linux/32/syscallent.h index efd5b264..3d400231 100644 --- a/linux/32/syscallent.h +++ b/linux/32/syscallent.h @@ -255,7 +255,7 @@ [240] = { 4, TP|TS, SEN(rt_tgsigqueueinfo), "rt_tgsigqueueinfo" }, [241] = { 5, TD, SEN(perf_event_open), "perf_event_open" }, [242] = { 4, TN, SEN(accept4), "accept4" }, -[243] = { 5, TN, SEN(recvmmsg), "recvmmsg" }, +[243] = { 5, TN, SEN(recvmmsg_time32), "recvmmsg" }, /* [244 ... 259] are arch specific */ [260] = { 4, TP, SEN(wait4), "wait4" }, [261] = { 4, 0, SEN(prlimit64), "prlimit64" }, diff --git a/linux/64/syscallent.h b/linux/64/syscallent.h index 4d2c3ee5..db3f4726 100644 --- a/linux/64/syscallent.h +++ b/linux/64/syscallent.h @@ -248,7 +248,7 @@ [240] = { 4, TP|TS, SEN(rt_tgsigqueueinfo), "rt_tgsigqueueinfo" }, [241] = { 5, TD, SEN(perf_event_open), "perf_event_open" }, [242] = { 4, TN, SEN(accept4), "accept4" }, -[243] = { 5, TN, SEN(recvmmsg), "recvmmsg" }, +[243] = { 5, TN, SEN(recvmmsg_time64), "recvmmsg" }, /* [244 ... 259] are arch specific */ [260] = { 4, TP, SEN(wait4), "wait4" }, [261] = { 4, 0, SEN(prlimit64), "prlimit64" }, diff --git a/linux/alpha/syscallent.h b/linux/alpha/syscallent.h index 9cfcc588..4c67096a 100644 --- a/linux/alpha/syscallent.h +++ b/linux/alpha/syscallent.h @@ -422,7 +422,7 @@ [476] = { 3, TD|TS, SEN(signalfd), "signalfd" }, [477] = { 4, TD, SEN(timerfd), "timerfd" }, /* not implemented */ [478] = { 1, TD, SEN(eventfd), "eventfd" }, -[479] = { 5, TN, SEN(recvmmsg), "recvmmsg" }, +[479] = { 5, TN, SEN(recvmmsg_time64), "recvmmsg" }, [480] = { 4, TD, SEN(fallocate), "fallocate" }, [481] = { 2, TD, SEN(timerfd_create), "timerfd_create" }, [482] = { 4, TD, SEN(timerfd_settime), "timerfd_settime" }, diff --git a/linux/arm/syscallent.h b/linux/arm/syscallent.h index dadcccd3..9a451327 100644 --- a/linux/arm/syscallent.h +++ b/linux/arm/syscallent.h @@ -372,7 +372,7 @@ [362] = { 5, TD, SEN(pwritev), "pwritev" }, [363] = { 4, TP|TS, SEN(rt_tgsigqueueinfo), "rt_tgsigqueueinfo" }, [364] = { 5, TD, SEN(perf_event_open), "perf_event_open" }, -[365] = { 5, TN, SEN(recvmmsg), "recvmmsg" }, +[365] = { 5, TN, SEN(recvmmsg_time32), "recvmmsg" }, [366] = { 4, TN, SEN(accept4), "accept4" }, [367] = { 2, TD, SEN(fanotify_init), "fanotify_init" }, [368] = { 6, TD|TF, SEN(fanotify_mark), "fanotify_mark" }, diff --git a/linux/avr32/syscallent.h b/linux/avr32/syscallent.h index d6cc1b08..ae0a964f 100644 --- a/linux/avr32/syscallent.h +++ b/linux/avr32/syscallent.h @@ -306,7 +306,7 @@ [297] = { 5, TD, SEN(pwritev), "pwritev" }, [298] = { 4, TP|TS, SEN(rt_tgsigqueueinfo), "rt_tgsigqueueinfo" }, [299] = { 5, TD, SEN(perf_event_open), "perf_event_open" }, -[300] = { 5, TN, SEN(recvmmsg), "recvmmsg" }, +[300] = { 5, TN, SEN(recvmmsg_time32), "recvmmsg" }, [301] = { 2, TD, SEN(fanotify_init), "fanotify_init" }, [302] = { 6, TD|TF, SEN(fanotify_mark), "fanotify_mark" }, [303] = { 4, 0, SEN(prlimit64), "prlimit64" }, diff --git a/linux/bfin/syscallent.h b/linux/bfin/syscallent.h index e124fd3d..36e323e3 100644 --- a/linux/bfin/syscallent.h +++ b/linux/bfin/syscallent.h @@ -376,7 +376,7 @@ [367] = { 5, TD, SEN(pwritev), "pwritev" }, [368] = { 4, TP|TS, SEN(rt_tgsigqueueinfo), "rt_tgsigqueueinfo" }, [369] = { 5, TD, SEN(perf_event_open), "perf_event_open" }, -[370] = { 5, TN, SEN(recvmmsg), "recvmmsg" }, +[370] = { 5, TN, SEN(recvmmsg_time32), "recvmmsg" }, [371] = { 2, TD, SEN(fanotify_init), "fanotify_init" }, [372] = { 6, TD|TF, SEN(fanotify_mark), "fanotify_mark" }, [373] = { 4, 0, SEN(prlimit64), "prlimit64" }, diff --git a/linux/hppa/syscallent.h b/linux/hppa/syscallent.h index 7c280c84..01f927ae 100644 --- a/linux/hppa/syscallent.h +++ b/linux/hppa/syscallent.h @@ -322,7 +322,7 @@ [316] = { 5, TD, SEN(pwritev), "pwritev" }, [317] = { 4, TP|TS, SEN(rt_tgsigqueueinfo), "rt_tgsigqueueinfo" }, [318] = { 5, TD, SEN(perf_event_open), "perf_event_open" }, -[319] = { 5, TN, SEN(recvmmsg), "recvmmsg" }, +[319] = { 5, TN, SEN(recvmmsg_time32), "recvmmsg" }, [320] = { 4, TN, SEN(accept4), "accept4" }, [321] = { 4, 0, SEN(prlimit64), "prlimit64" }, [322] = { 2, TD, SEN(fanotify_init), "fanotify_init" }, diff --git a/linux/i386/syscallent.h b/linux/i386/syscallent.h index a9ca03e4..798209e9 100644 --- a/linux/i386/syscallent.h +++ b/linux/i386/syscallent.h @@ -343,7 +343,7 @@ [334] = { 5, TD, SEN(pwritev), "pwritev" }, [335] = { 4, TP|TS, SEN(rt_tgsigqueueinfo), "rt_tgsigqueueinfo" }, [336] = { 5, TD, SEN(perf_event_open), "perf_event_open" }, -[337] = { 5, TN, SEN(recvmmsg), "recvmmsg" }, +[337] = { 5, TN, SEN(recvmmsg_time32), "recvmmsg" }, [338] = { 2, TD, SEN(fanotify_init), "fanotify_init" }, [339] = { 6, TD|TF, SEN(fanotify_mark), "fanotify_mark" }, [340] = { 4, 0, SEN(prlimit64), "prlimit64" }, diff --git a/linux/ia64/syscallent.h b/linux/ia64/syscallent.h index 4edb07a2..0cf7a56f 100644 --- a/linux/ia64/syscallent.h +++ b/linux/ia64/syscallent.h @@ -305,7 +305,7 @@ [1024 + 295] = { 4, TD, SEN(preadv), "preadv" }, [1024 + 296] = { 4, TD, SEN(pwritev), "pwritev" }, [1024 + 297] = { 4, TP|TS, SEN(rt_tgsigqueueinfo), "rt_tgsigqueueinfo" }, -[1024 + 298] = { 5, TN, SEN(recvmmsg), "recvmmsg" }, +[1024 + 298] = { 5, TN, SEN(recvmmsg_time64), "recvmmsg" }, [1024 + 299] = { 2, TD, SEN(fanotify_init), "fanotify_init" }, [1024 + 300] = { 5, TD|TF, SEN(fanotify_mark), "fanotify_mark" }, [1024 + 301] = { 4, 0, SEN(prlimit64), "prlimit64" }, diff --git a/linux/m68k/syscallent.h b/linux/m68k/syscallent.h index ddee3c19..749b5cda 100644 --- a/linux/m68k/syscallent.h +++ b/linux/m68k/syscallent.h @@ -377,7 +377,7 @@ [368] = { 6, TN, SEN(recvfrom), "recvfrom" }, [369] = { 3, TN, SEN(recvmsg), "recvmsg" }, [370] = { 2, TN, SEN(shutdown), "shutdown" }, -[371] = { 5, TN, SEN(recvmmsg), "recvmmsg" }, +[371] = { 5, TN, SEN(recvmmsg_time32), "recvmmsg" }, [372] = { 4, TN, SEN(sendmmsg), "sendmmsg" }, [373] = { 1, TD, SEN(userfaultfd), "userfaultfd" }, [374] = { 2, 0, SEN(membarrier), "membarrier" }, diff --git a/linux/microblaze/syscallent.h b/linux/microblaze/syscallent.h index c6f76478..a82622ba 100644 --- a/linux/microblaze/syscallent.h +++ b/linux/microblaze/syscallent.h @@ -373,7 +373,7 @@ [364] = { 5, TD, SEN(pwritev), "pwritev" }, [365] = { 4, TP|TS, SEN(rt_tgsigqueueinfo), "rt_tgsigqueueinfo" }, [366] = { 5, TD, SEN(perf_event_open), "perf_event_open" }, -[367] = { 5, TN, SEN(recvmmsg), "recvmmsg" }, +[367] = { 5, TN, SEN(recvmmsg_time32), "recvmmsg" }, [368] = { 2, TD, SEN(fanotify_init), "fanotify_init" }, [369] = { 6, TD|TF, SEN(fanotify_mark), "fanotify_mark" }, [370] = { 4, 0, SEN(prlimit64), "prlimit64" }, diff --git a/linux/mips/syscallent-n32.h b/linux/mips/syscallent-n32.h index d3b8bbbe..ad3b96cf 100644 --- a/linux/mips/syscallent-n32.h +++ b/linux/mips/syscallent-n32.h @@ -305,7 +305,7 @@ [6295] = { 4, TP|TS, SEN(rt_tgsigqueueinfo), "rt_tgsigqueueinfo" }, [6296] = { 5, TD, SEN(perf_event_open), "perf_event_open" }, [6297] = { 4, TN, SEN(accept4), "accept4" }, -[6298] = { 5, TN, SEN(recvmmsg), "recvmmsg" }, +[6298] = { 5, TN, SEN(recvmmsg_time32), "recvmmsg" }, [6299] = { 3, TD, SEN(getdents64), "getdents64" }, [6300] = { 2, TD, SEN(fanotify_init), "fanotify_init" }, [6301] = { 5, TD|TF, SEN(fanotify_mark), "fanotify_mark" }, diff --git a/linux/mips/syscallent-n64.h b/linux/mips/syscallent-n64.h index 353d9601..e7a62e02 100644 --- a/linux/mips/syscallent-n64.h +++ b/linux/mips/syscallent-n64.h @@ -301,7 +301,7 @@ [5291] = { 4, TP|TS, SEN(rt_tgsigqueueinfo), "rt_tgsigqueueinfo" }, [5292] = { 5, TD, SEN(perf_event_open), "perf_event_open" }, [5293] = { 4, TN, SEN(accept4), "accept4" }, -[5294] = { 5, TN, SEN(recvmmsg), "recvmmsg" }, +[5294] = { 5, TN, SEN(recvmmsg_time64), "recvmmsg" }, [5295] = { 2, TD, SEN(fanotify_init), "fanotify_init" }, [5296] = { 5, TD|TF, SEN(fanotify_mark), "fanotify_mark" }, [5297] = { 4, 0, SEN(prlimit64), "prlimit64" }, diff --git a/linux/mips/syscallent-o32.h b/linux/mips/syscallent-o32.h index f8efd08f..22152c29 100644 --- a/linux/mips/syscallent-o32.h +++ b/linux/mips/syscallent-o32.h @@ -343,7 +343,7 @@ [4332] = { 4, TP|TS, SEN(rt_tgsigqueueinfo), "rt_tgsigqueueinfo" }, [4333] = { 5, TD, SEN(perf_event_open), "perf_event_open" }, [4334] = { 4, TN, SEN(accept4), "accept4" }, -[4335] = { 5, TN, SEN(recvmmsg), "recvmmsg" }, +[4335] = { 5, TN, SEN(recvmmsg_time32), "recvmmsg" }, [4336] = { 2, TD, SEN(fanotify_init), "fanotify_init" }, [4337] = { 6, TD|TF, SEN(fanotify_mark), "fanotify_mark" }, [4338] = { 4, 0, SEN(prlimit64), "prlimit64" }, diff --git a/linux/powerpc/syscallent.h b/linux/powerpc/syscallent.h index dab08fbd..1ea6700f 100644 --- a/linux/powerpc/syscallent.h +++ b/linux/powerpc/syscallent.h @@ -350,7 +350,7 @@ [340] = { 5, TN, SEN(getsockopt), "getsockopt" }, [341] = { 3, TN, SEN(sendmsg), "sendmsg" }, [342] = { 3, TN, SEN(recvmsg), "recvmsg" }, -[343] = { 5, TN, SEN(recvmmsg), "recvmmsg" }, +[343] = { 5, TN, SEN(recvmmsg_time32), "recvmmsg" }, [344] = { 4, TN, SEN(accept4), "accept4" }, [345] = { 5, TD|TF, SEN(name_to_handle_at), "name_to_handle_at" }, [346] = { 3, TD, SEN(open_by_handle_at), "open_by_handle_at" }, diff --git a/linux/powerpc64/syscallent.h b/linux/powerpc64/syscallent.h index b1ed72c6..0ca7df36 100644 --- a/linux/powerpc64/syscallent.h +++ b/linux/powerpc64/syscallent.h @@ -345,7 +345,7 @@ [340] = { 5, TN, SEN(getsockopt), "getsockopt" }, [341] = { 3, TN, SEN(sendmsg), "sendmsg" }, [342] = { 3, TN, SEN(recvmsg), "recvmsg" }, -[343] = { 5, TN, SEN(recvmmsg), "recvmmsg" }, +[343] = { 5, TN, SEN(recvmmsg_time64), "recvmmsg" }, [344] = { 4, TN, SEN(accept4), "accept4" }, [345] = { 5, TD|TF, SEN(name_to_handle_at), "name_to_handle_at" }, [346] = { 3, TD, SEN(open_by_handle_at), "open_by_handle_at" }, diff --git a/linux/s390/syscallent.h b/linux/s390/syscallent.h index 7a14f69d..1d6c7841 100644 --- a/linux/s390/syscallent.h +++ b/linux/s390/syscallent.h @@ -366,7 +366,7 @@ [354] = { 5, TD|TF|TP|SE|SI, SEN(execveat), "execveat" }, [355] = { 1, TD, SEN(userfaultfd), "userfaultfd" }, [356] = { 2, 0, SEN(membarrier), "membarrier" }, -[357] = { 5, TN, SEN(recvmmsg), "recvmmsg" }, +[357] = { 5, TN, SEN(recvmmsg_time32), "recvmmsg" }, [358] = { 4, TN, SEN(sendmmsg), "sendmmsg" }, [359] = { 3, TN, SEN(socket), "socket" }, [360] = { 4, TN, SEN(socketpair), "socketpair" }, diff --git a/linux/s390x/syscallent.h b/linux/s390x/syscallent.h index 1e897112..76d756f4 100644 --- a/linux/s390x/syscallent.h +++ b/linux/s390x/syscallent.h @@ -350,7 +350,7 @@ [354] = { 5, TD|TF|TP|SE|SI, SEN(execveat), "execveat" }, [355] = { 1, TD, SEN(userfaultfd), "userfaultfd" }, [356] = { 2, 0, SEN(membarrier), "membarrier" }, -[357] = { 5, TN, SEN(recvmmsg), "recvmmsg" }, +[357] = { 5, TN, SEN(recvmmsg_time64), "recvmmsg" }, [358] = { 4, TN, SEN(sendmmsg), "sendmmsg" }, [359] = { 3, TN, SEN(socket), "socket" }, [360] = { 4, TN, SEN(socketpair), "socketpair" }, diff --git a/linux/sh/syscallent.h b/linux/sh/syscallent.h index 26b40a91..a0b029d3 100644 --- a/linux/sh/syscallent.h +++ b/linux/sh/syscallent.h @@ -363,7 +363,7 @@ [354] = { 5, TN, SEN(getsockopt), "getsockopt" }, [355] = { 3, TN, SEN(sendmsg), "sendmsg" }, [356] = { 3, TN, SEN(recvmsg), "recvmsg" }, -[357] = { 5, TN, SEN(recvmmsg), "recvmmsg" }, +[357] = { 5, TN, SEN(recvmmsg_time32), "recvmmsg" }, [358] = { 4, TN, SEN(accept4), "accept4" }, [359] = { 5, TD|TF, SEN(name_to_handle_at), "name_to_handle_at" }, [360] = { 3, TD, SEN(open_by_handle_at), "open_by_handle_at" }, diff --git a/linux/sh64/syscallent.h b/linux/sh64/syscallent.h index 23b08b6e..da0bd754 100644 --- a/linux/sh64/syscallent.h +++ b/linux/sh64/syscallent.h @@ -369,7 +369,7 @@ [362] = { 4, TD, SEN(pwritev), "pwritev" }, [363] = { 4, TP|TS, SEN(rt_tgsigqueueinfo), "rt_tgsigqueueinfo" }, [364] = { 5, TD, SEN(perf_event_open), "perf_event_open" }, -[365] = { 5, TN, SEN(recvmmsg), "recvmmsg" }, +[365] = { 5, TN, SEN(recvmmsg_time64), "recvmmsg" }, [366] = { 4, TN, SEN(accept4), "accept4" }, [367] = { 2, TD, SEN(fanotify_init), "fanotify_init" }, [368] = { 5, TD|TF, SEN(fanotify_mark), "fanotify_mark" }, diff --git a/linux/sparc/syscallent.h b/linux/sparc/syscallent.h index b5691517..c8e5c43f 100644 --- a/linux/sparc/syscallent.h +++ b/linux/sparc/syscallent.h @@ -333,7 +333,7 @@ [325] = { 5, TD, SEN(pwritev), "pwritev" }, [326] = { 4, TP|TS, SEN(rt_tgsigqueueinfo), "rt_tgsigqueueinfo" }, [327] = { 5, TD, SEN(perf_event_open), "perf_event_open" }, -[328] = { 5, TN, SEN(recvmmsg), "recvmmsg" }, +[328] = { 5, TN, SEN(recvmmsg_time32), "recvmmsg" }, [329] = { 2, TD, SEN(fanotify_init), "fanotify_init" }, [330] = { 6, TD|TF, SEN(fanotify_mark), "fanotify_mark" }, [331] = { 4, 0, SEN(prlimit64), "prlimit64" }, diff --git a/linux/sparc64/syscallent.h b/linux/sparc64/syscallent.h index a6947a8b..111506d8 100644 --- a/linux/sparc64/syscallent.h +++ b/linux/sparc64/syscallent.h @@ -331,7 +331,7 @@ [325] = { 4, TD, SEN(pwritev), "pwritev" }, [326] = { 4, TP|TS, SEN(rt_tgsigqueueinfo), "rt_tgsigqueueinfo" }, [327] = { 5, TD, SEN(perf_event_open), "perf_event_open" }, -[328] = { 5, TN, SEN(recvmmsg), "recvmmsg" }, +[328] = { 5, TN, SEN(recvmmsg_time64), "recvmmsg" }, [329] = { 2, TD, SEN(fanotify_init), "fanotify_init" }, [330] = { 5, TD|TF, SEN(fanotify_mark), "fanotify_mark" }, [331] = { 4, 0, SEN(prlimit64), "prlimit64" }, diff --git a/linux/subcall32.h b/linux/subcall32.h index 4331faa8..922d83d4 100644 --- a/linux/subcall32.h +++ b/linux/subcall32.h @@ -1,3 +1,5 @@ #define sys_semtimedop sys_semtimedop_time32 +#define sys_recvmmsg sys_recvmmsg_time32 #include "subcall.h" +#undef sys_recvmmsg #undef sys_semtimedop diff --git a/linux/subcall64.h b/linux/subcall64.h index fea7e60d..95e15bfb 100644 --- a/linux/subcall64.h +++ b/linux/subcall64.h @@ -1,3 +1,5 @@ #define sys_semtimedop sys_semtimedop_time64 +#define sys_recvmmsg sys_recvmmsg_time64 #include "subcall.h" +#undef sys_recvmmsg #undef sys_semtimedop diff --git a/linux/x32/syscallent.h b/linux/x32/syscallent.h index 994d80b9..360e333c 100644 --- a/linux/x32/syscallent.h +++ b/linux/x32/syscallent.h @@ -370,7 +370,7 @@ [534] = { 4, TD, SEN(preadv), "preadv" }, [535] = { 4, TD, SEN(pwritev), "pwritev" }, [536] = { 4, CST|TP|TS, SEN(rt_tgsigqueueinfo), "rt_tgsigqueueinfo" }, -[537] = { 5, CST|TN, SEN(recvmmsg), "recvmmsg" }, +[537] = { 5, CST|TN, SEN(recvmmsg_time64), "recvmmsg" }, [538] = { 4, CST|TN, SEN(sendmmsg), "sendmmsg" }, [539] = { 6, CST, SEN(process_vm_readv), "process_vm_readv" }, [540] = { 6, CST, SEN(process_vm_writev), "process_vm_writev" }, diff --git a/linux/x86_64/syscallent.h b/linux/x86_64/syscallent.h index 5852498d..b655e3cd 100644 --- a/linux/x86_64/syscallent.h +++ b/linux/x86_64/syscallent.h @@ -304,7 +304,7 @@ [296] = { 4, TD, SEN(pwritev), "pwritev" }, [297] = { 4, TP|TS, SEN(rt_tgsigqueueinfo), "rt_tgsigqueueinfo" }, [298] = { 5, TD, SEN(perf_event_open), "perf_event_open" }, -[299] = { 5, TN, SEN(recvmmsg), "recvmmsg" }, +[299] = { 5, TN, SEN(recvmmsg_time64), "recvmmsg" }, [300] = { 2, TD, SEN(fanotify_init), "fanotify_init" }, [301] = { 5, TD|TF, SEN(fanotify_mark), "fanotify_mark" }, [302] = { 4, 0, SEN(prlimit64), "prlimit64" }, diff --git a/linux/xtensa/syscallent.h b/linux/xtensa/syscallent.h index de2f508b..c6c2a9c6 100644 --- a/linux/xtensa/syscallent.h +++ b/linux/xtensa/syscallent.h @@ -302,7 +302,7 @@ [304] = { 3, TD|TS, SEN(signalfd), "signalfd" }, [305] = { }, [306] = { 1, TD, SEN(eventfd), "eventfd" }, -[307] = { 5, TN, SEN(recvmmsg), "recvmmsg" }, +[307] = { 5, TN, SEN(recvmmsg_time32), "recvmmsg" }, [308] = { 2, TD, SEN(setns), "setns" }, [309] = { 4, TD|TS, SEN(signalfd4), "signalfd4" }, [310] = { 3, TD, SEN(dup3), "dup3" }, diff --git a/mmsghdr.c b/mmsghdr.c index 15c3d1a2..d2908388 100644 --- a/mmsghdr.c +++ b/mmsghdr.c @@ -225,10 +225,12 @@ do_recvmmsg(struct tcb *const tcp, const print_obj_by_addr_fn print_ts, } } -SYS_FUNC(recvmmsg) +#if HAVE_ARCH_TIME32_SYSCALLS +SYS_FUNC(recvmmsg_time32) { - return do_recvmmsg(tcp, print_timespec, sprint_timespec); + return do_recvmmsg(tcp, print_timespec32, sprint_timespec32); } +#endif SYS_FUNC(recvmmsg_time64) { diff --git a/syscall.c b/syscall.c index bed6ca26..41cf27ec 100644 --- a/syscall.c +++ b/syscall.c @@ -408,6 +408,7 @@ dumpio(struct tcb *tcp) dumpiov_in_msghdr(tcp, tcp->u_arg[1], tcp->u_rval); return; case SEN_recvmmsg: + case SEN_recvmmsg_time32: case SEN_recvmmsg_time64: dumpiov_in_mmsghdr(tcp, tcp->u_arg[1]); return; -- 2.40.0