summaryrefslogtreecommitdiff
path: root/kc/api/kc.h
blob: 2e3b43c979522111c58dc8bd1ac8da60609c4b42 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#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;
extern unsigned char kc_rodata_begin;
extern unsigned char kc_data_begin;
extern unsigned char kc_data_end;
extern unsigned char kc_image_end;

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__