Re: [PATCH spice-server 2/3] Remove a warning on MIPS machine

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxx>

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@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/spice-devel

_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/spice-devel




[Index of Archives]     [Linux Virtualization]     [Linux Virtualization]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]