summaryrefslogtreecommitdiff
path: root/include/linux/elfcore-compat.h
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2020-06-13 23:03:25 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2021-01-06 08:40:56 -0500
commit7facdc426f86c67e579e49e100943cbccc43e1c6 (patch)
treea0876eb192b15ff1a05e0560048f0306c1ccfd3b /include/linux/elfcore-compat.h
parentf2485a2dc9f0f30fbdd013ad5772975100c71360 (diff)
[amd64] clean PRSTATUS_SIZE/SET_PR_FPVALID up properly
To get rid of hardcoded size/offset in those macros we need to have a definition of i386 variant of struct elf_prstatus. However, we can't do that in asm/compat.h - the types needed for that are not there and adding an include of asm/user32.h into asm/compat.h would cause a lot of mess. That could be conveniently done in elfcore-compat.h, but currently there is nowhere to put arch-dependent parts of it - no asm/elfcore-compat.h. So we introduce a new file (asm/elfcore-compat.h, present on architectures that have CONFIG_ARCH_HAS_ELFCORE_COMPAT set, currently only on x86), have it pulled by linux/elfcore-compat.h and move the definitions there. As a side benefit, we don't need to worry about accidental inclusion of that file into binfmt_elf.c itself, so we don't need the dance with COMPAT_PRSTATUS_SIZE, etc. - only fs/compat_binfmt_elf.c will see that header. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'include/linux/elfcore-compat.h')
-rw-r--r--include/linux/elfcore-compat.h18
1 files changed, 11 insertions, 7 deletions
diff --git a/include/linux/elfcore-compat.h b/include/linux/elfcore-compat.h
index 4aeda5f1f038..e272c3d452ce 100644
--- a/include/linux/elfcore-compat.h
+++ b/include/linux/elfcore-compat.h
@@ -33,13 +33,6 @@ struct compat_elf_prstatus_common
struct old_timeval32 pr_cstime;
};
-struct compat_elf_prstatus
-{
- struct compat_elf_prstatus_common common;
- compat_elf_gregset_t pr_reg;
- compat_int_t pr_fpvalid;
-};
-
struct compat_elf_prpsinfo
{
char pr_state;
@@ -54,4 +47,15 @@ struct compat_elf_prpsinfo
char pr_psargs[ELF_PRARGSZ];
};
+#ifdef CONFIG_ARCH_HAS_ELFCORE_COMPAT
+#include <asm/elfcore-compat.h>
+#endif
+
+struct compat_elf_prstatus
+{
+ struct compat_elf_prstatus_common common;
+ compat_elf_gregset_t pr_reg;
+ compat_int_t pr_fpvalid;
+};
+
#endif /* _LINUX_ELFCORE_COMPAT_H */