[Top][All Lists]
[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: |
Blue Swirl |
Subject: |
Re: [Qemu-devel] [PATCH] fix gcc warnings when RESERVED_VA is 0 |
Date: |
Sun, 16 Sep 2012 10:25:16 +0000 |
On Sun, Sep 16, 2012 at 9:58 AM, Peter Maydell <address@hidden> wrote:
> 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.
IIRC Richard's Sparc TCG patch set implemented guest base. Any chance
of refreshing that?
>
>> +# 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
>
- [Qemu-devel] [PATCH] fix gcc warnings when RESERVED_VA is 0, Mike Frysinger, 2012/09/15
- Re: [Qemu-devel] [PATCH] fix gcc warnings when RESERVED_VA is 0, Peter Maydell, 2012/09/16
- [Qemu-devel] [PATCH 02/13] tcg-sparc: Hack in qemu_ld/st64 for 32-bit., Richard Henderson, 2012/09/17
- [Qemu-devel] [PATCH 06/13] tcg-sparc: Support GUEST_BASE., Richard Henderson, 2012/09/17
- [Qemu-devel] [PATCH 03/13] tcg-sparc: Fix ADDX opcode., Richard Henderson, 2012/09/17
- [Qemu-devel] [PATCH 04/13] tcg-sparc: Assume v9 cpu always, i.e. force v8plus in 32-bit mode., Richard Henderson, 2012/09/17
- Re: [Qemu-devel] [PATCH 04/13] tcg-sparc: Assume v9 cpu always, i.e. force v8plus in 32-bit mode., Andreas Färber, 2012/09/17