On Mon, Nov 7, 2022 at 4:09 PM Niko Mauno via lists.openembedded.org <niko.mauno=vaisala....@lists.openembedded.org> wrote: > > Add default C Preprocessor flags that ensure Y2038 compatible 64 bit > time on 32 bit host applications when glibc is used. Prerequisites > are glibc version 2.34 or newer and Linux kernel version 5.1 or newer. > > Example of impact on 32 bit 'qemuarm' machine running > core-image-minimal. Before this change: > > root@qemuarm:~# /bin/busybox date > Sun Nov 6 06:09:39 UTC 2022 > root@qemuarm:~# /sbin/hwclock.util-linux -w > root@qemuarm:~# /sbin/hwclock.util-linux > 2022-11-06 06:09:49.994249+00:00 > root@qemuarm:~# /bin/busybox date -s 2040-01-01 > date: invalid date '2040-01-01' > root@qemuarm:~# /bin/date.coreutils -s 2040-01-01 > Sun Jan 1 00:00:00 UTC 2040 > root@qemuarm:~# /sbin/hwclock.util-linux -w > root@qemuarm:~# /sbin/hwclock.util-linux > 1931-03-04 06:26:23.000000+00:00 > root@qemuarm:~# > > After this change: > > root@qemuarm:~# /bin/busybox date > Sun Nov 6 06:02:20 UTC 2022 > root@qemuarm:~# /sbin/hwclock.util-linux -w > root@qemuarm:~# /sbin/hwclock.util-linux > 2022-11-06 06:02:27.989730+00:00 > root@qemuarm:~# /bin/busybox date -s 2040-01-01 > Sun Jan 1 00:00:00 UTC 2040 > root@qemuarm:~# /sbin/hwclock.util-linux -w > root@qemuarm:~# /sbin/hwclock.util-linux > 2040-01-01 00:00:20.992954+00:00 > root@qemuarm:~# > > From here on, the adding of new flags can be disabled on recipe or > global level by resetting the value of associated variable containing > the CPPFLAGS specific for 64 bit time > > GLIBC_64BIT_TIME_CPPFLAGS = "" > > which can be useful e.g. when working around failure to compile a > component due to lack of 64 bit time support on 32 bit build in the > component's source code. > > Signed-off-by: Niko Mauno <niko.ma...@vaisala.com> > --- > meta/conf/distro/include/tclibc-glibc.inc | 3 +++ > meta/recipes-devtools/gcc/gcc-sanitizers_12.2.bb | 2 ++ > meta/recipes-devtools/pseudo/pseudo_git.bb | 2 ++ > 3 files changed, 7 insertions(+) > > diff --git a/meta/conf/distro/include/tclibc-glibc.inc > b/meta/conf/distro/include/tclibc-glibc.inc > index f48d16939e..95770298e9 100644 > --- a/meta/conf/distro/include/tclibc-glibc.inc > +++ b/meta/conf/distro/include/tclibc-glibc.inc > @@ -17,6 +17,9 @@ PREFERRED_PROVIDER_virtual/crypt ?= "libxcrypt" > > CXXFLAGS += "-fvisibility-inlines-hidden" > > +GLIBC_64BIT_TIME_CPPFLAGS = "-D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64" > +TARGET_CPPFLAGS += "${GLIBC_64BIT_TIME_CPPFLAGS}"
We only need it for 32bit systems and not for 64bit systems. So perhaps we need it for only 32bit systems. > + > LIBC_DEPENDENCIES = "\ > glibc \ > glibc-dbg \ > diff --git a/meta/recipes-devtools/gcc/gcc-sanitizers_12.2.bb > b/meta/recipes-devtools/gcc/gcc-sanitizers_12.2.bb > index 8bda2ccad6..b3fafa0ea4 100644 > --- a/meta/recipes-devtools/gcc/gcc-sanitizers_12.2.bb > +++ b/meta/recipes-devtools/gcc/gcc-sanitizers_12.2.bb > @@ -5,3 +5,5 @@ require gcc-sanitizers.inc > # sanitizer_linux.s:5749: Error: lo register required -- `ldr ip,[sp],#8' > ARM_INSTRUCTION_SET:armv4 = "arm" > ARM_INSTRUCTION_SET:armv5 = "arm" > + > +GLIBC_64BIT_TIME_CPPFLAGS = "" > diff --git a/meta/recipes-devtools/pseudo/pseudo_git.bb > b/meta/recipes-devtools/pseudo/pseudo_git.bb > index c34580b4ff..7734d0fbb0 100644 > --- a/meta/recipes-devtools/pseudo/pseudo_git.bb > +++ b/meta/recipes-devtools/pseudo/pseudo_git.bb > @@ -19,3 +19,5 @@ PV = "1.9.0+git${SRCPV}" > > # error: use of undeclared identifier '_STAT_VER' > COMPATIBLE_HOST:libc-musl = 'null' > + > +GLIBC_64BIT_TIME_CPPFLAGS = "" > -- > 2.36.1 > > > >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#172946): https://lists.openembedded.org/g/openembedded-core/message/172946 Mute This Topic: https://lists.openembedded.org/mt/94880624/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-