kvm: workaround build break on gcc-7.1.1 / fedora26
commit1b7ac7cab6a9abaf686fe7a7f4afea155c03d6a8
authorGreg Kurz <groug@kaod.org>
Mon, 7 Aug 2017 11:36:44 +0000 (7 13:36 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 8 Aug 2017 08:40:20 +0000 (8 10:40 +0200)
tree4b6f0e5a5594adf30db6bf5f7eb3efb76768c67c
parent2a96a552f9502ac34c29da2f3a39788db5ee5692
kvm: workaround build break on gcc-7.1.1 / fedora26

Building QEMU on fedora26 with the latest gcc package fails:

  CC      ppc64-softmmu/target/ppc/kvm.o
In file included from include/sysemu/hw_accel.h:16:0,
                 from target/ppc/kvm.c:31:
target/ppc/kvm.c: In function â€˜kvmppc_booke_watchdog_enable’:
include/sysemu/kvm.h:449:35: error: â€˜args_tmp[i]’ may be used uninitialized
 in this function [-Werror=maybe-uninitialized]
             cap.args[i] = args_tmp[i];                               \
                                   ^
target/ppc/kvm.c: In function â€˜kvmppc_set_papr’:
include/sysemu/kvm.h:449:35: error: â€˜args_tmp[i]’ may be used uninitialized
 in this function [-Werror=maybe-uninitialized]
cc1: all warnings being treated as errors

$ rpm -q gcc
gcc-7.1.1-3.fc26.ppc64le

The compiler should obviously optimize this code away when no extra
agument is passed to kvm_vm_enable_cap() and kvm_vcpu_enable_cap(),
but it doesn't. This bug should be fixed one day in gcc, but we can
also change our code pattern so that we don't hit the issue anymore.
We workaround this, by using memcpy() instead of open-coding the copy.

Signed-off-by: Greg Kurz <groug@kaod.org>
Message-Id: <150210580404.1343.7325713896658799315.stgit@bahia.lan>
Acked-by: Cornelia Huck <cohuck@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
include/sysemu/kvm.h