qemu-trivial
[Top][All Lists]
Advanced

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

Re: [PATCH v2] Drop more useless casts from void * to pointer


From: Markus Armbruster
Subject: Re: [PATCH v2] Drop more useless casts from void * to pointer
Date: Wed, 23 Nov 2022 16:08:24 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux)

Daniel P. Berrangé <berrange@redhat.com> writes:

> On Wed, Nov 23, 2022 at 02:51:49PM +0100, BALATON Zoltan wrote:
>> On Wed, 23 Nov 2022, Markus Armbruster wrote:
>> > Signed-off-by: Markus Armbruster <armbru@redhat.com>
>> > Reviewed-by: Laurent Vivier <laurent@vivier.eu>
>> > ---
>> > v2:
>> > * PATCH 1+2 merged as commit 0a553c12c7 and 3f7febc937
>> > * PATCH 3 change to util/coroutine-ucontext.c dropped [Laurent]
>> > 
>> > bsd-user/elfload.c                      | 2 +-
>> > contrib/plugins/cache.c                 | 8 ++++----
>> > contrib/vhost-user-blk/vhost-user-blk.c | 2 +-
>> > hw/core/qdev-clock.c                    | 2 +-
>> > hw/hyperv/vmbus.c                       | 2 +-
>> > hw/net/cadence_gem.c                    | 2 +-
>> > hw/net/virtio-net.c                     | 2 +-
>> > hw/nvme/ctrl.c                          | 4 ++--
>> > hw/rdma/vmw/pvrdma_cmd.c                | 9 +++------
>> > hw/rdma/vmw/pvrdma_qp_ops.c             | 6 +++---
>> > hw/virtio/virtio-iommu.c                | 3 +--
>> > linux-user/syscall.c                    | 2 +-
>> > target/i386/hax/hax-all.c               | 2 +-
>> > tests/tcg/aarch64/system/semiheap.c     | 4 ++--
>> > util/vfio-helpers.c                     | 2 +-
>> > 15 files changed, 24 insertions(+), 28 deletions(-)
>> > 
>> > diff --git a/bsd-user/elfload.c b/bsd-user/elfload.c
>> > index f8edb22f2a..fbcdc94b96 100644
>> > --- a/bsd-user/elfload.c
>> > +++ b/bsd-user/elfload.c
>> > @@ -156,7 +156,7 @@ static abi_ulong copy_elf_strings(int argc, char 
>> > **argv, void **page,
>> >             --p; --tmp; --len;
>> >             if (--offset < 0) {
>> >                 offset = p % TARGET_PAGE_SIZE;
>> > -                pag = (char *)page[p / TARGET_PAGE_SIZE];
>> > +                pag = page[p / TARGET_PAGE_SIZE];
>> 
>> I think arithmetic on void pointer was undefined at least in the past so
>> some compilers may warn for it but not sure if this is still the case for
>> the compilers we care about. Apparently not if this now compiles but that
>> explains why this cast was not useless.

I don't think so :)

@pag is char *.

@page is void **.

page[p / TARGET_PAGE_SIZE] is void *.  No need to cast to char * before
assigning to @pag.

No pointer arithmetic so far.  There's some further down: pag + offset.
@pag is char * before and after my patch.

>>                                         Found some more info on this here:
>> 
>> https://stackoverflow.com/questions/3523145/pointer-arithmetic-for-void-pointer-in-c
>
> QEMU explicitly only targets GCC + Clang, so portability to other
> compilers is not required.

Correct.  We do arithmentic with void * in many places already.

If we cared for portability to other compilers, we'd enable

'-Wpointer-arith'
     Warn about anything that depends on the "size of" a function type
     or of 'void'.  GNU C assigns these types a size of 1, for
     convenience in calculations with 'void *' pointers and pointers to
     functions.  In C++, warn also when an arithmetic operation involves
     'NULL'.  This warning is also enabled by '-Wpedantic'.

But we don't.




reply via email to

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