Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6ba1bc82 authored by Will Deacon's avatar Will Deacon Committed by Catalin Marinas
Browse files

arm64: elf: fix core dumping definitions for GP and FP registers



struct user_fp does not exist for arm64, so use struct user_fpsimd_state
instead for the ELF core dumping definitions. Furthermore, since we use
regset-based core dumping, we do not need definitions for dump_task_regs
and dump_fpu.

Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
parent f46f979f
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -25,12 +25,10 @@
#include <asm/user.h>

typedef unsigned long elf_greg_t;
typedef unsigned long elf_freg_t[3];

#define ELF_NGREG (sizeof (struct pt_regs) / sizeof(elf_greg_t))
typedef elf_greg_t elf_gregset_t[ELF_NGREG];

typedef struct user_fp elf_fpregset_t;
typedef struct user_fpsimd_state elf_fpregset_t;

#define EM_AARCH64		183

@@ -87,7 +85,6 @@ typedef struct user_fp elf_fpregset_t;
#define R_AARCH64_MOVW_PREL_G2_NC	292
#define R_AARCH64_MOVW_PREL_G3		293


/*
 * These are used to set parameters in the core dumps.
 */
+2 −3
Original line number Diff line number Diff line
@@ -25,9 +25,8 @@
 *  - FPSR and FPCR
 *  - 32 128-bit data registers
 *
 * Note that user_fp forms a prefix of this structure, which is relied
 * upon in the ptrace FP/SIMD accessors. struct user_fpsimd_state must
 * form a prefix of struct fpsimd_state.
 * Note that user_fpsimd forms a prefix of this structure, which is
 * relied upon in the ptrace FP/SIMD accessors.
 */
struct fpsimd_state {
	union {
+0 −18
Original line number Diff line number Diff line
@@ -309,24 +309,6 @@ struct task_struct *__switch_to(struct task_struct *prev,
	return last;
}

/*
 * Fill in the task's elfregs structure for a core dump.
 */
int dump_task_regs(struct task_struct *t, elf_gregset_t *elfregs)
{
	elf_core_copy_regs(elfregs, task_pt_regs(t));
	return 1;
}

/*
 * fill in the fpe structure for a core dump...
 */
int dump_fpu (struct pt_regs *regs, struct user_fp *fp)
{
	return 0;
}
EXPORT_SYMBOL(dump_fpu);

/*
 * Shuffle the argument into the correct register before calling the
 * thread function.  x1 is the thread argument, x2 is the pointer to