Re: [PATCH v2 12/15] linux-user: Uncast void pointer argument as Object in target_cpu_free()
Richard Henderson <[email protected]>
| Newsgroups | org.nongnu.qemu-riscv,org.nongnu.qemu-arm,org.nongnu.qemu-devel |
|---|---|
| Message-ID | <[email protected]> |
On 8/20/26 13:13, Philippe Mathieu-Daudé wrote: > init_main_thread() is registered as Object::free() hook, thus > take an Object* argument. Uncast the void pointer as such. > > While now cpu_env() accept any pointer type, next commit will > restrict it to CPUState* type. QOM-cast the Object to CPU type, > otherwise we will get: > > ../linux-user/i386/cpu_loop.c: In function ‘target_cpu_free’: > include/hw/core/cpu.h:604:31: error: ‘_Generic’ selector of type ‘void’ is not compatible with any association > ../linux-user/x86_64/../i386/cpu_loop.c:331:19: note: in expansion of macro ‘cpu_env’ > 331 | target_munmap(cpu_env(obj)->gdt.base, > | ^~~~~~~ > > Signed-off-by: Philippe Mathieu-Daudé <[email protected]> > --- > linux-user/i386/cpu_loop.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/linux-user/i386/cpu_loop.c b/linux-user/i386/cpu_loop.c > index fe922fceb5a..a0790f3f352 100644 > --- a/linux-user/i386/cpu_loop.c > +++ b/linux-user/i386/cpu_loop.c > @@ -326,9 +326,10 @@ void cpu_loop(CPUX86State *env) > } > } > > -static void target_cpu_free(void *obj) > +static void target_cpu_free(void *ptr) > { > - target_munmap(cpu_env(obj)->gdt.base, > + Object *obj = ptr; > + target_munmap(cpu_env(CPU(obj))->gdt.base, If you're going to have any dynamic cast, you might as well use X86_CPU(obj)->env.gdt.base. Otherwise, Reviewed-by: Richard Henderson <[email protected]> r~