diff options
Diffstat (limited to 'kjarna_runtime')
| -rw-r--r-- | kjarna_runtime/Makefile | 2 | ||||
| -rw-r--r-- | kjarna_runtime/main.c (renamed from kjarna_runtime/kc_main.c) | 0 | ||||
| -rw-r--r-- | kjarna_runtime/reloc_x86_64.c | 42 |
3 files changed, 1 insertions, 43 deletions
diff --git a/kjarna_runtime/Makefile b/kjarna_runtime/Makefile index 855f479..be3cd90 100644 --- a/kjarna_runtime/Makefile +++ b/kjarna_runtime/Makefile @@ -17,7 +17,7 @@ LDSCRIPT := kc.ld CRT_OBJS := start_x86_64.o dynamic_x86_64.o elf64.o LIB_OBJS := memcmp.o memcpy.o memmove.o memset.o string.o -APP_OBJS := kc_main.o +APP_OBJS := main.o OBJS := $(CRT_OBJS) $(LIB_OBJS) $(APP_OBJS) diff --git a/kjarna_runtime/kc_main.c b/kjarna_runtime/main.c index acfcdc1..acfcdc1 100644 --- a/kjarna_runtime/kc_main.c +++ b/kjarna_runtime/main.c diff --git a/kjarna_runtime/reloc_x86_64.c b/kjarna_runtime/reloc_x86_64.c deleted file mode 100644 index 63dc6e7..0000000 --- a/kjarna_runtime/reloc_x86_64.c +++ /dev/null @@ -1,42 +0,0 @@ -#include <kc.h> - -#define STARTCODE __attribute__((section(".text.start"))) - -STARTCODE -static void do_rela(void *base, Elf64_Rela *rela) -{ - union - { - Elf_Byte word8; - Elf64_Half word16; - Elf64_Word word32; - Elf64_Xword word64; - } - *fixup; - - switch (ELF64_R_TYPE(rela->r_info)) - { - case R_X86_64_JUMP_SLOT: - fixup = (void *)(rela->r_offset + (uintptr_t)base); - fixup->word64 += (uintptr_t)base; - break; - case R_X86_64_RELATIVE: - fixup = (void *)(rela->r_offset + (uintptr_t)base); - fixup->word64 = (rela->r_addend + (uintptr_t)base); - break; - default: - break; - } -} - -STARTCODE -void kc_reloc(void *base, Elf64_Rela *entries, size_t size, size_t entsize) -{ - // perform the actual relocation - - for (size_t i = 0; entries && (i < size / entsize); i++) - { - do_rela(base, &entries[i]); - } -} - |
