[Spice-devel] [PATCH spice-server 2/3] Remove a warning on MIPS machine
Uri Lublin
uril at redhat.com
Wed Jun 19 07:55:26 UTC 2019
On 6/18/19 8:03 PM, Frediano Ziglio wrote:
>>
>>>
>>> On 6/3/19 2:22 PM, Frediano Ziglio wrote:
>>>> The formula is here to make sure glyph is aligned to 4 bytes so
>>>> tell to the compiler to avoid a warning.
>>>
>>> What's the warning ?
>>
>> Trying to reproduce but the updated environment it's slow like
>> hell (it's more than 30 minutes that it's compiling 3 files).
>>
>
> The warning is
>
> red-parse-qxl.c: In function ‘red_get_string’:
> red-parse-qxl.c:949:17: error: cast increases required alignment of target type [-Werror=cast-align]
> glyph = (SpiceRasterGlyph*)
> ^
>
>
>>> Is it that the pointer may be unaligned (which is imposible
>>> if you start from an aligned address) ?
>>>
>>
>> Yes, was an alignment warning
>>
>>> Looks complicated to me, especially since after the
>>> SPICE_ALIGNED_CAST there is another (the "real") cast.
>>>
>>
>> Maybe with an additional
>>
>> @@ -941,7 +941,7 @@ static SpiceString *red_get_string(RedMemSlotInfo *slots,
>> int group_id,
>> spice_assert(glyph_size <= (char*) end - (char*) &start->data[0]);
>> memcpy(glyph->data, start->data, glyph_size);
>> start = (QXLRasterGlyph*)(&start->data[glyph_size]);
>> - glyph = (SpiceRasterGlyph*) SPICE_ALIGNED_CAST(uint32_t*,
>> + glyph = SPICE_ALIGNED_CAST(SpiceRasterGlyph*,
>> (((uint8_t *)glyph) +
>> SPICE_ALIGN(sizeof(SpiceRasterGlyph) + glyph_size, 4)));
>> }
>>
>>
>> would work too. Not sure how long it's going to take to test it.
>>
>
> This works too.
That's better, thanks.
>>>>
>>>> Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
>>>
>>> Ack.
Uri.
>>>
>>>> ---
>>>> server/red-parse-qxl.c | 4 ++--
>>>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/server/red-parse-qxl.c b/server/red-parse-qxl.c
>>>> index afae94316..89b61c06f 100644
>>>> --- a/server/red-parse-qxl.c
>>>> +++ b/server/red-parse-qxl.c
>>>> @@ -941,9 +941,9 @@ static SpiceString *red_get_string(RedMemSlotInfo
>>>> *slots, int group_id,
>>>> spice_assert(glyph_size <= (char*) end - (char*)
>>>> &start->data[0]);
>>>> memcpy(glyph->data, start->data, glyph_size);
>>>> start = (QXLRasterGlyph*)(&start->data[glyph_size]);
>>>> - glyph = (SpiceRasterGlyph*)
>>>> + glyph = (SpiceRasterGlyph*) SPICE_ALIGNED_CAST(uint32_t*,
>>>> (((uint8_t *)glyph) +
>>>> - SPICE_ALIGN(sizeof(SpiceRasterGlyph) + glyph_size, 4));
>>>> + SPICE_ALIGN(sizeof(SpiceRasterGlyph) + glyph_size, 4)));
>>>> }
>>>>
>>>> if (free_data) {
>>>>
>>>
>>>
>> _______________________________________________
>> Spice-devel mailing list
>> Spice-devel at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/spice-devel
More information about the Spice-devel
mailing list