infix
A JIT-Powered FFI Library for C
Loading...
Searching...
No Matches
emit.h
Go to the documentation of this file.
1
13#ifndef INFIX_EMIT_H
14#define INFIX_EMIT_H
15
16#include <infix/infix.h>
17#include <stdbool.h>
18#include <stdint.h>
19
20#ifdef __cplusplus
21extern "C" {
22#endif
23
24#if defined(_WIN32) || defined(__CYGWIN__)
25#define INFIX_EMIT_API __declspec(dllexport)
26#else
27#define INFIX_EMIT_API __attribute__((visibility("default")))
28#endif
29
34
40
47
53
59
61
64
67
69 const char * name,
70 emit_visibility_t visibility,
71 bool is_function);
74
79
80INFIX_EMIT_API infix_status emit_get_binary(const emit_context_t * ctx, const uint8_t ** out_data, size_t * out_size);
81INFIX_EMIT_API infix_status emit_get_offset(const emit_context_t * ctx, uint64_t * out_offset);
82
83INFIX_EMIT_API infix_status emit_align(emit_context_t * ctx, uint64_t alignment);
84
85#ifdef __cplusplus
86}
87#endif
88
89#endif /* INFIX_EMIT_H */
INFIX_EMIT_API void emit_destroy(emit_context_t *ctx)
Definition emit.c:127
INFIX_EMIT_API infix_status emit_create(emit_context_t **out_ctx, emit_architecture_t arch, emit_format_t format)
Definition emit.c:110
INFIX_EMIT_API infix_status emit_create_label(emit_context_t *ctx, const char *name)
Definition emit.c:236
emit_section_flags_t
Definition emit.h:41
@ EMIT_SECTION_FLAG_ALLOC
Definition emit.h:43
@ EMIT_SECTION_FLAG_EXECUTE
Definition emit.h:45
@ EMIT_SECTION_FLAG_WRITE
Definition emit.h:44
@ EMIT_SECTION_FLAG_NONE
Definition emit.h:42
INFIX_EMIT_API infix_status emit_get_offset(const emit_context_t *ctx, uint64_t *out_offset)
Definition emit.c:518
INFIX_EMIT_API infix_status emit_emit_label(emit_context_t *ctx, const char *name)
Definition emit.c:205
INFIX_EMIT_API infix_status emit_emit_u8(emit_context_t *ctx, uint8_t value)
Definition emit.c:282
emit_architecture_t
Definition emit.h:30
@ EMIT_ARCH_X86_64
Definition emit.h:31
@ EMIT_ARCH_AARCH64
Definition emit.h:32
INFIX_EMIT_API infix_status emit_begin_section(emit_context_t *ctx, const char *name)
Definition emit.c:156
INFIX_EMIT_API infix_status emit_emit_u16(emit_context_t *ctx, uint16_t value)
Definition emit.c:286
emit_format_t
Definition emit.h:35
@ EMIT_FORMAT_BINARY
Definition emit.h:36
@ EMIT_FORMAT_PE
Definition emit.h:38
@ EMIT_FORMAT_ELF
Definition emit.h:37
INFIX_EMIT_API infix_status emit_define_symbol(emit_context_t *ctx, const char *name, emit_visibility_t visibility, bool is_function)
Definition emit.c:174
#define INFIX_EMIT_API
Definition emit.h:27
emit_state_t
Definition emit.h:54
@ EMIT_STATE_SECTION_INACTIVE
Definition emit.h:57
@ EMIT_STATE_IDLE
Definition emit.h:55
@ EMIT_STATE_SECTION_ACTIVE
Definition emit.h:56
INFIX_EMIT_API infix_status emit_emit_u64(emit_context_t *ctx, uint64_t value)
Definition emit.c:299
INFIX_EMIT_API infix_status emit_align(emit_context_t *ctx, uint64_t alignment)
Definition emit.c:311
INFIX_EMIT_API infix_status emit_emit_u32(emit_context_t *ctx, uint32_t value)
Definition emit.c:291
INFIX_EMIT_API infix_status emit_add_section(emit_context_t *ctx, const char *name, emit_section_flags_t flags)
Definition emit.c:132
emit_visibility_t
Definition emit.h:48
@ EMIT_VISIBILITY_DEFAULT
Definition emit.h:49
@ EMIT_VISIBILITY_HIDDEN
Definition emit.h:50
@ EMIT_VISIBILITY_PROTECTED
Definition emit.h:51
INFIX_EMIT_API infix_status emit_get_binary(const emit_context_t *ctx, const uint8_t **out_data, size_t *out_size)
Definition emit.c:492
infix_status
Enumerates the possible status codes returned by infix API functions.
Definition infix.h:435
The public interface for the infix FFI library.
Definition emit_internals.h:50
emit_format_t format
Definition emit_internals.h:52
emit_architecture_t arch
Definition emit_internals.h:51