ut_tv member is required to have type struct timeval http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/utmpx.h.html the following code fails on x86_64 linux: #define _XOPEN_SOURCE 700 #include <utmpx.h> void f() { struct utmpx x; struct timeval *p = &x.ut_tv; // warning: initialization from incompatible pointer type [enabled by default] }
We cannot fix this because for bi-arch systems, we want compatibility with the 32-bit utmpx struct layout, per this comment: /* The fields ut_session and ut_tv must be the same size when compiled 32- and 64-bit. This allows files and shared memory to be shared between 32- and 64-bit applications. */