Hi Sakib,

Did you check this busybox fix against musl? I forgot to ask you this when
you showed me this patch yesterday.

Randy

On Tue., Jul. 21, 2020, 14:01 Sakib Sajal, <[email protected]>
wrote:

> settimeofday(2) has been deprecated as of glibc 2.31
> which hwclock makes use of. This patch makes hwclock
> compatible with glibc v2.31
> See patch for more details:
>   busybox/0001-hwclock-make-glibc-2.31-compatible.patch
>
> Fixes [YOCTO #13981]
>
> Signed-off-by: Sakib Sajal <[email protected]>
> ---
>  ...1-hwclock-make-glibc-2.31-compatible.patch | 83 +++++++++++++++++++
>  meta/recipes-core/busybox/busybox_1.32.0.bb   |  1 +
>  2 files changed, 84 insertions(+)
>  create mode 100644
> meta/recipes-core/busybox/busybox/0001-hwclock-make-glibc-2.31-compatible.patch
>
> diff --git
> a/meta/recipes-core/busybox/busybox/0001-hwclock-make-glibc-2.31-compatible.patch
> b/meta/recipes-core/busybox/busybox/0001-hwclock-make-glibc-2.31-compatible.patch
> new file mode 100644
> index 0000000000..8d1f272120
> --- /dev/null
> +++
> b/meta/recipes-core/busybox/busybox/0001-hwclock-make-glibc-2.31-compatible.patch
> @@ -0,0 +1,83 @@
> +From 5b2fc5746c352eb2b27bfc9fb224580d9852d0fa Mon Sep 17 00:00:00 2001
> +From: Sakib Sajal <[email protected]>
> +Date: Fri, 17 Jul 2020 17:27:21 +0000
> +Subject: [PATCH] hwclock: make glibc 2.31 compatible
> +
> +NEWS for glibc version 2.31
> +===========================
> +
> +Deprecated and removed features, and other changes affecting
> compatibility:
> +
> +* The settimeofday function can still be used to set a system-wide
> +  time zone when the operating system supports it.  This is because
> +  the Linux kernel reused the API, on some architectures, to describe
> +  a system-wide time-zone-like offset between the software clock
> +  maintained by the kernel, and the "RTC" clock that keeps time when
> +  the system is shut down.
> +
> +  However, to reduce the odds of this offset being set by accident,
> +  settimeofday can no longer be used to set the time and the offset
> +  simultaneously.  If both of its two arguments are non-null, the call
> +  will fail (setting errno to EINVAL).
> +
> +  Callers attempting to set this offset should also be prepared for
> +  the call to fail and set errno to ENOSYS; this already happens on
> +  the Hurd and on some Linux architectures.  The Linux kernel
> +  maintainers are discussing a more principled replacement for the
> +  reused API.  After a replacement becomes available, we will change
> +  settimeofday to fail with ENOSYS on all platforms when its 'tzp'
> +  argument is not a null pointer.
> +
> +  settimeofday itself is obsolescent according to POSIX.  Programs
> +  that set the system time should use clock_settime and/or the adjtime
> +  family of functions instead.  We may cease to make settimeofday
> +  available to newly linked binaries after there is a replacement for
> +  Linux's time-zone-like offset API.
> +
> +hwclock had two calls to settimeofday, in functions to_sys_clock and
> +set_system_clock_timezone, where both the arguments to settimeofday
> +were valid (non-null).
> +Therefore, split the call, once for timezone and once for timeval.
> +
> +Fixes #12756
> +
> +Upstream-Status: Pending
> +
> +Signed-off-by: Sakib Sajal <[email protected]>
> +---
> + util-linux/hwclock.c | 12 ++++++++----
> + 1 file changed, 8 insertions(+), 4 deletions(-)
> +
> +diff --git a/util-linux/hwclock.c b/util-linux/hwclock.c
> +index dc97d8f..cf346e8 100644
> +--- a/util-linux/hwclock.c
> ++++ b/util-linux/hwclock.c
> +@@ -131,8 +131,10 @@ static void to_sys_clock(const char **pp_rtcname,
> int utc)
> +
> +       tv.tv_sec = read_rtc(pp_rtcname, NULL, utc);
> +       tv.tv_usec = 0;
> +-      if (settimeofday(&tv, &tz))
> +-              bb_simple_perror_msg_and_die("settimeofday");
> ++      if (settimeofday(NULL, &tz))
> ++              bb_simple_perror_msg_and_die("settimeofday: timezone");
> ++      if (settimeofday(&tv, NULL))
> ++              bb_simple_perror_msg_and_die("settimeofday: timeval");
> + }
> +
> + static void from_sys_clock(const char **pp_rtcname, int utc)
> +@@ -283,8 +285,10 @@ static void set_system_clock_timezone(int utc)
> +       gettimeofday(&tv, NULL);
> +       if (!utc)
> +               tv.tv_sec += tz.tz_minuteswest * 60;
> +-      if (settimeofday(&tv, &tz))
> +-              bb_simple_perror_msg_and_die("settimeofday");
> ++      if (settimeofday(NULL, &tz))
> ++              bb_simple_perror_msg_and_die("settimeofday: timezone");
> ++      if (settimeofday(&tv, NULL))
> ++              bb_simple_perror_msg_and_die("settimeofday: timeval");
> + }
> +
> + //usage:#define hwclock_trivial_usage
> +--
> +2.24.1
> +
> diff --git a/meta/recipes-core/busybox/busybox_1.32.0.bb
> b/meta/recipes-core/busybox/busybox_1.32.0.bb
> index 0dfdfdb549..aeea40fbc1 100644
> --- a/meta/recipes-core/busybox/busybox_1.32.0.bb
> +++ b/meta/recipes-core/busybox/busybox_1.32.0.bb
> @@ -43,6 +43,7 @@ SRC_URI = "
> https://busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \
>
> file://0001-testsuite-use-www.example.org-for-wget-test-cases.patch \
>             file://0001-du-l-works-fix-to-use-145-instead-of-144.patch \
>
> file://0001-sysctl-ignore-EIO-of-stable_secret-below-proc-sys-ne.patch \
> +           file://0001-hwclock-make-glibc-2.31-compatible.patch \
>  "
>  SRC_URI_append_libc-musl = " file://musl.cfg "
>
> --
> 2.27.0
>
> 
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#140837): 
https://lists.openembedded.org/g/openembedded-core/message/140837
Mute This Topic: https://lists.openembedded.org/mt/75709226/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub  
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to