Skip to content
Snippets Groups Projects
Commit 5efa2813 authored by Simon Glass's avatar Simon Glass
Browse files

elf: Add a few definitions for 64-bit relocation


Provide the types necessary to relocate 64-bit images.

Signed-off-by: default avatarSimon Glass <sjg@chromium.org>
Reviewed-by: default avatarBin Meng <bmeng.cn@gmail.com>
parent 753812cb
No related branches found
No related tags found
Loading
...@@ -28,6 +28,16 @@ typedef int32_t Elf32_Sword; /* Signed large integer */ ...@@ -28,6 +28,16 @@ typedef int32_t Elf32_Sword; /* Signed large integer */
typedef uint32_t Elf32_Word; /* Unsigned large integer */ typedef uint32_t Elf32_Word; /* Unsigned large integer */
typedef uint16_t Elf32_Half; /* Unsigned medium integer */ typedef uint16_t Elf32_Half; /* Unsigned medium integer */
/* 64-bit ELF base types. */
typedef uint64_t Elf64_Addr;
typedef uint16_t Elf64_Half;
typedef int16_t Elf64_SHalf;
typedef uint64_t Elf64_Off;
typedef int32_t Elf64_Sword;
typedef uint32_t Elf64_Word;
typedef uint64_t Elf64_Xword;
typedef int64_t Elf64_Sxword;
/* e_ident[] identification indexes */ /* e_ident[] identification indexes */
#define EI_MAG0 0 /* file ID */ #define EI_MAG0 0 /* file ID */
#define EI_MAG1 1 /* file ID */ #define EI_MAG1 1 /* file ID */
...@@ -379,6 +389,11 @@ typedef struct ...@@ -379,6 +389,11 @@ typedef struct
Elf32_Sword r_addend; Elf32_Sword r_addend;
} Elf32_Rela; } Elf32_Rela;
typedef struct {
Elf64_Addr r_offset; /* Location at which to apply the action */
Elf64_Xword r_info; /* index and type of relocation */
} Elf64_Rel;
/* Extract relocation info - r_info */ /* Extract relocation info - r_info */
#define ELF32_R_SYM(i) ((i) >> 8) #define ELF32_R_SYM(i) ((i) >> 8)
#define ELF32_R_TYPE(i) ((unsigned char) (i)) #define ELF32_R_TYPE(i) ((unsigned char) (i))
...@@ -431,6 +446,17 @@ typedef struct ...@@ -431,6 +446,17 @@ typedef struct
extern Elf32_Dyn _DYNAMIC[]; 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 */ /* Dynamic Array Tags - d_tag */
#define DT_NULL 0 /* marks end of _DYNAMIC array */ #define DT_NULL 0 /* marks end of _DYNAMIC array */
#define DT_NEEDED 1 /* string table offset of needed lib */ #define DT_NEEDED 1 /* string table offset of needed lib */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment