tools/libxl: Fix virtio build error for 32-bit platforms

The field 'base' in 'struct libxl_device_virtio' is defined as uint64,
while we are printing it with '%lu', which is 32bit only 32-bit
platforms. And so generates a error like:

  libxl_internal.h:4388:51: error: format '%lu' expects argument of type 'long
  unsigned int', but argument 3 has type 'uint64_t' {aka 'long long unsigned
  int'} [-Werror=format=]

Fix it by switching to a 64bit PRI instead.

While fixing this, switch from decimal to hex which is the more natural base
to use for a field like this.

Fixes: 43ba5202e2 ("libxl: add support for generic virtio device")
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
This commit is contained in:
Viresh Kumar authored and Andrew Cooper committed 2022-12-15 18:04:53 +00:00
1 parent 32b61bcafc
commit c8aaebccc8
1 file changed
+2 -2
+2 -2
View File
@@ -45,12 +45,12 @@ static int libxl__set_xenstore_virtio(libxl__gc *gc, uint32_t domid,
const char *transport = libxl_virtio_transport_to_string(virtio->transport);
flexarray_append_pair(back, "irq", GCSPRINTF("%u", virtio->irq));
flexarray_append_pair(back, "base", GCSPRINTF("%lu", virtio->base));
flexarray_append_pair(back, "base", GCSPRINTF("%#"PRIx64, virtio->base));
flexarray_append_pair(back, "type", GCSPRINTF("%s", virtio->type));
flexarray_append_pair(back, "transport", GCSPRINTF("%s", transport));
flexarray_append_pair(front, "irq", GCSPRINTF("%u", virtio->irq));
flexarray_append_pair(front, "base", GCSPRINTF("%lu", virtio->base));
flexarray_append_pair(front, "base", GCSPRINTF("%#"PRIx64, virtio->base));
flexarray_append_pair(front, "type", GCSPRINTF("%s", virtio->type));
flexarray_append_pair(front, "transport", GCSPRINTF("%s", transport));
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.