On 10/24/22 17:15, Richard Henderson wrote: > On 10/25/22 01:05, Claudio Fontana wrote: >> On 10/24/22 15:24, Richard Henderson wrote: >>> Add a tcg_ops hook to replace the restore_state_to_opc >>> function call. Because these generic hooks cannot depend >>> on target-specific types, temporarily, copy the current >>> target_ulong data[] into uint64_t d64[]. >>> >>> Signed-off-by: Richard Henderson <richard.hender...@linaro.org> >>> --- >>> include/exec/exec-all.h | 2 +- >>> include/hw/core/tcg-cpu-ops.h | 11 +++++++++++ >>> accel/tcg/translate-all.c | 24 ++++++++++++++++++++++-- >>> 3 files changed, 34 insertions(+), 3 deletions(-) >>> >>> diff --git a/include/exec/exec-all.h b/include/exec/exec-all.h >>> index e5f8b224a5..a772e8cbdc 100644 >>> --- a/include/exec/exec-all.h >>> +++ b/include/exec/exec-all.h >>> @@ -40,7 +40,7 @@ typedef ram_addr_t tb_page_addr_t; >>> #endif >>> >>> void restore_state_to_opc(CPUArchState *env, TranslationBlock *tb, >>> - target_ulong *data); >>> + target_ulong *data) __attribute__((weak)); >> >> Hi Richard, doesn't matter much since this is removed later on, but I wonder >> why the need for attribute weak here? >> I don't see you overloading this function in later patches.. > > So that it can be undefined. Otherwise I can't remove the existing symbol > from each target. > > > r~ > >
Right - there is still the call to restore_state_to_opc in the else branch in the general code. I wonder if checking for NULL would make sense in theory, I think that with both GCC and Clang the external declaration with attribute weak would make the function address evaluate to NULL, so that could be a possible thing to exploit, but no matter. Reviewed-by: Claudio Fontana <cfont...@suse.de>