From d5f485a4f6801f58cbb2bc9d8e80c955c79ff044 Mon Sep 17 00:00:00 2001 From: Ada Christine Date: Fri, 17 Dec 2021 16:06:06 +0000 Subject: R_AMD64_RELATIVE relocations implemented for EFI shim --- api/elf/elf64.h | 22 ++++++++++++++++++++++ api/loader/efi/shim.h | 2 -- 2 files changed, 22 insertions(+), 2 deletions(-) (limited to 'api') 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; +}; + diff --git a/api/loader/efi/shim.h b/api/loader/efi/shim.h index 3486c34..9421cc3 100644 --- a/api/loader/efi/shim.h +++ b/api/loader/efi/shim.h @@ -13,8 +13,6 @@ #define OsVendorMemoryType(t) ((EFI_MEMORY_TYPE)(0x80000000|t)) #define SystemMemoryType OsVendorMemoryType(1) -struct efi_loader_image; - struct efi_loader_image { CHAR16 *path; -- cgit v1.3.1-1-g115d