func NewUnicorn(arch, mode int) (Unicorn, error) { major, minor := Version() if major != C.UC_API_MAJOR || minor != C.UC_API_MINOR { return nil, UcError(ERR_VERSION) } var handle *C.uc_engine if ucerr := C.uc_open(C.uc_arch(arch), C.uc_mode(mode), &handle); ucerr != ERR_OK { return nil, UcError(ucerr) } u := &uc{handle: handle} runtime.SetFinalizer(u, func(u *uc) { u.Close() }) return u, nil }
func NewUnicorn(arch, mode int) (Unicorn, error) { var major, minor C.uint C.uc_version(&major, &minor) if major != C.UC_API_MAJOR || minor != C.UC_API_MINOR { return nil, UcError(ERR_VERSION) } var handle *C.uc_engine if ucerr := C.uc_open(C.uc_arch(arch), C.uc_mode(mode), &handle); ucerr != ERR_OK { return nil, UcError(ucerr) } uc := &uc{handle} return uc, nil }