fn Gen.new(m &ssa.Module) &Gen
fn Linker.new(macho &MachOObject) &Linker
fn MachOObject.new() &MachOObject
struct Gen {
mut:
m &ssa.Module = unsafe { nil }
macho &MachOObject = unsafe { nil }
stack_offsets []int
alloca_offsets []int
alloca_sizes []int
stack_size int
block_offsets []int
pending_jmps []PendingJmp
fn_offsets map[string]int
string_cache map[string]int
cur_func_ret_type ssa.TypeID
cur_func_sret_offset int
}
fn (Gen) write_and_link #
fn (mut g Gen) write_and_link(output string)
struct Linker {
macho &MachOObject
pub mut:
frameworks []string
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
dylibs []string
sym_to_dylib 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
sym_by_name map[string]int
}
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)