def libnative_libfuncs_add_library_test(): machine = Machine() mem = machine.get_mem() alloc = MemoryAlloc.for_machine(machine) # setup exec lib exec_lib = ExecLibrary.alloc(alloc, "exec.library", "bla", 36) exec_lib.setup() mem.w32(4, exec_lib.get_addr()) # new lib lib = Library.alloc(alloc, "my.library", "bla", 36) lib.setup() mem.w32(lib.get_addr()-36, 0xdeadbeef) # check lib sum assert lib.sum == 0 # add lib lf = LibFuncs(machine, alloc) lf.add_library(lib.get_addr()) # check that lib was added assert len(exec_lib.lib_list) == 1 assert [a for a in exec_lib.lib_list] == [lib] assert lib.sum == 0xdeadbeef assert lf.find_library("my.library") == lib.get_addr() # cleanup lib.free() exec_lib.free() assert alloc.is_all_free()
def libnative_libfuncs_add_library_test(): machine = Machine() mem = machine.get_mem() alloc = MemoryAlloc.for_machine(machine) # setup exec lib exec_lib = ExecLibrary.alloc(alloc, name="exec.library", id_string="bla", neg_size=36) assert exec_lib.LibNode.neg_size.val == 36 assert exec_lib.LibNode.pos_size.val == ExecLibrary.get_size() exec_lib.new_lib() mem.w32(4, exec_lib.get_addr()) # new lib lib = Library.alloc(alloc, name="my.library", id_string="bla", neg_size=36) assert lib.neg_size.val == 36 lib.new_lib() mem.w32(lib.get_addr() - 36, 0xDEADBEEF) # check initial lib sum assert lib.sum.val == 0 assert lib.calc_sum() == 0xDEADBEEF # add lib lf = LibFuncs(machine, alloc) lf.add_library(lib.addr) # check that lib was added assert len(exec_lib.lib_list) == 1 libs = [a for a in exec_lib.lib_list] assert list(map(lambda x: x.addr, libs)) == [lib.addr] # check that libsum was calced assert lib.sum.val == 0xDEADBEEF assert lf.find_library("my.library") == lib.addr # cleanup lib.free() exec_lib.free() assert alloc.is_all_free()
def libnative_libfuncs_add_library_test(): machine = Machine() mem = machine.get_mem() alloc = MemoryAlloc.for_machine(machine) # setup exec lib exec_lib = ExecLibrary.alloc(alloc, "exec.library", "bla", 36) exec_lib.setup() mem.w32(4, exec_lib.get_addr()) # new lib lib = Library.alloc(alloc, "my.library", "bla", 36) lib.setup() mem.w32(lib.get_addr() - 36, 0xDEADBEEF) # check lib sum assert lib.sum == 0 # add lib lf = LibFuncs(machine, alloc) lf.add_library(lib.get_addr()) # check that lib was added assert len(exec_lib.lib_list) == 1 assert [a for a in exec_lib.lib_list] == [lib] assert lib.sum == 0xDEADBEEF assert lf.find_library("my.library") == lib.get_addr() # cleanup lib.free() exec_lib.free() assert alloc.is_all_free()