Le 16/06/2020 à 12:51, Filip Bozuta a écrit : > From: Filip Bozuta <filip.boz...@syrmia.com> > > This patch implements functionality for strace argument printing for ioctls. > When running ioctls through qemu with "-strace", they get printed in format: > > "ioctl(fd_num,0x*,0x*) = ret_value" > > where the request code an the ioctl's third argument get printed in a > hexadicemal > format. This patch changes that by enabling strace to print both the request > code > name and the contents of the third argument. For example, when running ioctl > RTC_SET_TIME with "-strace", with changes from this patch, it gets printed in > this way: > > "ioctl(3,RTC_SET_TIME,{12,13,15,20,10,119,0,0,0}) = 0" > > In case of IOC_R type ioctls, the contents of the third argument get printed > after the return value, and the argument inside the ioctl call gets printed > as pointer in hexadecimal format. For example, when running RTC_RD_TIME with > "-strace", with changes from this patch, it gets printed in this way: > > "ioctl(3,RTC_RD_TIME,0x40800374) = 0 ({22,9,13,11,5,120,0,0,0})" > > In case of IOC_RW type ioctls, the contents of the third argument get printed > both inside the ioctl call and after the return value. > > Implementation notes: > > Functions "print_ioctl()" and "print_syscall_ret_ioctl()", that are > defined > in "strace.c", are listed in file "strace.list" as "call" and "result" > value for ioctl. Structure definition "IOCTLEntry" as well as predefined > values for IOC_R, IOC_W and IOC_RW were cut and pasted from file > "syscall.c" > to file "qemu.h" so that they can be used by these functions to print the > contents of the third ioctl argument. Also, the "static" identifier for > array > "ioctl_entries[]" was removed and this array was declared as "extern" in > "qemu.h" > so that it can also be used by these functions. To decode the structure > type > of the ioctl third argument, function "thunk_print()" was defined in file > "thunk.c" and its definition is somewhat simillar to that of function > "thunk_convert()". > > Signed-off-by: Filip Bozuta <filip.boz...@syrmia.com> > Based-on: <20200616103927.20222-1-filip.boz...@syrmia.com>
To work, I think the Based-on tag must be set in the cover-letter of the series. > --- > include/exec/user/thunk.h | 1 + > linux-user/qemu.h | 20 +++++ > linux-user/strace.c | 107 ++++++++++++++++++++++++++ > linux-user/strace.list | 3 +- > linux-user/syscall.c | 20 +---- > thunk.c | 154 ++++++++++++++++++++++++++++++++++++++ > 6 files changed, 285 insertions(+), 20 deletions(-) > Reviewed-by: Laurent Vivier <laur...@vivier.eu>