Signed-off-by: Michael Tremer michael.tremer@ipfire.org --- lfs/qemu | 1 + .../qemu-4.1.0-build-fix-glibc-2.31.patch | 65 +++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 src/patches/qemu-4.1.0-build-fix-glibc-2.31.patch
diff --git a/lfs/qemu b/lfs/qemu index a6b203029..2af66fbcc 100644 --- a/lfs/qemu +++ b/lfs/qemu @@ -78,6 +78,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/qemu-4.1.0-build-fix-glibc-2.31.patch cd $(DIR_APP) && ./configure --prefix=/usr --sysconfdir=/etc \ --localstatedir=/var --enable-kvm --disable-bluez --disable-attr \ --target-list="i386-linux-user x86_64-linux-user arm-linux-user i386-softmmu x86_64-softmmu arm-softmmu" \ diff --git a/src/patches/qemu-4.1.0-build-fix-glibc-2.31.patch b/src/patches/qemu-4.1.0-build-fix-glibc-2.31.patch new file mode 100644 index 000000000..37c744d3b --- /dev/null +++ b/src/patches/qemu-4.1.0-build-fix-glibc-2.31.patch @@ -0,0 +1,65 @@ +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 + +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(-) + +diff --git a/linux-user/syscall.c b/linux-user/syscall.c +index 4e97bcf..ce399a5 100644 +--- a/linux-user/syscall.c ++++ b/linux-user/syscall.c +@@ -7764,10 +7764,12 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1, + #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)) { + return -TARGET_EFAULT; +- return get_errno(stime(&host_time)); ++ } ++ return get_errno(clock_settime(CLOCK_REALTIME, &ts)); + } + #endif + #ifdef TARGET_NR_alarm /* not on alpha */ +-- +1.8.3.1 +