On Thu, 28 Aug 2025 at 13:09, Richard Henderson
<richard.henderson@linaro.org> wrote:
>
> Move the target_pt_regs structure from target_syscall.h.
> Rename the bits according to user_regs_struct, which is
> what is actually used by ELF_CORE_COPY_REGS; the layout
> of the two structure definitions is identical.
>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> linux-user/i386/target_ptrace.h | 31 +++++++++++++++++++++++++++++++
> linux-user/i386/target_syscall.h | 18 ------------------
> 2 files changed, 31 insertions(+), 18 deletions(-)
> create mode 100644 linux-user/i386/target_ptrace.h
>
> diff --git a/linux-user/i386/target_ptrace.h b/linux-user/i386/target_ptrace.h
> new file mode 100644
> index 0000000000..51edb637af
> --- /dev/null
> +++ b/linux-user/i386/target_ptrace.h
> @@ -0,0 +1,31 @@
> +/* SPDX-License-Identifier: GPL-2.0-or-later */
> +
> +#ifndef I386_TARGET_PTRACE_H
> +#define I386_TARGET_PTRACE_H
> +
> +/*
> + * Compare linux arch/x86/include/uapi/asm/ptrace.h (struct pt_regs) and
> + * arch/x86/include/asm/user_32.h (struct user_regs_struct).
> + * The structure layouts are identical; the user_regs_struct names are better.
> + */
Why do you think the user_regs_struct names are better?
"bx" suggests a 16-bit register, but these are 32-bit, right?
> +struct target_pt_regs {
> + abi_ulong bx;
> + abi_ulong cx;
> + abi_ulong dx;
> + abi_ulong si;
> + abi_ulong di;
> + abi_ulong bp;
> + abi_ulong ax;
> + abi_ulong ds;
> + abi_ulong es;
> + abi_ulong fs;
> + abi_ulong gs;
> + abi_ulong orig_ax;
> + abi_ulong ip;
> + abi_ulong cs;
> + abi_ulong flags;
> + abi_ulong sp;
> + abi_ulong ss;
> +};
> +
> +#endif /* I386_TARGET_PTRACE_H */
> diff --git a/linux-user/i386/target_syscall.h b/linux-user/i386/target_syscall.h
> index aaade06b13..c214a909a6 100644
> --- a/linux-user/i386/target_syscall.h
> +++ b/linux-user/i386/target_syscall.h
> @@ -5,24 +5,6 @@
> #define __USER_CS (0x23)
> #define __USER_DS (0x2B)
>
> -struct target_pt_regs {
> - long ebx;
> - long ecx;
> - long edx;
> - long esi;
> - long edi;
> - long ebp;
> - long eax;
> - int xds;
> - int xes;
> - long orig_eax;
> - long eip;
> - int xcs;
> - long eflags;
> - long esp;
> - int xss;
> -};
Commit message should say something about why we're changing
the types (though clearly here the target-specific types are
more sensible than the host-specific ones).
-- PMM