|
@@ -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 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 */
|
|
|
#define EI_MAG0 0 /* file ID */
|
|
|
#define EI_MAG1 1 /* file ID */
|
|
@@ -379,6 +389,11 @@ typedef struct
|
|
|
Elf32_Sword r_addend;
|
|
|
} 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 */
|
|
|
#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 */
|