1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- From 0f1f2d4596aee037d3ccbcf10592466daa54107f Mon Sep 17 00:00:00 2001
- From: Laurent Vivier <laurent@vivier.eu>
- Date: Tue, 12 Nov 2019 15:25:56 +0100
- Subject: [PATCH] linux-user: remove host stime() syscall
- stime() has been withdrawn from glibc
- (12cbde1dae6f "Use clock_settime to implement stime; withdraw stime.")
- Implement the target stime() syscall using host
- clock_settime(CLOCK_REALTIME, ...) as it is done internally in glibc.
- Tested qemu-ppc/x86_64 with:
- #include <time.h>
- #include <stdio.h>
- int main(void)
- {
- time_t t;
- int ret;
- /* date -u -d"2019-11-12T15:11:00" "+%s" */
- t = 1573571460;
- ret = stime(&t);
- printf("ret %d\n", ret);
- return 0;
- }
- # date; ./stime; date
- Tue Nov 12 14:18:32 UTC 2019
- ret 0
- Tue Nov 12 15:11:00 UTC 2019
- Upstream-Status: Backport [https://git.qemu.org/?p=qemu.git;a=commit;h=0f1f2d4596aee037d3ccbcf10592466daa54107f]
- Buglink: https://bugs.launchpad.net/qemu/+bug/1852115
- Reported-by: Cole Robinson <crobinso@redhat.com>
- Signed-off-by: Laurent Vivier <laurent@vivier.eu>
- Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
- Message-Id: <20191112142556.6335-1-laurent@vivier.eu>
- ---
- linux-user/syscall.c | 8 +++++---
- 1 file changed, 5 insertions(+), 3 deletions(-)
- Index: qemu-3.0.0/linux-user/syscall.c
- ===================================================================
- --- qemu-3.0.0.orig/linux-user/syscall.c
- +++ qemu-3.0.0/linux-user/syscall.c
- @@ -8520,10 +8520,11 @@ abi_long do_syscall(void *cpu_env, int n
- #ifdef TARGET_NR_stime /* not on alpha */
- case TARGET_NR_stime:
- {
- - time_t host_time;
- - if (get_user_sal(host_time, arg1))
- + struct timespec ts;
- + ts.tv_nsec = 0;
- + if (get_user_sal(ts.tv_sec, arg1))
- goto efault;
- - ret = get_errno(stime(&host_time));
- + ret = get_errno(clock_settime(CLOCK_REALTIME, &ts));
- }
- break;
- #endif
|