Re: [kvm-unit-tests PATCH 2/4] lib/alloc: fix format warnings, add/use PRIx64

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Mar 01, 2016 at 05:58:52AM +0100, Thomas Huth wrote:
> On 29.02.2016 21:19, Andrew Jones wrote:
> > Signed-off-by: Andrew Jones <drjones@xxxxxxxxxx>
> > ---
> >  lib/alloc.c    | 13 +++++++------
> >  lib/libcflat.h | 12 ++++++++++++
> >  2 files changed, 19 insertions(+), 6 deletions(-)
> > 
> > diff --git a/lib/alloc.c b/lib/alloc.c
> > index 34f71a337d868..e345843b7fe53 100644
> > --- a/lib/alloc.c
> > +++ b/lib/alloc.c
> > @@ -28,13 +28,13 @@ void phys_alloc_show(void)
> >  	int i;
> >  
> >  	spin_lock(&lock);
> > -	printf("phys_alloc minimum alignment: 0x%llx\n", align_min);
> > +	printf("phys_alloc minimum alignment: 0x%" PRIx64 "\n", align_min);
> >  	for (i = 0; i < nr_regions; ++i)
> > -		printf("%016llx-%016llx [%s]\n",
> > +		printf("%016" PRIx64 "-%016" PRIx64 " [%s]\n",
> >  			regions[i].base,
> >  			regions[i].base + regions[i].size - 1,
> >  			"USED");
> > -	printf("%016llx-%016llx [%s]\n", base, top - 1, "FREE");
> > +	printf("%016" PRIx64 "-%016" PRIx64 " [%s]\n", base, top - 1, "FREE");
> >  	spin_unlock(&lock);
> >  }
> >  
> > @@ -76,9 +76,10 @@ static phys_addr_t phys_alloc_aligned_safe(phys_addr_t size,
> >  	size += addr - base;
> >  
> >  	if ((top_safe - base) < size) {
> > -		printf("phys_alloc: requested=0x%llx (align=0x%llx), "
> > -		       "need=0x%llx, but free=0x%llx. "
> > -		       "top=0x%llx, top_safe=0x%llx\n",
> > +		printf("phys_alloc: requested=0x%" PRIx64
> > +		       " (align=0x%" PRIx64 "), "
> > +		       "need=0x%" PRIx64 ", but free=0x%" PRIx64 ". "
> > +		       "top=0x%" PRIx64 ", top_safe=0x%" PRIx64 "\n",
> >  		       size_orig, align, size, top_safe - base,
> >  		       top, top_safe);
> >  		spin_unlock(&lock);
> > diff --git a/lib/libcflat.h b/lib/libcflat.h
> > index ce09d34e658b3..36e300bf4d0ff 100644
> > --- a/lib/libcflat.h
> > +++ b/lib/libcflat.h
> > @@ -48,6 +48,18 @@ typedef _Bool		bool;
> >  #define false 0
> >  #define true  1
> >  
> > +#if __SIZEOF_LONG__ == 8
> > +#  define __PRI64_PREFIX	"l"
> > +#  define __PRIPTR_PREFIX	"l"
> > +#else
> > +#  define __PRI64_PREFIX	"ll"
> > +#  define __PRIPTR_PREFIX
> > +#endif
> > +#define PRId64  __PRI64_PREFIX	"d"
> > +#define PRIu64  __PRI64_PREFIX	"u"
> > +#define PRIx64  __PRI64_PREFIX	"x"
> > +#define PRIxPTR __PRIPTR_PREFIX	"x"
> 
> So libcflat uses the header stdint.h from the standard gcc installation
> to get the uint64_t and friends, but you define the PRIx64 etc. here
> manually? That sounds strange... You could simply include "inttypes.h"
> instead of "stdint.h" in this libcflat.h header file, then you would get
> PRIx64 and friends automatically instead.

We can only include headers that are provided by libgcc in arch-neutral
files like libcflat, in order for cross-compiling to work. inttypes.h
isn't available.

> 
> OTOH, for a stand-alone binary like kvm-unit-tests, it's also somewhat
> risky to compile without "-nostdinc" since unwanted headers might be
> included that way (e.g. what happens if someone writes "#include
> <stdio.h>" by accident? You likely get some nice confusion...). So maybe
> it would be better to compile with "-nostdinc" instead and define all
> necessary things manually here?

We don't have -nostdinc because sometimes the x86 tests cheat and use
standard includes. arm and powerpc Makefiles could/should add it though,
as they don't currently cheat, and it's probably best if they never do.

Thanks,
drew

> 
>  Thomas
> 
> --
> To unsubscribe from this list: send the line "unsubscribe kvm" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux