[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 4/7] linux-user: Fix sys_utimensat (would not compil
From: |
riku . voipio |
Subject: |
[Qemu-devel] [PATCH 4/7] linux-user: Fix sys_utimensat (would not compile on old glibc) |
Date: |
Wed, 10 Jul 2013 13:20:47 +0300 |
From: Peter Maydell <address@hidden>
Commit c0d472b12e accidentally dropped the definition of
__NR_SYS_utimensat even though its use is guarded by
CONFIG_UTIMENSAT, not CONFIG_ATFILE. Some older glibc don't
have utimensat() (even if they have the other *at() functions).
Fix this by correctly cleaning up the sys_utimensat()
implementation and #defines, so that we always provide the
syscall if needed whether we're doing it via glibc or not.
Signed-off-by: Peter Maydell <address@hidden>
Tested-by: Laurent Desnogues <address@hidden>
Message-id: address@hidden
---
linux-user/syscall.c | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 4b134dd..d74836a 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -339,6 +339,7 @@ static int sys_openat(int dirfd, const char *pathname, int
flags, mode_t mode)
}
#endif
+#ifdef TARGET_NR_utimensat
#ifdef CONFIG_UTIMENSAT
static int sys_utimensat(int dirfd, const char *pathname,
const struct timespec times[2], int flags)
@@ -348,12 +349,19 @@ static int sys_utimensat(int dirfd, const char *pathname,
else
return utimensat(dirfd, pathname, times, flags);
}
-#else
-#if defined(TARGET_NR_utimensat) && defined(__NR_utimensat)
+#elif defined(__NR_utimensat)
+#define __NR_sys_utimensat __NR_utimensat
_syscall4(int,sys_utimensat,int,dirfd,const char *,pathname,
const struct timespec *,tsp,int,flags)
+#else
+static int sys_utimensat(int dirfd, const char *pathname,
+ const struct timespec times[2], int flags)
+{
+ errno = ENOSYS;
+ return -1;
+}
#endif
-#endif /* CONFIG_UTIMENSAT */
+#endif /* TARGET_NR_utimensat */
#ifdef CONFIG_INOTIFY
#include <sys/inotify.h>
@@ -8627,7 +8635,7 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
goto unimplemented_nowarn;
#endif
-#if defined(TARGET_NR_utimensat) && defined(__NR_utimensat)
+#if defined(TARGET_NR_utimensat)
case TARGET_NR_utimensat:
{
struct timespec *tsp, ts[2];
--
1.8.1.2
- [Qemu-devel] [PULL] linux-user fixes, riku . voipio, 2013/07/10
- [Qemu-devel] [PATCH 5/7] user-exec.c: Set is_write correctly in the ARM cpu_signal_handler(), riku . voipio, 2013/07/10
- [Qemu-devel] [PATCH 1/7] linux-user: handle /proc/$$ like /proc/self, riku . voipio, 2013/07/10
- [Qemu-devel] [PATCH 2/7] linux-user: add SIOCADDRT/SIOCDELRT support, riku . voipio, 2013/07/10
- [Qemu-devel] [PATCH 4/7] linux-user: Fix sys_utimensat (would not compile on old glibc),
riku . voipio <=
- [Qemu-devel] [PATCH 3/7] linux-user: fix signal number range check, riku . voipio, 2013/07/10
- [Qemu-devel] [PATCH 6/7] linux-user: improve target_to_host_sock_type conversion, riku . voipio, 2013/07/10
- [Qemu-devel] [PATCH 7/7] linux-user: Do not ignore mmap failure from host, riku . voipio, 2013/07/10
- Re: [Qemu-devel] [PULL] linux-user fixes, Anthony Liguori, 2013/07/10