[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-trivial] [PATCH] linux-user: Remove type casts to union type
From: |
Michael Tokarev |
Subject: |
Re: [Qemu-trivial] [PATCH] linux-user: Remove type casts to union type |
Date: |
Tue, 10 Feb 2015 22:51:25 +0300 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Icedove/31.4.0 |
08.02.2015 17:40, Stefan Weil wrote:
> Casting to a union type is a gcc (and clang) extension. Other compilers
> might not support it. This is not a problem today, but the type casts
> can be removed easily. Smatch now no longer complains like before:
>
> linux-user/syscall.c:3190:18: warning: cast to non-scalar
> linux-user/syscall.c:7348:44: warning: cast to non-scalar
>
> Cc: Riku Voipio <address@hidden>
> Signed-off-by: Stefan Weil <address@hidden>
> ---
> linux-user/syscall.c | 10 ++++++----
> 1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index 852308e..ec137db 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -2663,8 +2663,9 @@ static inline abi_long host_to_target_semarray(int
> semid, abi_ulong target_addr,
> }
>
> static inline abi_long do_semctl(int semid, int semnum, int cmd,
> - union target_semun target_su)
> + abi_ulong target_arg)
> {
> + union target_semun target_su;
> union semun arg;
> struct semid_ds dsarg;
> unsigned short *array = NULL;
> @@ -2673,6 +2674,8 @@ static inline abi_long do_semctl(int semid, int semnum,
> int cmd,
> abi_long err;
> cmd &= 0xff;
>
> + target_su.buf = target_arg;
Can we use c99 initializers at declaration, something like
union target_semun target_su = { .buf = target_arg }
? Or is it also some gcc/clang extension? :)
But I'd like to hear from Riku at least...
Thanks,
/mjt