fn Gen.new(mod &mir.Module) &Gen
fn Linker.new(macho &MachOObject) &Linker
fn MachOObject.new() &MachOObject
struct Gen {
mod &mir.Module
mut:
macho &MachOObject
pub mut:
stack_map map[int]int
alloca_offsets map[int]int
stack_size int
curr_offset int
block_offsets map[int]int
pending_labels map[int][]int
reg_map map[int]int
used_regs []int
next_blk int
string_literal_offsets map[int]int
const_cache map[int]i64
cur_func_ret_type int
cur_func_name string
x8_save_offset int
}
fn (mut g Gen) write_file(path string)
fn (Gen) link_executable #
fn (mut g Gen) link_executable(output_path string)
struct Linker {
macho &MachOObject
mut:
buf []u8
text_vmaddr u64
text_fileoff int
text_size int
data_vmaddr u64
data_fileoff int
data_size int
linkedit_off int
linkedit_size int
extern_syms []string
got_offset int
got_size int
stubs_offset int
stubs_size int
sym_to_got map[string]int
code_start int
}
fn (mut l Linker) link(output_path string, entry_name string)
struct MachOObject {
pub mut:
text_data []u8
str_data []u8
data_data []u8
relocs []RelocationInfo
symbols []Symbol
str_table []u8
}
fn (MachOObject) add_symbol #
fn (mut m MachOObject) add_symbol(name string, addr u64, is_ext bool, sect u8) int
fn (MachOObject) add_undefined #
fn (mut m MachOObject) add_undefined(name string) int
fn (MachOObject) add_reloc #
fn (mut m MachOObject) add_reloc(addr int, sym_idx int, typ int, pcrel bool)
fn (mut m MachOObject) write(path string)