Le 25/05/2020 à 15:18, Thomas Huth a écrit : > From: Alex Bennée <[email protected]> > > 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 <[email protected]> > Signed-off-by: Alex Bennée <[email protected]> > [thuth: Use HOST_LONG_BITS < TARGET_ABI_BITS instead of HOST_LONG_BITS == 32] > Signed-off-by: Thomas Huth <[email protected]> > --- > 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/[email protected]/msg699796.html Thanks, Laurent
