qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 4/4] cpu: Make cpu_init() return QOM object


From: Eduardo Habkost
Subject: Re: [Qemu-devel] [PATCH 4/4] cpu: Make cpu_init() return QOM object
Date: Tue, 10 Mar 2015 13:35:45 -0300
User-agent: Mutt/1.5.23 (2014-03-12)

On Tue, Mar 10, 2015 at 05:23:18PM +0100, Andreas Färber wrote:
> Am 10.03.2015 um 17:16 schrieb Andreas Färber:
> > Am 26.02.2015 um 21:37 schrieb Eduardo Habkost:
> >> Instead of making cpu_init() return CPUArchState, return a CPU object.
> >>
> > [snip]
> > 
> > In file included from
> > /home/andreas/QEMU/qemu-cpu/include/exec/cpu-all.h:26:0,
> >                  from /home/andreas/QEMU/qemu-cpu/target-alpha/cpu.h:296,
> >                  from /home/andreas/QEMU/qemu-cpu/linux-user/qemu.h:7,
> >                  from /home/andreas/QEMU/qemu-cpu/linux-user/main.c:29:
> > /home/andreas/QEMU/qemu-cpu/linux-user/main.c: In function ‘cpu_copy’:
> > /home/andreas/QEMU/qemu-cpu/include/qom/cpu.h:60:18: error:
> > initialization from incompatible pointer type [-Werror]
> >  #define CPU(obj) ((CPUState *)(obj))
> >                   ^
> > /home/andreas/QEMU/qemu-cpu/target-alpha/cpu.h:432:29: note: in
> > expansion of macro ‘CPU’
> >  #define cpu_init(cpu_model) CPU(cpu_alpha_init(cpu_model))
> >                              ^
> > /home/andreas/QEMU/qemu-cpu/linux-user/main.c:3455:29: note: in
> > expansion of macro ‘cpu_init’
> >      CPUArchState *new_env = cpu_init(cpu_model);
> >                              ^
> > cc1: all warnings being treated as errors
> > /home/andreas/QEMU/qemu-cpu/rules.mak:57: recipe for target
> > 'linux-user/main.o' failed
> > make[1]: *** [linux-user/main.o] Error 1
> 
> The following fixes it for me:
> 
> diff --git a/linux-user/main.c b/linux-user/main.c
> index dd33665..6bd23af 100644
> --- a/linux-user/main.c
> +++ b/linux-user/main.c
> @@ -3452,8 +3452,8 @@ void init_task_state(TaskState *ts)
>  CPUArchState *cpu_copy(CPUArchState *env)
>  {
>      CPUState *cpu = ENV_GET_CPU(env);
> -    CPUArchState *new_env = cpu_init(cpu_model);
> -    CPUState *new_cpu = ENV_GET_CPU(new_env);
> +    CPUState *new_cpu = cpu_init(cpu_model);
> +    CPUArchState *new_env = cpu->env_ptr;
>      CPUBreakpoint *bp;
>      CPUWatchpoint *wp;

Oops. That change was supposed to be done by the Coccinelle patch. I am
sure that some previous version of the Coccinelle patch was doing it
right, but for some reason the latest version (the one I submitted) was
broken (and I can't understand why).

I guess I shouldn't have insisted in making a pure coccinelle-based
patch and should have changed cpu_copy() manually instead (like you just
did).

-- 
Eduardo



reply via email to

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