示例#1
0
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()
示例#2
0
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()
示例#3
0
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()