[U-Boot] [PATCH 04/48] elf: Add a few definitions for 64-bit relocation
Simon Glass
sjg at chromium.org
Wed Jul 22 17:48:56 CEST 2015
Provide the types necessary to relocate 64-bit images.
Signed-off-by: Simon Glass <sjg at chromium.org>
---
include/elf.h | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/include/elf.h b/include/elf.h
index 63d9341..1936ef6 100644
--- a/include/elf.h
+++ b/include/elf.h
@@ -28,6 +28,16 @@ typedef int32_t Elf32_Sword; /* Signed large integer */
typedef uint32_t Elf32_Word; /* Unsigned large integer */
typedef uint16_t Elf32_Half; /* Unsigned medium integer */
+/* 64-bit ELF base types. */
+typedef __u64 Elf64_Addr;
+typedef __u16 Elf64_Half;
+typedef __s16 Elf64_SHalf;
+typedef __u64 Elf64_Off;
+typedef __s32 Elf64_Sword;
+typedef __u32 Elf64_Word;
+typedef __u64 Elf64_Xword;
+typedef __s64 Elf64_Sxword;
+
/* e_ident[] identification indexes */
#define EI_MAG0 0 /* file ID */
#define EI_MAG1 1 /* file ID */
@@ -379,6 +389,11 @@ typedef struct
Elf32_Sword r_addend;
} Elf32_Rela;
+struct elf64_rel {
+ Elf64_Addr r_offset; /* Location at which to apply the action */
+ Elf64_Xword r_info; /* index and type of relocation */
+};
+
/* Extract relocation info - r_info */
#define ELF32_R_SYM(i) ((i) >> 8)
#define ELF32_R_TYPE(i) ((unsigned char) (i))
@@ -431,6 +446,17 @@ typedef struct
extern Elf32_Dyn _DYNAMIC[];
+typedef struct {
+ Elf64_Sxword d_tag; /* entry tag value */
+ union {
+ Elf64_Xword d_val;
+ Elf64_Addr d_ptr;
+ } d_un;
+} Elf64_Dyn;
+
+#define ELF64_R_SYM(i) ((i) >> 32)
+#define ELF64_R_TYPE(i) ((i) & 0xffffffff)
+
/* Dynamic Array Tags - d_tag */
#define DT_NULL 0 /* marks end of _DYNAMIC array */
#define DT_NEEDED 1 /* string table offset of needed lib */
--
2.4.3.573.g4eafbef
More information about the U-Boot
mailing list