ELF: Add ELF program property parsing support
ELF program properties will be needed for detecting whether to enable optional architecture or ABI features for a new ELF process. For now, there are no generic properties that we care about, so do nothing unless CONFIG_ARCH_USE_GNU_PROPERTY=y. Otherwise, the presence of properties using the PT_PROGRAM_PROPERTY phdrs entry (if any), and notify each property to the arch code. For now, the added code is not used. Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Dave Martin <Dave.Martin@arm.com> Reviewed-by: Kees Cook <keescook@chromium.org> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
This commit is contained in:

committed by
Catalin Marinas

parent
db751e309f
commit
00e19ceec8
@@ -22,6 +22,9 @@
|
||||
SET_PERSONALITY(ex)
|
||||
#endif
|
||||
|
||||
#define ELF32_GNU_PROPERTY_ALIGN 4
|
||||
#define ELF64_GNU_PROPERTY_ALIGN 8
|
||||
|
||||
#if ELF_CLASS == ELFCLASS32
|
||||
|
||||
extern Elf32_Dyn _DYNAMIC [];
|
||||
@@ -32,6 +35,7 @@ extern Elf32_Dyn _DYNAMIC [];
|
||||
#define elf_addr_t Elf32_Off
|
||||
#define Elf_Half Elf32_Half
|
||||
#define Elf_Word Elf32_Word
|
||||
#define ELF_GNU_PROPERTY_ALIGN ELF32_GNU_PROPERTY_ALIGN
|
||||
|
||||
#else
|
||||
|
||||
@@ -43,6 +47,7 @@ extern Elf64_Dyn _DYNAMIC [];
|
||||
#define elf_addr_t Elf64_Off
|
||||
#define Elf_Half Elf64_Half
|
||||
#define Elf_Word Elf64_Word
|
||||
#define ELF_GNU_PROPERTY_ALIGN ELF64_GNU_PROPERTY_ALIGN
|
||||
|
||||
#endif
|
||||
|
||||
@@ -68,4 +73,18 @@ struct gnu_property {
|
||||
u32 pr_datasz;
|
||||
};
|
||||
|
||||
struct arch_elf_state;
|
||||
|
||||
#ifndef CONFIG_ARCH_USE_GNU_PROPERTY
|
||||
static inline int arch_parse_elf_property(u32 type, const void *data,
|
||||
size_t datasz, bool compat,
|
||||
struct arch_elf_state *arch)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
extern int arch_parse_elf_property(u32 type, const void *data, size_t datasz,
|
||||
bool compat, struct arch_elf_state *arch);
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_ELF_H */
|
||||
|
Reference in New Issue
Block a user