On 27/05/2020 16.44, Laurent Vivier wrote: > Le 25/05/2020 à 15:18, Thomas Huth a écrit : >> From: Alex Bennée <alex.ben...@linaro.org> >> >> Newer clangs rightly spot that you can never exceed the full address >> space of 64 bit hosts with: >> >> linux-user/elfload.c:2076:41: error: result of comparison 'unsigned >> long' > 18446744073709551615 is always false >> [-Werror,-Wtautological-type-limit-compare] >> 4685 if ((guest_hiaddr - guest_base) > ~(uintptr_t)0) { >> 4686 ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~ >> 4687 1 error generated. >> >> So lets limit the check to 32 bit hosts only. >> >> Fixes: ee94743034bf >> Reported-by: Thomas Huth <th...@redhat.com> >> Signed-off-by: Alex Bennée <alex.ben...@linaro.org> >> [thuth: Use HOST_LONG_BITS < TARGET_ABI_BITS instead of HOST_LONG_BITS == 32] >> Signed-off-by: Thomas Huth <th...@redhat.com> >> --- >> linux-user/elfload.c | 2 ++ >> 1 file changed, 2 insertions(+) >> >> diff --git a/linux-user/elfload.c b/linux-user/elfload.c >> index 01a9323a63..ebc663ea0b 100644 >> --- a/linux-user/elfload.c >> +++ b/linux-user/elfload.c >> @@ -2073,12 +2073,14 @@ static void pgb_have_guest_base(const char >> *image_name, abi_ulong guest_loaddr, >> exit(EXIT_FAILURE); >> } >> } else { >> +#if HOST_LONG_BITS < TARGET_ABI_BITS >> if ((guest_hiaddr - guest_base) > ~(uintptr_t)0) { >> error_report("%s: requires more virtual address space " >> "than the host can provide (0x%" PRIx64 ")", >> image_name, (uint64_t)guest_hiaddr - guest_base); >> exit(EXIT_FAILURE); >> } >> +#endif >> } >> >> /* >> > > Philippe sent the same patch: > > https://www.mail-archive.com/qemu-devel@nongnu.org/msg699796.html
Indeed, but looking more closely, he's using slightly different locations for the #if and #endif ... not sure what's better though...? Thomas