On 05.05.2016 11:05, Erik Skultety wrote:
On 05/05/16 09:30, Michal Privoznik wrote:
> I've noticed this while trying to compile libvirt on my arm box.
>
> CC rpc/libvirt_net_rpc_server_la-virnetserverclient.lo
> rpc/virnetserverclient.c: In function
'virNetServerClientNewPostExecRestart':
> rpc/virnetserverclient.c:516:45: error: cast increases required alignment of target
type [-Werror=cast-align]
> (long long *) ×tamp) < 0) {
> ^
> cc1: all warnings being treated as errors
>
> Problem is, @timestap is defined as time_t which is 32 bits long,
> and we are typecasting it to long long which is 64bits long.
> Solution is to make @timestamp type of long long. But that could
> overflow when passing the variable to
> virNetServerClientNewInternal(). Well, we can do this and hope to
> find a better solution for this till 19 January 2038 (yes, time_t
> on my arm box is signed long int).
>
Hmm, why don't we then represent the timestamp as long long in the first
place, rather than having it as time_t. That way, no overflow as you
mention could happen and the only problem for your machine then would be
to cope with the 32bit timestamp time function returns, which will break
libvirt and anything else anyway, but at least in an expected manner.
I don't know. It's not me who wrote the code :-P But sure, we could do
that. It's going to be just a broadening of my patch anyway.
Michal