> uintptr_t by definition is large enough to hold any pointer value, so > casting from any pointer to uintptr_t should never give that warning. > > Are you sure your not using a target libc built for 32-bit and trying > to use it for targetting 64-bit? That would explain why your target > libc headers define a uintptr_t that is too small to hold a pointer > value. Absolutely sure. I built the target libc for biarch, and have 32 and 64 bit versions in place in the sysroot directory. Also: once again, this all works if the target is PowerPC64. It *ONLY* fails for X86_64 target. But the difference is that PPC64 defines sizeof(int)=64 bits, while X86_64 defines sizeof(int)=32 bits. This looks like *somebody* is assuming that an int will always hold a pointer - which is NOT guaranteed in the C standard (only a long is so guaranteed).