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

Re: [Xen-devel] [PATCH] xen: correct definition of uintptr_t on 32-bit platforms.



>>> On 04.06.13 at 15:16, Ian Campbell <ian.campbell@xxxxxxxxxx> wrote:
> Currently uintptr_t is unsigned long for both 32- and 64- bit platforms but
> __PRIPTR_PREFIX is just "" on 32-bit leading to:
> 
>     error: format '%u' expects argument of type 'unsigned int', but argument 
> 2 has type 'long unsigned int' [-Werror=format]
> 
> It was a bit of a tossup between changing __PREPTR_PREFIX and changing the
> definition of uintptr_t. I went with the latter since it is consistent with
> glibc.

Actually I would much prefer the format string prefix to be changed
- like Linux, we're assuming all over the place that pointer and longs
are equivalent in size, so creating an association between pointers
and ints is much more likely to cause problems than adjusting the
format string prefix.

Jan

> Tested with:
>     printk("uintptr %"PRIuPTR"\n", (uintptr_t)a_convenient_local_var);
> in a conveniently built place on unstable (x86_64, arm32, arm64) and Xen 4.2
> (x86_32p & x86_64).
> 
> This error will be exposed by the fixes for XSA55 and therefore will need to
> be backported along with those.
> 
> Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
> Cc: ian.jackson@xxxxxxxxxxxxx 
> Cc: keir@xxxxxxx 
> Cc: jbeulich@xxxxxxxx 
> ---
>  xen/include/xen/types.h |    4 ++++
>  1 files changed, 4 insertions(+), 0 deletions(-)
> 
> diff --git a/xen/include/xen/types.h b/xen/include/xen/types.h
> index 8596ded..641e1d1 100644
> --- a/xen/include/xen/types.h
> +++ b/xen/include/xen/types.h
> @@ -57,6 +57,10 @@ typedef __u32 __be32;
>  typedef __u64 __le64;
>  typedef __u64 __be64;
>  
> +#if BITS_PER_LONG == 64
>  typedef unsigned long uintptr_t;
> +#else
> +typedef unsigned int uintptr_t;
> +#endif
>  
>  #endif /* __TYPES_H__ */
> -- 
> 1.7.2.5




_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.