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; Andreas -- SUSE Linux GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Felix Imendörffer, Jane Smithard, Jennifer Guild, Dilip Upmanyu, Graham Norton; HRB 21284 (AG Nürnberg)