[systemd-devel] systemd-196/196 fails to build with x32 Abi support

Lennart Poettering lennart at poettering.net
Fri Jan 18 10:34:29 PST 2013


On Fri, 18.01.13 18:22, Stephan Raue (mailinglists at openelec.tv) wrote:

> 
> Am 18.01.2013 18:14, schrieb Colin Walters:
> >On Fri, 2013-01-18 at 16:14 +0100, Stephan Raue wrote:
> >
> >>src/core/manager.c: In function 'manager_setup_time_change':
> >>src/core/manager.c:160:14: error: static assertion failed:
> >>"sizeof(time_t) == sizeof(long)"
> >>           assert_cc(sizeof(time_t) == sizeof(long));
> >>                ^
> >You'll have to dive in here and adjust the code - this assumption is not
> >true on x32.
> >
> >
> this was clear to me, can i get any help with adjusting the code? :-)

Not sure what the best way is to detect an architecture where time_t is
"long long" rather than "long". I figure there must be some macro we
could check for. If we have that, the code can be changed to:

#ifdef MACRO_TO_CHECK
        assert_cc(sizeof(time_t) == sizeof(long long));
        its.it_value.tv_sec = LONG_LONG_MAX;
#else
        assert_cc(sizeof(time_t) == sizeof(long));
        its.it_value.tv_sec = LONG_MAX;
#endif

i.e. the goal here is to initialize the time_t value that is tv_sec to
the maximum possible value.

Lennart

-- 
Lennart Poettering - Red Hat, Inc.


More information about the systemd-devel mailing list