qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] fix gcc warnings when RESERVED_VA is 0


From: Peter Maydell
Subject: Re: [Qemu-devel] [PATCH] fix gcc warnings when RESERVED_VA is 0
Date: Sun, 16 Sep 2012 10:58:36 +0100

On 16 September 2012 01:05, Mike Frysinger <address@hidden> wrote:
> The current code, while correct, triggers a bunch of gcc warnings when
> RESERVED_VA is 0 like so:
> linux-user/syscall.c: In function 'do_shmat':
> linux-user/syscall.c:3058: warning: comparison of unsigned expression < 0 is 
> always false
> linux-user/syscall.c: In function 'open_self_maps':
> linux-user/syscall.c:4960: warning: comparison of unsigned expression < 0 is 
> always false
> linux-user/syscall.c:4960: warning: comparison of unsigned expression < 0 is 
> always false
>
> Signed-off-by: Mike Frysinger <address@hidden>
> ---
>  cpu-all.h |    8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/cpu-all.h b/cpu-all.h
> index 5e07d28..0e5dcf0 100644
> --- a/cpu-all.h
> +++ b/cpu-all.h
> @@ -202,10 +202,16 @@ extern unsigned long reserved_va;
>  #if HOST_LONG_BITS <= TARGET_VIRT_ADDR_SPACE_BITS
>  #define h2g_valid(x) 1
>  #else
> +/* Gcc likes to warn about comparing unsigned longs to < 0, so cpp it away.  
> */
> +# if RESERVED_VA

This won't do the right thing. In the CONFIG_USE_GUEST_BASE case
RESERVED_VA is #defined to 'reserved_va'. Since that's not a
cpp identifier then (a) cpp should complain since we use -Wundef
and (b) cpp will treat it as zero, meaning that we take the #else
branch regardless, which isn't what we want.

In the longer term it would be nice to add guest-base support to
the SPARC tcg backend, and then we could just unconditionally
enable CONFIG_USE_GUEST_BASE for -user targets.

> +#  define _h2g_reserved_va(x) ((x) < RESERVED_VA)
> +# else
> +#  define _h2g_reserved_va(x) 1
> +# endif
>  #define h2g_valid(x) ({ \
>      unsigned long __guest = (unsigned long)(x) - GUEST_BASE; \
>      (__guest < (1ul << TARGET_VIRT_ADDR_SPACE_BITS)) && \
> -    (!RESERVED_VA || (__guest < RESERVED_VA)); \
> +    _h2g_reserved_va(__guest); \
>  })
>  #endif

-- PMM



reply via email to

[Prev in Thread] Current Thread [Next in Thread]