On 22 Jan 2024 00:06, Mark Wielaard wrote: > GCC errors on -Wincompatible-pointer-types > > sim/frv/sem.c: In function ‘frvbf_sem_mmachu’: > sim/frv/sem.c:24345:41: error: passing argument 2 of ‘sim_queue_fn_di_write’ from incompatible pointer type [-Wincompatible-pointer-types] > 24345 | sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval); > | ^~~~~~~~~~~~~~~~~~ > | | > | void (*)(SIM_CPU *, UINT, UDI) {aka void (*)(struct _sim_cpu *, unsigned int, long unsigned int)} > In file included from ../../binutils-gdb/sim/common/cgen-cpu.h:25, > from ../../binutils-gdb/sim/common/sim-cpu.h:32, > from ../../binutils-gdb/sim/common/sim-base.h:90, > from ../../binutils-gdb/sim/frv/sim-main.h:41, > from ../../binutils-gdb/sim/frv/sem.c:28: > ../../binutils-gdb/sim/common/cgen-par.h:195:47: note: expected ‘void (*)(SIM_CPU *, UINT, DI)’ {aka ‘void (*)(struct _sim_cpu *, unsigned int, long int)’} but argument is of type ‘void (*)(SIM_CPU *, UINT, UDI)’ {aka ‘void (*)(struct _sim_cpu *, unsigned int, long unsigned int)’} > 195 | extern void sim_queue_fn_di_write (SIM_CPU *, void (*)(SIM_CPU *, UINT, DI), UINT, DI); > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > The issue is that sim_queue_fn_di_write takes a function with a DI argument > but frvbf_h_acc40U_set takes a UDI. Since there is no sim_queue_fn that > takes a UDI just define frvbf_h_acc40U_set as if it takes a DI. > --- > sim/frv/cpu.c | 2 +- > sim/frv/cpu.h | 2 +- unfortunately this doesn't work as cpu.[ch] is generated. https://sourceware.org/pipermail/gdb-patches/2023-December/205492.html https://sourceware.org/PR29752 -mike