[PATCH] arm64: Better native ptrace support for compat tasks

Will Deacon will.deacon at arm.com
Fri Jul 17 03:26:29 PDT 2015


Hi Catalin,

On Tue, Jul 14, 2015 at 04:20:17PM +0100, Catalin Marinas wrote:
> The compat ptrace interface allows access to the TLS register, hardware
> breakpoints and watchpoints, syscall number. However, a native task
> using the native ptrace interface to debug compat tasks (e.g. multi-arch
> gdb) only has access to the general and VFP register sets. The compat
> ptrace interface cannot be accessed from a native task.
> 
> This patch adds a new user_aarch32_ptrace_view which contains the TLS,
> hardware breakpoint/watchpoint and syscall number regsets in addition to
> the existing GPR and VFP regsets. This view is backwards compatible with
> the previous kernels. Core dumping of 32-bit tasks and compat ptrace are
> not affected since the original user_aarch32_view is preserved.

[...]

> +static const struct user_regset aarch32_ptrace_regsets[] = {
> +	[REGSET_GPR] = {
> +		.core_note_type = NT_PRSTATUS,
> +		.n = COMPAT_ELF_NGREG,
> +		.size = sizeof(compat_elf_greg_t),
> +		.align = sizeof(compat_elf_greg_t),
> +		.get = compat_gpr_get,
> +		.set = compat_gpr_set
> +	},
> +	[REGSET_FPR] = {
> +		.core_note_type = NT_ARM_VFP,
> +		.n = VFP_STATE_SIZE / sizeof(compat_ulong_t),
> +		.size = sizeof(compat_ulong_t),
> +		.align = sizeof(compat_ulong_t),
> +		.get = compat_vfp_get,
> +		.set = compat_vfp_set


I don't see how this is "backwards compatible with the previous kernels".
If there is some userspace out there that expects a native view onto the
registers of a compat task, then that's no longer the case, right? For
example, NT_PRFPREG requests will no longer work afaict. I'm not sure if
it matters that the NT_PRSTATUS regset is now limited to COMPAT_ELF_NGREG.

Will



More information about the linux-arm-kernel mailing list