On Tue, Jan 31, 2017 at 03:14:29PM +0200, Michael S. Tsirkin wrote: > We are switching BUILD_BUG_ON to verify that it's parameter is a > compile-time constant, and it turns out that some gcc versions > (specifically gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609) are > not smart enough to figure it out for expressions involving local > variables. This is harmless but means that the check is ineffective for > these platforms. To fix, replace the variable with macros. > > Reported-by: Peter Maydell <peter.mayd...@linaro.org> > Signed-off-by: Michael S. Tsirkin <m...@redhat.com>
Ugh.. I pulled this into my tree already (I've been having trouble with my test setup, which is why I haven't sent my own pullreq yet). However, it needs a s/%u/%llu/ to compile correctly on some platforms. > --- > hw/ppc/spapr.c | 14 ++++++++------ > 1 file changed, 8 insertions(+), 6 deletions(-) > > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c > index a642e66..b81f2ac 100644 > --- a/hw/ppc/spapr.c > +++ b/hw/ppc/spapr.c > @@ -2630,8 +2630,8 @@ static void spapr_phb_placement(sPAPRMachineState > *spapr, uint32_t index, > * 1TiB 64-bit MMIO windows for each PHB. > */ > const uint64_t base_buid = 0x800000020000000ULL; > - const int max_phbs = > - (SPAPR_PCI_LIMIT - SPAPR_PCI_BASE) / SPAPR_PCI_MEM64_WIN_SIZE - 1; > +#define SPAPR_MAX_PHBS ((SPAPR_PCI_LIMIT - SPAPR_PCI_BASE) / \ > + SPAPR_PCI_MEM64_WIN_SIZE - 1) > int i; > > /* Sanity check natural alignments */ > @@ -2640,12 +2640,14 @@ static void spapr_phb_placement(sPAPRMachineState > *spapr, uint32_t index, > QEMU_BUILD_BUG_ON((SPAPR_PCI_MEM64_WIN_SIZE % SPAPR_PCI_MEM32_WIN_SIZE) > != 0); > QEMU_BUILD_BUG_ON((SPAPR_PCI_MEM32_WIN_SIZE % SPAPR_PCI_IO_WIN_SIZE) != > 0); > /* Sanity check bounds */ > - QEMU_BUILD_BUG_ON((max_phbs * SPAPR_PCI_IO_WIN_SIZE) > > SPAPR_PCI_MEM32_WIN_SIZE); > - QEMU_BUILD_BUG_ON((max_phbs * SPAPR_PCI_MEM32_WIN_SIZE) > > SPAPR_PCI_MEM64_WIN_SIZE); > + QEMU_BUILD_BUG_ON((SPAPR_MAX_PHBS * SPAPR_PCI_IO_WIN_SIZE) > > + SPAPR_PCI_MEM32_WIN_SIZE); > + QEMU_BUILD_BUG_ON((SPAPR_MAX_PHBS * SPAPR_PCI_MEM32_WIN_SIZE) > > + SPAPR_PCI_MEM64_WIN_SIZE); > > - if (index >= max_phbs) { > + if (index >= SPAPR_MAX_PHBS) { > error_setg(errp, "\"index\" for PAPR PHB is too large (max %u)", > - max_phbs - 1); > + SPAPR_MAX_PHBS - 1); > return; > } > -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature