@@ -0,0 +1,38 @@
+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>
+---
+ linux-user/syscall.c | 6 +-----
+ 1 files changed, 1 insertions(+), 5 deletions(-)
+
+diff --git a/linux-user/syscall.c b/linux-user/syscall.c
+index d9c4af0..c9e0194 100644
+--- a/linux-user/syscall.c
++++ b/linux-user/syscall.c
+@@ -194,9 +194,7 @@ static int gettid(void) {
+ return -ENOSYS;
+ }
+ #endif
+-#if TARGET_ABI_BITS == 32
+ _syscall3(int, sys_getdents, uint, fd, struct linux_dirent *, dirp, uint, count);
+-#endif
+ #if defined(TARGET_NR_getdents64) && defined(__NR_getdents64)
+ _syscall3(int, sys_getdents64, uint, fd, struct linux_dirent64 *, dirp, uint, count);
+ #endif
+@@ -5791,9 +5789,7 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
+ break;
+ #endif
+ case TARGET_NR_getdents:
+-#if TARGET_ABI_BITS != 32
+- goto unimplemented;
+-#elif TARGET_ABI_BITS == 32 && HOST_LONG_BITS == 64
++#if TARGET_ABI_BITS == 32 && HOST_LONG_BITS == 64
+ {
+ struct target_dirent *target_dirp;
+ struct linux_dirent *dirp;
+--
+1.6.2.1
+
+
+
|