mirror of
https://github.com/yuzu-emu/unicorn.git
synced 2025-01-03 20:35:43 +00:00
Merge pull request #661 from lowlyw/ruby_binding_fix
fix signedness issue with reg read/write in ruby bindings
This commit is contained in:
commit
d46911d301
|
@ -73,11 +73,11 @@ VALUE m_uc_emu_start(int argc, VALUE* argv, VALUE self){
|
||||||
Data_Get_Struct(rb_iv_get(self,"@uch"), uc_engine, _uc);
|
Data_Get_Struct(rb_iv_get(self,"@uch"), uc_engine, _uc);
|
||||||
|
|
||||||
rb_scan_args(argc, argv, "22",&begin, &until, &timeout, &count);
|
rb_scan_args(argc, argv, "22",&begin, &until, &timeout, &count);
|
||||||
if (NIL_P(timeout))
|
if (NIL_P(timeout))
|
||||||
timeout = INT2NUM(0);
|
timeout = INT2NUM(0);
|
||||||
|
|
||||||
if (NIL_P(count))
|
if (NIL_P(count))
|
||||||
count = INT2NUM(0);
|
count = INT2NUM(0);
|
||||||
|
|
||||||
err = uc_emu_start(_uc, NUM2ULL(begin), NUM2ULL(until), NUM2INT(timeout), NUM2INT(count));
|
err = uc_emu_start(_uc, NUM2ULL(begin), NUM2ULL(until), NUM2INT(timeout), NUM2INT(count));
|
||||||
if (err != UC_ERR_OK) {
|
if (err != UC_ERR_OK) {
|
||||||
|
@ -133,7 +133,7 @@ VALUE m_uc_reg_read(VALUE self, VALUE reg_id){
|
||||||
if (err != UC_ERR_OK) {
|
if (err != UC_ERR_OK) {
|
||||||
rb_raise(UcError, "%s", uc_strerror(err));
|
rb_raise(UcError, "%s", uc_strerror(err));
|
||||||
}
|
}
|
||||||
return LL2NUM(reg_value);
|
return ULL2NUM(reg_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -165,7 +165,7 @@ VALUE m_uc_reg_write(VALUE self, VALUE reg_id, VALUE reg_value){
|
||||||
err = uc_reg_write(_uc, NUM2INT(reg_id), &tmp);
|
err = uc_reg_write(_uc, NUM2INT(reg_id), &tmp);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (err != UC_ERR_OK) {
|
if (err != UC_ERR_OK) {
|
||||||
rb_raise(UcError, "%s", uc_strerror(err));
|
rb_raise(UcError, "%s", uc_strerror(err));
|
||||||
}
|
}
|
||||||
|
@ -205,8 +205,8 @@ VALUE m_uc_mem_map(int argc, VALUE* argv, VALUE self){
|
||||||
uc_engine *_uc;
|
uc_engine *_uc;
|
||||||
Data_Get_Struct(rb_iv_get(self,"@uch"), uc_engine, _uc);
|
Data_Get_Struct(rb_iv_get(self,"@uch"), uc_engine, _uc);
|
||||||
rb_scan_args(argc, argv, "21",&address, &size, &perms);
|
rb_scan_args(argc, argv, "21",&address, &size, &perms);
|
||||||
if (NIL_P(perms))
|
if (NIL_P(perms))
|
||||||
perms = INT2NUM(UC_PROT_ALL);
|
perms = INT2NUM(UC_PROT_ALL);
|
||||||
|
|
||||||
err = uc_mem_map(_uc, NUM2ULL(address), NUM2UINT(size), NUM2UINT(perms));
|
err = uc_mem_map(_uc, NUM2ULL(address), NUM2UINT(size), NUM2UINT(perms));
|
||||||
if (err != UC_ERR_OK) {
|
if (err != UC_ERR_OK) {
|
||||||
|
@ -332,14 +332,14 @@ VALUE m_uc_hook_add(int argc, VALUE* argv, VALUE self){
|
||||||
uc_engine *_uc;
|
uc_engine *_uc;
|
||||||
Data_Get_Struct(rb_iv_get(self,"@uch"), uc_engine, _uc);
|
Data_Get_Struct(rb_iv_get(self,"@uch"), uc_engine, _uc);
|
||||||
rb_scan_args(argc, argv, "24",&hook_type, &callback, &user_data, &begin, &end, &arg1);
|
rb_scan_args(argc, argv, "24",&hook_type, &callback, &user_data, &begin, &end, &arg1);
|
||||||
if (NIL_P(begin))
|
if (NIL_P(begin))
|
||||||
begin = ULL2NUM(1);
|
begin = ULL2NUM(1);
|
||||||
|
|
||||||
if (NIL_P(end))
|
if (NIL_P(end))
|
||||||
end = ULL2NUM(0);
|
end = ULL2NUM(0);
|
||||||
|
|
||||||
if (NIL_P(arg1))
|
if (NIL_P(arg1))
|
||||||
arg1 = INT2NUM(0);
|
arg1 = INT2NUM(0);
|
||||||
|
|
||||||
VALUE passthrough;
|
VALUE passthrough;
|
||||||
uc_hook trace;
|
uc_hook trace;
|
||||||
|
@ -374,12 +374,12 @@ VALUE m_uc_hook_add(int argc, VALUE* argv, VALUE self){
|
||||||
else if(htype == UC_HOOK_CODE || htype == UC_HOOK_BLOCK){
|
else if(htype == UC_HOOK_CODE || htype == UC_HOOK_BLOCK){
|
||||||
err = uc_hook_add(_uc, &trace, htype, cb_hook_code,(void *)passthrough, NUM2ULL(begin), NUM2ULL(end));
|
err = uc_hook_add(_uc, &trace, htype, cb_hook_code,(void *)passthrough, NUM2ULL(begin), NUM2ULL(end));
|
||||||
}
|
}
|
||||||
else if (htype & UC_HOOK_MEM_READ_UNMAPPED
|
else if (htype & UC_HOOK_MEM_READ_UNMAPPED
|
||||||
|| htype & UC_HOOK_MEM_WRITE_UNMAPPED
|
|| htype & UC_HOOK_MEM_WRITE_UNMAPPED
|
||||||
|| htype & UC_HOOK_MEM_FETCH_UNMAPPED
|
|| htype & UC_HOOK_MEM_FETCH_UNMAPPED
|
||||||
|| htype & UC_HOOK_MEM_READ_PROT
|
|| htype & UC_HOOK_MEM_READ_PROT
|
||||||
|| htype & UC_HOOK_MEM_WRITE_PROT
|
|| htype & UC_HOOK_MEM_WRITE_PROT
|
||||||
|| htype & UC_HOOK_MEM_FETCH_PROT
|
|| htype & UC_HOOK_MEM_FETCH_PROT
|
||||||
|| htype & UC_HOOK_MEM_READ_INVALID
|
|| htype & UC_HOOK_MEM_READ_INVALID
|
||||||
|| htype & UC_HOOK_MEM_WRITE_INVALID
|
|| htype & UC_HOOK_MEM_WRITE_INVALID
|
||||||
|| htype & UC_HOOK_MEM_FETCH_INVALID
|
|| htype & UC_HOOK_MEM_FETCH_INVALID
|
||||||
|
@ -387,7 +387,7 @@ VALUE m_uc_hook_add(int argc, VALUE* argv, VALUE self){
|
||||||
|| htype & UC_HOOK_MEM_PROT
|
|| htype & UC_HOOK_MEM_PROT
|
||||||
|| htype & UC_HOOK_MEM_INVALID) {
|
|| htype & UC_HOOK_MEM_INVALID) {
|
||||||
err = uc_hook_add(_uc, &trace, htype, cb_hook_mem_invalid,(void *)passthrough, NUM2ULL(begin), NUM2ULL(end));
|
err = uc_hook_add(_uc, &trace, htype, cb_hook_mem_invalid,(void *)passthrough, NUM2ULL(begin), NUM2ULL(end));
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
err = uc_hook_add(_uc, &trace, htype, cb_hook_mem_access,(void *)passthrough, NUM2ULL(begin), NUM2ULL(end));
|
err = uc_hook_add(_uc, &trace, htype, cb_hook_mem_access,(void *)passthrough, NUM2ULL(begin), NUM2ULL(end));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue