diff options
| author | Ada Christine <adachristine18@gmail.com> | 2022-03-15 16:29:24 +0000 |
|---|---|---|
| committer | Ada Christine <adachristine18@gmail.com> | 2022-03-15 16:29:24 +0000 |
| commit | ec4aee35de3446713c6754641cdad82adc011204 (patch) | |
| tree | fb40b7b153da4bbb47ec46b40144a18fbfbcf74b /kc/api | |
| parent | 97fcd7d1fc4574753d91e6767a8d8a7653a7f7fe (diff) | |
infrastructure for dynamic symbol resolution
Diffstat (limited to 'kc/api')
| -rw-r--r-- | kc/api/kc.h | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/kc/api/kc.h b/kc/api/kc.h index b4a6682..2e3b43c 100644 --- a/kc/api/kc.h +++ b/kc/api/kc.h @@ -1,5 +1,13 @@ #pragma once +#ifndef __ASSEMBLER__ + +#include <elf/elf64.h> + +#include <stddef.h> + +#define KC_EXPORT __attribute__((visibility("default"))) + extern unsigned char kc_image_base; extern unsigned char kc_text_begin; extern unsigned char kc_text_end; @@ -8,5 +16,28 @@ extern unsigned char kc_data_begin; extern unsigned char kc_data_end; extern unsigned char kc_image_end; -#define KC_EXPORT __attribute__((visibility("default"))) +extern void kc_dynamic_init(void *base, Elf64_Dyn *dyn); +extern void kc_reloc( + void *base, + Elf64_Rela *entries, + size_t size, + size_t entsize); + +extern void kc_resolve_symbol(void); + +#else + +.extern kc_image_base +.extern kc_text_begin +.extern kc_text_end +.extern kc_rodata_begin +.extern kc_rodata_end +.extern kc_data_begin +.extern kc_data_end +.extern kc_image_end +.extern _DYNAMIC + +.extern kc_dynamic_init + +#endif // __ASSEMBLER__ |
