[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