On Thu, 28 Aug 2025 at 13:09, Richard Henderson <richard.hender...@linaro.org> wrote: > > Signed-off-by: Richard Henderson <richard.hender...@linaro.org> > --- > linux-user/elfload.c | 16 +++++++++------- > 1 file changed, 9 insertions(+), 7 deletions(-) > > diff --git a/linux-user/elfload.c b/linux-user/elfload.c > index 63376fa1d6..98c17d32e6 100644 > --- a/linux-user/elfload.c > +++ b/linux-user/elfload.c > @@ -770,7 +770,9 @@ static void elf_core_copy_regs(target_elf_gregset_t *r, > const CPUM68KState *env) > > /* See linux kernel: arch/s390/include/uapi/asm/ptrace.h (s390_regs). */ > #define ELF_NREG 27 > -typedef target_elf_greg_t target_elf_gregset_t[ELF_NREG]; > +typedef struct target_elf_gregset_t { > + target_elf_greg_t regs[ELF_NREG]; > +} target_elf_gregset_t; > > enum { > TARGET_REG_PSWM = 0, > @@ -780,22 +782,22 @@ enum { > TARGET_REG_ORIG_R2 = 26, > }; > > -static void elf_core_copy_regs(target_elf_gregset_t *regs, > +static void elf_core_copy_regs(target_elf_gregset_t *r, > const CPUS390XState *env) > { > int i; > uint32_t *aregs; > > - (*regs)[TARGET_REG_PSWM] = tswapreg(env->psw.mask); > - (*regs)[TARGET_REG_PSWA] = tswapreg(env->psw.addr); > + r->regs[TARGET_REG_PSWM] = tswapreg(env->psw.mask); > + r->regs[TARGET_REG_PSWA] = tswapreg(env->psw.addr); > for (i = 0; i < 16; i++) { > - (*regs)[TARGET_REG_GPRS + i] = tswapreg(env->regs[i]); > + r->regs[TARGET_REG_GPRS + i] = tswapreg(env->regs[i]); > } > - aregs = (uint32_t *)&((*regs)[TARGET_REG_ARS]); > + aregs = (uint32_t *)&(r->regs[TARGET_REG_ARS]); > for (i = 0; i < 16; i++) { > aregs[i] = tswap32(env->aregs[i]); > }
This code (which takes a pointer to an entry in an array of 64-bit integers, casts it to a pointer to uint32_t, and then stores to that) looks very suspicious for not handing big-endian hosts correctly. But that's a separate problem, so for this refactoring Reviewed-by: Peter Maydell <peter.mayd...@linaro.org> thanks -- PMM > - (*regs)[TARGET_REG_ORIG_R2] = 0; > + r->regs[TARGET_REG_ORIG_R2] = 0; > } > > #define USE_ELF_CORE_DUMP > -- > 2.43.0