On 02.06.2013 00:35, Peter Maydell wrote: > The linux-user syscall emulation layer currently supports the openat > family of syscalls via two mechanisms: simply calling the corresponding > libc functions, and making direct syscalls. Since glibc has supported > these functions since at least glibc 2.5, there's no real need to > retain the (essentially untested) direct syscall fallback code, so > this patchset simply deletes it. > > This allows us to remove some ifdeffery that was attempting to disable > provision of some of the syscalls if the host didn't seem to support > them, which in some cases was actually wrong. For example where there > are several flavours of the syscall, we only need one of them, not > necessarily the exact one the guest has, as with the fstatat* calls. > And if the guest needs the futimesat() syscall we can provide it > via glibc, even if that syscall is deprecated or not provided in the > host (because the host implements utimensat instead). AArch64 in > particular hits the last of these, which resulted in a compile > failure due to an unused function, because the syscall implementation's > ifdef was inconsistent with the ifdef used to define the sys_futimesat() > function. > > Basically, removing the ugly direct syscall access seemed nicer > than trying to fix up and render consistent the broken ifdefs :-) > > [RHEL5 has glibc2.5 and provides these functions. RHEL4 did not > but we don't build on RHEL4 anyhow because its glib is too old. > uClibc provides these functions.] > > Peter Maydell (2): > linux-user: Drop direct use of openat etc syscalls > configure: Drop CONFIG_ATFILE test > > configure | 26 ------ > linux-user/syscall.c | 218 > ++++++-------------------------------------------- > 2 files changed, 24 insertions(+), 220 deletions(-) >
Tested on aarch64 with Foundation v8. Tested-by: Claudio Fontana <claudio.font...@huawei.com>