mirror of https://gitee.com/openkylin/qemu.git
linux-user: enable getdents for > 32-bit systems
works perfectly fine with the example from getdents(2) and passes the LTP tests (tested with s390x on x86_64 emulation) Signed-off-by: Ulrich Hecht <uli@suse.de> Signed-off-by: Riku Voipio <riku.voipio@iki.fi>
This commit is contained in:
parent
7e22e54602
commit
d83c8733b7
|
@ -196,9 +196,7 @@ static int gettid(void) {
|
||||||
return -ENOSYS;
|
return -ENOSYS;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if TARGET_ABI_BITS == 32
|
|
||||||
_syscall3(int, sys_getdents, uint, fd, struct linux_dirent *, dirp, uint, count);
|
_syscall3(int, sys_getdents, uint, fd, struct linux_dirent *, dirp, uint, count);
|
||||||
#endif
|
|
||||||
#if defined(TARGET_NR_getdents64) && defined(__NR_getdents64)
|
#if defined(TARGET_NR_getdents64) && defined(__NR_getdents64)
|
||||||
_syscall3(int, sys_getdents64, uint, fd, struct linux_dirent64 *, dirp, uint, count);
|
_syscall3(int, sys_getdents64, uint, fd, struct linux_dirent64 *, dirp, uint, count);
|
||||||
#endif
|
#endif
|
||||||
|
@ -5795,9 +5793,7 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
case TARGET_NR_getdents:
|
case TARGET_NR_getdents:
|
||||||
#if TARGET_ABI_BITS != 32
|
#if TARGET_ABI_BITS == 32 && HOST_LONG_BITS == 64
|
||||||
goto unimplemented;
|
|
||||||
#elif TARGET_ABI_BITS == 32 && HOST_LONG_BITS == 64
|
|
||||||
{
|
{
|
||||||
struct target_dirent *target_dirp;
|
struct target_dirent *target_dirp;
|
||||||
struct linux_dirent *dirp;
|
struct linux_dirent *dirp;
|
||||||
|
|
Loading…
Reference in New Issue