summaryrefslogtreecommitdiff
path: root/api/elf
diff options
context:
space:
mode:
authorAda Christine <adachristine18@gmail.com>2021-12-17 16:06:06 +0000
committerAda Christine <adachristine18@gmail.com>2021-12-17 16:06:06 +0000
commitd5f485a4f6801f58cbb2bc9d8e80c955c79ff044 (patch)
treee49757ff0b076fe9f0088de92e5691d362e769a0 /api/elf
parentec1233b4fcd61a8d1eccbf030cede36e9848e06c (diff)
R_AMD64_RELATIVE relocations implemented for EFI shim
Diffstat (limited to 'api/elf')
-rw-r--r--api/elf/elf64.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/api/elf/elf64.h b/api/elf/elf64.h
index 4473d15..d975c35 100644
--- a/api/elf/elf64.h
+++ b/api/elf/elf64.h
@@ -18,6 +18,9 @@ typedef struct Elf64_Shdr Elf64_Shdr;
typedef struct Elf64_Sym Elf64_Sym;
typedef struct Elf64_Dyn Elf64_Dyn;
+typedef struct Elf64_Rel Elf64_Rel;
+typedef struct Elf64_Rela Elf64_Rela;
+
#define EM_X86_64 62
struct Elf64_Ehdr
@@ -84,3 +87,22 @@ struct Elf64_Dyn
};
};
+#define ELF64_R_SYM(info) ((info)>>32)
+#define ELF64_R_TYPE(info) ((Elf64_Word)(info))
+#define ELF64_R_INFO(sym, type) (((Elf64_Xword)(sym)<<32)+(Elf64_Xword)(type))
+
+#define R_AMD64_RELATIVE 8
+
+struct Elf64_Rel
+{
+ Elf64_Addr r_offset;
+ Elf64_Xword r_info;
+};
+
+struct Elf64_Rela
+{
+ Elf64_Addr r_offset;
+ Elf64_Xword r_info;
+ Elf64_Sxword r_addend;
+};
+