linux-user/hppa: write the floating-point registers to a core dump
Write an NT_FPREGSET note for HPPA, matching the kernel's elf_fpregset_t layout (ELF_NFPREG = 32): fr0-fr31 as 64-bit values. Signed-off-by: Matt Turner <mattst88@gmail.com> Reviewed-by: Helge Deller <deller@gmx.de> Signed-off-by: Helge Deller <deller@gmx.de>
Matt Turner committed
Aug 5, 2026 at 13:15 UTC
474ad686693c8faeba34fd9e46ec81c98bb015ab
2 files changed
+16
linux-user/hppa/elfload.c
+7
@@ -17,6 +17,13 @@ const char *get_elf_platform(CPUState *cs)
17
return "PARISC";
18
}
19
20
+void elf_core_copy_fpregs(target_elf_fpregset_t *r, const CPUArchState *env)
21
+{
22
+ for (int i = 0; i < 32; i++) {
23
+ r->fpr[i] = tswap64(env->fr[i]);
24
+ }
25
+}
26
+
27
void elf_core_copy_regs(target_elf_gregset_t *r, const CPUArchState *env)
28
{
29
int i;
linux-user/hppa/target_elf.h
+9
@@ -39,4 +39,13 @@ typedef struct target_elf_gregset_t {
39
#define STACK_ALIGNMENT 64
40
#define VDSO_HEADER "vdso.c.inc"
41
42
+#define HAVE_ELF_CORE_FPREGS 1
43
+
44
+/*
45
+ * Matches the kernel's elf_fpregset_t (ELF_NFPREG = 32): fr0-fr31.
46
+ */
47
+typedef struct target_elf_fpregset_t {
48
+ uint64_t fpr[32];
49
+} target_elf_fpregset_t;
50
+
51
#endif