From e303a03e7c96bc5bf7fa93f7b46ce63196893d7a Mon Sep 17 00:00:00 2001 From: Ada Christine Date: Sun, 19 Dec 2021 22:41:15 +0000 Subject: moving files around --- lib/component.ld | 75 ------------------------------------------------------ lib/entry_x86_64.S | 18 ------------- lib/reloc_x86_64.c | 69 ------------------------------------------------- 3 files changed, 162 deletions(-) delete mode 100644 lib/component.ld delete mode 100644 lib/entry_x86_64.S delete mode 100644 lib/reloc_x86_64.c (limited to 'lib') diff --git a/lib/component.ld b/lib/component.ld deleted file mode 100644 index 3a48ae8..0000000 --- a/lib/component.ld +++ /dev/null @@ -1,75 +0,0 @@ -ENTRY(kc_entry) - -SECTIONS -{ - PROVIDE(kc_image_base = .); - - . = sizeof_headers; - - .rel : - { - *(.rel) - *(.rel.*) - } - - .rela : - { - *(.rel) - *(.rela.*) - } - - .hash : - { - *(.hash) - } - - .dynsym : - { - *(.dynsym) - } - - .dynstr : - { - *(.dynstr) - } - - .text : ALIGN(4K) - { - PROVIDE(kc_text_begin = .); - *(.text.start) - *(.text) - . = ALIGN(4K); - PROVIDE(kc_text_end = .); - } =0xcc - - .dynamic : ALIGN(4K) - { - *(.dynamic) - } - - .data : - { - PROVIDE(kc_data_begin = .); - *(.rodata) - *(.data) - } - - .data.rel : - { - *(.data.rel) - *(.data.rel.*) - } - - .bss : - { - *(.bss) - PROVIDE(kc_data_end = .); - } - - /DISCARD/ : - { - *(.eh_frame) - *(.comment) - } -} - diff --git a/lib/entry_x86_64.S b/lib/entry_x86_64.S deleted file mode 100644 index 231953a..0000000 --- a/lib/entry_x86_64.S +++ /dev/null @@ -1,18 +0,0 @@ -.section .text.start -.extern kc_reloc -.extern kc_main -.extern _DYNAMIC -.extern kc_image_base - -.global kc_entry -.type kc_entry, @function -kc_entry: - push %rdi - lea _DYNAMIC(%rip), %rdi - lea kc_image_base(%rip), %rsi - call kc_reloc - pop %rdi - call kc_main - ret -.size kc_entry, . - kc_entry - diff --git a/lib/reloc_x86_64.c b/lib/reloc_x86_64.c deleted file mode 100644 index 0204700..0000000 --- a/lib/reloc_x86_64.c +++ /dev/null @@ -1,69 +0,0 @@ -#include - -#include - -#include - -#define STARTCODE __attribute__((section(".text.start"))) - -STARTCODE -static void do_rela(Elf64_Rela *rela, void *base) -{ - union - { - Elf_Byte word8; - Elf64_Half word16; - Elf64_Word word32; - Elf64_Xword word64; - } - *fixup; - - switch (ELF64_R_TYPE(rela->r_info)) - { - case R_AMD64_RELATIVE: - fixup = (void *)(rela->r_offset + (uintptr_t)base); - fixup->word64 = (rela->r_addend + (uintptr_t)base); - break; - default: - break; - } -} - -STARTCODE -void kc_reloc(Elf64_Dyn *dyn, void *base) -{ - struct - { - Elf64_Rela *entries; - size_t *size; - size_t *entsize; - } - rela = {NULL, NULL, NULL}; - - // parse the dynamic segment - while (dyn && dyn++->d_tag != DT_NULL) - { - switch (dyn->d_tag) - { - case DT_RELA: - rela.entries = (Elf64_Rela *)(dyn->d_ptr + (uintptr_t)base); - break; - case DT_RELASZ: - rela.size = &dyn->d_val; - break; - case DT_RELAENT: - rela.entsize = &dyn->d_val; - break; - default: - break; - } - } - - // perform the actual relocation - - for (size_t i = 0; rela.entries && (i < *rela.size / *rela.entsize); i++) - { - do_rela(&rela.entries[i], base); - } -} - -- cgit v1.3.1-1-g115d