]> rtime.felk.cvut.cz Git - lisovros/qemu_apohw.git/commit
target-arm: fix build with gcc 4.8.2
authorMichael S. Tsirkin <mst@redhat.com>
Mon, 23 Dec 2013 11:33:11 +0000 (13:33 +0200)
committerMichael S. Tsirkin <mst@redhat.com>
Mon, 23 Dec 2013 16:02:23 +0000 (18:02 +0200)
commit5bf58abf1cb7220d9f7d8e18f113a353cd6f260d
treecc7839a861bd1a9bcab68560714ab14c53be0e06
parent83d0704734955bf1aa7697af7be2a50e11a80a42
target-arm: fix build with gcc 4.8.2

commit 5ce4f35781028ce1aee3341e6002f925fdc7aaf3
    "target-arm: A64: add set_pc cpu method"

introduces an array aarch64_cpus which is zero
size if this code is built without CONFIG_USER_ONLY.
In particular an attempt to iterate over this array produces a warning
under gcc 4.8.2:

 CC    aarch64-softmmu/target-arm/cpu64.o
/scm/qemu/target-arm/cpu64.c: In function ‘aarch64_cpu_register_types’:
/scm/qemu/target-arm/cpu64.c:124:5: error: comparison of unsigned
expression < 0 is always false [-Werror=type-limits]
     for (i = 0; i < ARRAY_SIZE(aarch64_cpus); i++) {
     ^
cc1: all warnings being treated as errors

This is the result of ARRAY_SIZE being an unsigned type,
causing "i" to be promoted to unsigned int as well.

As zero size arrays are a gcc extension, it seems
cleanest to add a dummy element with NULL name,
and test for it during registration.

We'll be able to drop this when we add more CPUs.

Cc: Alexander Graf <agraf@suse.de>
Cc: Peter Maydell <peter.maydell@linaro.org>
Cc: Richard Henderson <rth@twiddle.net>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Stefan Weil <sw@weilnetz.de>
target-arm/cpu64.c