Type casts from pointer to integer values must use uintptr_t instead of unsigned long. Otherwise the compiler complains on hosts with sizeof(pointer) != sizeof(long).
The patch also replace magic number 32 by sizeof(info.serial_number) which has the same value but is better for code reviews. Signed-off-by: Stefan Weil <s...@weilnetz.de> --- hw/megasas.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hw/megasas.c b/hw/megasas.c index c35a15d..f2d6783 100644 --- a/hw/megasas.c +++ b/hw/megasas.c @@ -698,8 +698,8 @@ static int megasas_ctrl_get_info(MegasasState *s, MegasasCmd *cmd) } memcpy(info.product_name, "MegaRAID SAS 8708EM2", 20); - snprintf(info.serial_number, 32, "QEMU%08lx", - (unsigned long)s & 0xFFFFFFFF); + snprintf(info.serial_number, sizeof(info.serial_number), + "QEMU%08" PRIxPTR, (uintptr_t)s & 0xFFFFFFFF); snprintf(info.package_version, 0x60, "%s-QEMU", QEMU_VERSION); memcpy(info.image_component[0].name, "APP", 3); memcpy(info.image_component[0].version, MEGASAS_VERSION "-QEMU", 9); -- 1.7.10