This is v8 of the openat2 support in linux-user. Thanks for the feedback from Laurent on v7, really appreciated.
This version addresses the feedback for v7. It's mostly details, see the changelog below. Looking forward to your feedback/ideas! Thanks, Michael v7 -> v8 - use "tswap64(how.flags)" in do_openat2() - drop printing "size=" from strace.c v6 -> v7 - use abi_ulong in guest_size - use TARGET_ABI_FMT_lu to format guest size in qemu_log_mask() - drop #ifdef for TARGET_NR_openat2 - fix LTP test by checking for RESOLVE_NO_{MAGIC,SYM}LINKS in maybe_do_fake_open() - add support for openat2 in strace.c - add copy_struct_from_user definition to qemu.h - add open_how_v0 to syscall_defs.h v5 -> v6 - do not use get_errno(fd) in do_guest_openat() - do not put declarations in the middle of the code - do not return early in do_openat2() when we get a faked file v4 -> v5 - drop "*use_returned_fd" from maybe_do_fake_open() and use return value -2 to signal to the caller to continue - keep "pathname" in parameter to do_guest_openat() for a cleaner diff - fix two missing get_errno(fd) v3 -> v4: - fix typos in the commit message v2 -> v3: - fix coding style (braches) - improve argument args/naming in do_openat2() - merge do_openat2/do_guest_openat2 - do size checks first in do_openat2 - add "copy_struct_from_user" and use in "do_openat2()" - drop using openat2.h and create "struct open_how_v0" - log if open_how guest struct is bigger than our supported struct v1 -> v2: - do not include <sys/syscall.h> - drop do_guest_openat2 from qemu.h and make static - drop "safe" from do_guest_openat2 - ensure maybe_do_fake_open() is correct about when the result should be used or not - Extract do_openat2() helper from do_syscall1() - Call user_unlock* if a lock call fails - Fix silly incorrect use of "target_open_how" when "open_how" is required - Fix coding style comments - Fix validation of arg4 in openat2 - Fix missing zero initialization of open_how - Define target_open_how with abi_* types - Warn about unimplemented size if "size" of openat2 is bigger than target_open_how Michael Vogt (2): linux-user: add openat2 support in linux-user linux-user: add strace support for openat2 linux-user/qemu.h | 9 ++++ linux-user/strace.c | 40 ++++++++++++++++ linux-user/strace.list | 3 ++ linux-user/syscall.c | 99 ++++++++++++++++++++++++++++++++++++++- linux-user/syscall_defs.h | 18 +++++++ meson.build | 1 + 6 files changed, 168 insertions(+), 2 deletions(-) -- 2.45.2