[Spice-devel] Alignment of data within spice packets
Christophe de Dinechin
dinechin at redhat.com
Thu Mar 9 11:46:09 UTC 2017
> On 8 Mar 2017, at 22:16, Victor Toso <lists at victortoso.com> wrote:
>
> Hi,
>
> On Wed, Mar 08, 2017 at 07:21:15PM +0100, Christophe de Dinechin wrote:
>> I have several errors like this:
>>
>> spice-channel.c:1923:12: error: cast from 'uint8_t *' (aka 'unsigned char *') to
>> 'uint32_t *' (aka 'unsigned int *') increases required alignment from 1 to
>> 4 [-Werror,-Wcast-align]
>> ...(uint32_t *)((uint8_t *)c->peer_msg + GUINT32_FROM_LE(c->peer_msg->caps_offset));
>> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>
>> Is there any guarantee that the result pointer will be 32-bit aligned?
>> In other words, is it guaranteed that the c->peer_msg->caps_offset
>> will be a multiple of 4? I don’t see this written in the spec.
>>
>> Based on the answer, the correct fix is:
>>
>> - If aligned, to cast to a uint32_t * in a way that disables the warning
>>
>> - If misaligned, to replaced *p with a read operation that is safe when mis-aligned (OS dependent I guess)
>
> Yes, we should check case-by-case. I started doing some work around this
> (nearly one and half year ago already!) but I got stuck on explaining
> the rationale for each cast which would avoid the warnings.
>
> You can see the comments and suggestions at the time are in the
> following thread:
>
> https://lists.freedesktop.org/archives/spice-devel/2015-August/021535.html <https://lists.freedesktop.org/archives/spice-devel/2015-August/021535.html>
Ach, I see you used SPICE_ALIGNED_CAST and SPICE_UNALIGNED_CAST. I used SPICE_REALIGN_CAST :-(
Will try to integrate your patches, thanks.
>
> Cheers,
> toso
>>
>>
>> Thanks
>> Christophe
>>
>> _______________________________________________
>> Spice-devel mailing list
>> Spice-devel at lists.freedesktop.org <mailto:Spice-devel at lists.freedesktop.org>
>> https://lists.freedesktop.org/mailman/listinfo/spice-devel <https://lists.freedesktop.org/mailman/listinfo/spice-devel>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/spice-devel/attachments/20170309/2229ea44/attachment.html>
More information about the Spice-devel
mailing list