[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