ELF: Add ELF program property parsing support
[linux-block.git] / include / linux / elf.h
index f7b24c5fcfb69672e112319f750d97029d56bf83..db5113479f5e9398bce2f1b135d765509c17fc20 100644 (file)
@@ -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 */