On Fri, 20 Jan 2017 11:04:29 +0100 Thomas Huth <th...@redhat.com> wrote:
> On 20.01.2017 11:00, Cornelia Huck wrote: > > On Fri, 20 Jan 2017 10:52:26 +0100 > > Thomas Huth <th...@redhat.com> wrote: > > > >> On 20.01.2017 10:21, Cornelia Huck wrote: > >>> On Thu, 19 Jan 2017 18:32:44 +0000 > >>> Peter Maydell <peter.mayd...@linaro.org> wrote: > >>> > >>>> Hi; I'm afraid this fails to build on Windows: > >>>> > >>>> /home/petmay01/linaro/qemu-for-merges/hw/s390x/s390-pci-bus.c: In > >>>> function ‘s390_pci_get_iommu’: > >>>> /home/petmay01/linaro/qemu-for-merges/hw/s390x/s390-pci-bus.c:415:20: > >>>> error: cast from pointer to integer of different size > >>>> [-Werror=pointer-to-int-cast] > >>>> uint64_t key = (unsigned long)bus; > >>>> ^ > >>>> /home/petmay01/linaro/qemu-for-merges/hw/s390x/s390-pci-bus.c: In > >>>> function ‘s390_pci_iommu_free’: > >>>> /home/petmay01/linaro/qemu-for-merges/hw/s390x/s390-pci-bus.c:539:20: > >>>> error: cast from pointer to integer of different size > >>>> [-Werror=pointer-to-int-cast] > >>>> uint64_t key = (unsigned long)bus; > >>>> ^ > >>>> cc1: all warnings being treated as errors > >>>> > >>>> > >>>> You probably wanted uintptr_t. > >>> > >>> Fixed and v2 sent. > >>> > >>> I'm wondering if there is any way to catch this earlier (without > >>> actually building on Windows)? My mingw 4.8.2 cross-build worked fine... > >> > >> You likely got to use the 32-bit version of MinGW (or compile with -m32 > >> with any other version of GCC) to catch this issue, so that you get > >> sizeof(long) != sizeof(void *). > > > > Well, I already do that (mingw32, and I see -m32 on the command line; > > that already caught sizeof(uint64_t) != sizeof(void *) here.) But isn't > > sizeof(long) == sizeof(void *) even in the -m32 case? > > Yes, sorry, my bad, it's the 64-bit version of MinGW where sizeof(long) > is different to sizeof(void *), see > https://sourceforge.net/p/mingw-w64/bugs/58/ for example. Ah, that makes sense. Thanks!