From: Mike Gilbert Date: Mon, 20 Dec 2021 00:39:37 +0000 (-0500) Subject: basic: add a size check to format timex members properly X-Git-Tag: v250-rc3~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9a723ed6e80e3078969567f7cb551535d2fb00bd;p=thirdparty%2Fsystemd.git basic: add a size check to format timex members properly As of glibc-2.34, the size of members in struct timex varies depending on the _TIME_BITS macro. Fixes: https://github.com/systemd/systemd/issues/21826 --- diff --git a/meson.build b/meson.build index 0e8f58eb246..ff3e066e2ca 100644 --- a/meson.build +++ b/meson.build @@ -468,6 +468,7 @@ conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include ')) conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include ')) conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include ')) conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include ')) +conf.set('SIZEOF_TIMEX_MEMBER', cc.sizeof('((struct timex *)0)->freq', prefix : '#include ')) decl_headers = ''' #include diff --git a/src/basic/format-util.h b/src/basic/format-util.h index 7dd422b9874..8719df3e299 100644 --- a/src/basic/format-util.h +++ b/src/basic/format-util.h @@ -26,10 +26,12 @@ assert_cc(sizeof(gid_t) == sizeof(uint32_t)); # error Unknown time_t size #endif -#if defined __x86_64__ && defined __ILP32__ +#if SIZEOF_TIMEX_MEMBER == 8 # define PRI_TIMEX PRIi64 -#else +#elif SIZEOF_TIMEX_MEMBER == 4 # define PRI_TIMEX "li" +#else +# error Unknown timex member size #endif #if SIZEOF_RLIM_T == 8