Patchwork hw/qxl: Fix format string errors

login
register
mail settings
Submitter Peter Maydell
Date Sept. 3, 2011, 1:48 p.m.
Message ID <1315057705-4981-1-git-send-email-peter.maydell@linaro.org>
Download mbox | patch
Permalink /patch/113232/
State New
Headers show

Comments

Peter Maydell - Sept. 3, 2011, 1:48 p.m.
Fix format string errors causing compile failure on 32 bit hosts
when spice is enabled.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
This fixes the easy parts of the 32 bit compile failures with
spice enabled. It leaves the following two warnings:
 hw/qxl.c: In function 'interface_release_resource':
 hw/qxl.c:627:46: error: cast to pointer from integer of different size
 hw/qxl.c: In function 'qxl_phys2virt':
 hw/qxl.c:1003:16: error: cast to pointer from integer of different size

which appear to be making deeper "pointers are 64 bits" assumptions
that I don't know enough about the spice code to suggest fixes for.
(Throwing in (intptr_t) casts suppresses the warning but seems a
bit icky...)

Could somebody else take a look at those, please?

 hw/qxl-logger.c |    2 +-
 hw/qxl.c        |    8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)
Alon Levy - Sept. 4, 2011, 11:44 a.m.
On Sat, Sep 03, 2011 at 02:48:25PM +0100, Peter Maydell wrote:
> Fix format string errors causing compile failure on 32 bit hosts
> when spice is enabled.
> 

Patch looks good.

Reviewed-by: Alon Levy <alevy@redhat.com>

> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ---
> This fixes the easy parts of the 32 bit compile failures with
> spice enabled. It leaves the following two warnings:
>  hw/qxl.c: In function 'interface_release_resource':
>  hw/qxl.c:627:46: error: cast to pointer from integer of different size
>  hw/qxl.c: In function 'qxl_phys2virt':
>  hw/qxl.c:1003:16: error: cast to pointer from integer of different size
> 
> which appear to be making deeper "pointers are 64 bits" assumptions
> that I don't know enough about the spice code to suggest fixes for.
> (Throwing in (intptr_t) casts suppresses the warning but seems a
> bit icky...)
> 
> Could somebody else take a look at those, please?
> 

Spice server doesn't work for 32 bit machines. So regardless of the
fix it should not be possible to enable it for 32 bit builds. I think
if it were to work then the casts you suggest would be the simplest
assumption, keeping the qxl device structs the same (64 bit address
fields).


>  hw/qxl-logger.c |    2 +-
>  hw/qxl.c        |    8 ++++----
>  2 files changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/hw/qxl-logger.c b/hw/qxl-logger.c
> index 74cadba..367aad1 100644
> --- a/hw/qxl-logger.c
> +++ b/hw/qxl-logger.c
> @@ -224,7 +224,7 @@ void qxl_log_command(PCIQXLDevice *qxl, const char *ring, QXLCommandExt *ext)
>      if (!qxl->cmdlog) {
>          return;
>      }
> -    fprintf(stderr, "%ld qxl-%d/%s:", qemu_get_clock_ns(vm_clock),
> +    fprintf(stderr, "%" PRId64 " qxl-%d/%s:", qemu_get_clock_ns(vm_clock),
>              qxl->id, ring);
>      fprintf(stderr, " cmd @ 0x%" PRIx64 " %s%s", ext->cmd.data,
>              qxl_name(qxl_type, ext->cmd.type),
> diff --git a/hw/qxl.c b/hw/qxl.c
> index 45e2401..1fe0b53 100644
> --- a/hw/qxl.c
> +++ b/hw/qxl.c
> @@ -959,7 +959,7 @@ static void qxl_add_memslot(PCIQXLDevice *d, uint32_t slot_id, uint64_t delta,
>      memslot.generation = d->rom->slot_generation = 0;
>      qxl_rom_set_dirty(d);
>  
> -    dprint(d, 1, "%s: slot %d: host virt 0x%" PRIx64 " - 0x%" PRIx64 "\n",
> +    dprint(d, 1, "%s: slot %d: host virt 0x%lx - 0x%lx\n",
>             __FUNCTION__, memslot.slot_id,
>             memslot.virt_start, memslot.virt_end);
>  
> @@ -1090,8 +1090,8 @@ static void qxl_set_mode(PCIQXLDevice *d, int modenr, int loadvm)
>          .mem        = devmem + d->shadow_rom.draw_area_offset,
>      };
>  
> -    dprint(d, 1, "%s: mode %d  [ %d x %d @ %d bpp devmem 0x%lx ]\n", __FUNCTION__,
> -           modenr, mode->x_res, mode->y_res, mode->bits, devmem);
> +    dprint(d, 1, "%s: mode %d  [ %d x %d @ %d bpp devmem 0x%" PRIx64 " ]\n",
> +           __func__, modenr, mode->x_res, mode->y_res, mode->bits, devmem);
>      if (!loadvm) {
>          qxl_hard_reset(d, 0);
>      }
> @@ -1229,7 +1229,7 @@ async_common:
>          break;
>      case QXL_IO_LOG:
>          if (d->guestdebug) {
> -            fprintf(stderr, "qxl/guest-%d: %ld: %s", d->id,
> +            fprintf(stderr, "qxl/guest-%d: %" PRId64 ": %s", d->id,
>                      qemu_get_clock_ns(vm_clock), d->ram->log_buf);
>          }
>          break;
> -- 
> 1.7.4.1
> 
>

Patch

diff --git a/hw/qxl-logger.c b/hw/qxl-logger.c
index 74cadba..367aad1 100644
--- a/hw/qxl-logger.c
+++ b/hw/qxl-logger.c
@@ -224,7 +224,7 @@  void qxl_log_command(PCIQXLDevice *qxl, const char *ring, QXLCommandExt *ext)
     if (!qxl->cmdlog) {
         return;
     }
-    fprintf(stderr, "%ld qxl-%d/%s:", qemu_get_clock_ns(vm_clock),
+    fprintf(stderr, "%" PRId64 " qxl-%d/%s:", qemu_get_clock_ns(vm_clock),
             qxl->id, ring);
     fprintf(stderr, " cmd @ 0x%" PRIx64 " %s%s", ext->cmd.data,
             qxl_name(qxl_type, ext->cmd.type),
diff --git a/hw/qxl.c b/hw/qxl.c
index 45e2401..1fe0b53 100644
--- a/hw/qxl.c
+++ b/hw/qxl.c
@@ -959,7 +959,7 @@  static void qxl_add_memslot(PCIQXLDevice *d, uint32_t slot_id, uint64_t delta,
     memslot.generation = d->rom->slot_generation = 0;
     qxl_rom_set_dirty(d);
 
-    dprint(d, 1, "%s: slot %d: host virt 0x%" PRIx64 " - 0x%" PRIx64 "\n",
+    dprint(d, 1, "%s: slot %d: host virt 0x%lx - 0x%lx\n",
            __FUNCTION__, memslot.slot_id,
            memslot.virt_start, memslot.virt_end);
 
@@ -1090,8 +1090,8 @@  static void qxl_set_mode(PCIQXLDevice *d, int modenr, int loadvm)
         .mem        = devmem + d->shadow_rom.draw_area_offset,
     };
 
-    dprint(d, 1, "%s: mode %d  [ %d x %d @ %d bpp devmem 0x%lx ]\n", __FUNCTION__,
-           modenr, mode->x_res, mode->y_res, mode->bits, devmem);
+    dprint(d, 1, "%s: mode %d  [ %d x %d @ %d bpp devmem 0x%" PRIx64 " ]\n",
+           __func__, modenr, mode->x_res, mode->y_res, mode->bits, devmem);
     if (!loadvm) {
         qxl_hard_reset(d, 0);
     }
@@ -1229,7 +1229,7 @@  async_common:
         break;
     case QXL_IO_LOG:
         if (d->guestdebug) {
-            fprintf(stderr, "qxl/guest-%d: %ld: %s", d->id,
+            fprintf(stderr, "qxl/guest-%d: %" PRId64 ": %s", d->id,
                     qemu_get_clock_ns(vm_clock), d->ram->log_buf);
         }
         break;