diff options
| author | Kimplul <kimi.h.kuparinen@gmail.com> | 2023-08-04 21:16:34 +0300 |
|---|---|---|
| committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2023-08-04 21:16:34 +0300 |
| commit | 09f8df9f7e1166be48cdd6b1caba0f6771dd753e (patch) | |
| tree | 1cad6a2b118825e19432e2acf4e65c45e975ab60 /src/copyjit.h | |
| parent | c671d6612be0fb28eea498246c39bb5032afa872 (diff) | |
| download | copyjit-09f8df9f7e1166be48cdd6b1caba0f6771dd753e.tar.gz copyjit-09f8df9f7e1166be48cdd6b1caba0f6771dd753e.zip | |
add simple patching mechanism
Diffstat (limited to 'src/copyjit.h')
| -rw-r--r-- | src/copyjit.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/copyjit.h b/src/copyjit.h index d752144..8170204 100644 --- a/src/copyjit.h +++ b/src/copyjit.h @@ -3,12 +3,21 @@ #ifndef HMMJIT_H #define HMMJIT_H +#include <stdint.h> + typedef struct { char *pc; char *buf; size_t size; } ctx_t; +typedef struct { + void *addr; + uintptr_t *imm; +} reloc_t; + +typedef void *(*compile_callback_t)(ctx_t *, unsigned long); + #include "../lib/op_decls.h" #include "../lib/imm_decls.h" @@ -30,6 +39,9 @@ void *compile_sly(ctx_t *ctx, unsigned long i); /** @todo add in placeholders (for example for load immediate but we don't know * what the immediate is yet) */ +reloc_t compile_placeholder(ctx_t *ctx, compile_callback_t call); +void compile_patch(reloc_t reloc, void *addr); + void compile_start(ctx_t *ctx); void compile_finish(ctx_t *ctx); unsigned long run(ctx_t *ctx); |
