hc
2023-12-08 01573e231f18eb2d99162747186f59511f56b64d
kernel/include/linux/elf.h
....@@ -2,6 +2,7 @@
22 #ifndef _LINUX_ELF_H
33 #define _LINUX_ELF_H
44
5
+#include <linux/types.h>
56 #include <asm/elf.h>
67 #include <uapi/linux/elf.h>
78
....@@ -21,6 +22,9 @@
2122 SET_PERSONALITY(ex)
2223 #endif
2324
25
+#define ELF32_GNU_PROPERTY_ALIGN 4
26
+#define ELF64_GNU_PROPERTY_ALIGN 8
27
+
2428 #if ELF_CLASS == ELFCLASS32
2529
2630 extern Elf32_Dyn _DYNAMIC [];
....@@ -31,6 +35,7 @@
3135 #define elf_addr_t Elf32_Off
3236 #define Elf_Half Elf32_Half
3337 #define Elf_Word Elf32_Word
38
+#define ELF_GNU_PROPERTY_ALIGN ELF32_GNU_PROPERTY_ALIGN
3439
3540 #else
3641
....@@ -42,6 +47,7 @@
4247 #define elf_addr_t Elf64_Off
4348 #define Elf_Half Elf64_Half
4449 #define Elf_Word Elf64_Word
50
+#define ELF_GNU_PROPERTY_ALIGN ELF64_GNU_PROPERTY_ALIGN
4551
4652 #endif
4753
....@@ -56,4 +62,41 @@
5662 extern int elf_coredump_extra_notes_size(void);
5763 extern int elf_coredump_extra_notes_write(struct coredump_params *cprm);
5864 #endif
65
+
66
+/*
67
+ * NT_GNU_PROPERTY_TYPE_0 header:
68
+ * Keep this internal until/unless there is an agreed UAPI definition.
69
+ * pr_type values (GNU_PROPERTY_*) are public and defined in the UAPI header.
70
+ */
71
+struct gnu_property {
72
+ u32 pr_type;
73
+ u32 pr_datasz;
74
+};
75
+
76
+struct arch_elf_state;
77
+
78
+#ifndef CONFIG_ARCH_USE_GNU_PROPERTY
79
+static inline int arch_parse_elf_property(u32 type, const void *data,
80
+ size_t datasz, bool compat,
81
+ struct arch_elf_state *arch)
82
+{
83
+ return 0;
84
+}
85
+#else
86
+extern int arch_parse_elf_property(u32 type, const void *data, size_t datasz,
87
+ bool compat, struct arch_elf_state *arch);
88
+#endif
89
+
90
+#ifdef CONFIG_ARCH_HAVE_ELF_PROT
91
+int arch_elf_adjust_prot(int prot, const struct arch_elf_state *state,
92
+ bool has_interp, bool is_interp);
93
+#else
94
+static inline int arch_elf_adjust_prot(int prot,
95
+ const struct arch_elf_state *state,
96
+ bool has_interp, bool is_interp)
97
+{
98
+ return prot;
99
+}
100
+#endif
101
+
59102 #endif /* _LINUX_ELF_H */