[Spice-devel] [PATCH spice-server 2/3] Remove a warning on MIPS machine
Frediano Ziglio
fziglio at redhat.com
Tue Jun 18 17:03:24 UTC 2019
>
> >
> > 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.
> > On the other hand it doesn't break anything.
> >
> > >
> > > Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> >
> > Ack.
> >
> > > ---
> > > 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