mirror of
https://github.com/Cxbx-Reloaded/unicorn.git
synced 2024-11-30 14:50:28 +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);
|
||||
|
||||
rb_scan_args(argc, argv, "22",&begin, &until, &timeout, &count);
|
||||
if (NIL_P(timeout))
|
||||
timeout = INT2NUM(0);
|
||||
if (NIL_P(timeout))
|
||||
timeout = INT2NUM(0);
|
||||
|
||||
if (NIL_P(count))
|
||||
count = INT2NUM(0);
|
||||
if (NIL_P(count))
|
||||
count = INT2NUM(0);
|
||||
|
||||
err = uc_emu_start(_uc, NUM2ULL(begin), NUM2ULL(until), NUM2INT(timeout), NUM2INT(count));
|
||||
if (err != UC_ERR_OK) {
|
||||
@ -133,7 +133,7 @@ VALUE m_uc_reg_read(VALUE self, VALUE reg_id){
|
||||
if (err != UC_ERR_OK) {
|
||||
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);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if (err != UC_ERR_OK) {
|
||||
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;
|
||||
Data_Get_Struct(rb_iv_get(self,"@uch"), uc_engine, _uc);
|
||||
rb_scan_args(argc, argv, "21",&address, &size, &perms);
|
||||
if (NIL_P(perms))
|
||||
perms = INT2NUM(UC_PROT_ALL);
|
||||
if (NIL_P(perms))
|
||||
perms = INT2NUM(UC_PROT_ALL);
|
||||
|
||||
err = uc_mem_map(_uc, NUM2ULL(address), NUM2UINT(size), NUM2UINT(perms));
|
||||
if (err != UC_ERR_OK) {
|
||||
@ -332,14 +332,14 @@ VALUE m_uc_hook_add(int argc, VALUE* argv, VALUE self){
|
||||
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);
|
||||
if (NIL_P(begin))
|
||||
begin = ULL2NUM(1);
|
||||
if (NIL_P(begin))
|
||||
begin = ULL2NUM(1);
|
||||
|
||||
if (NIL_P(end))
|
||||
end = ULL2NUM(0);
|
||||
if (NIL_P(end))
|
||||
end = ULL2NUM(0);
|
||||
|
||||
if (NIL_P(arg1))
|
||||
arg1 = INT2NUM(0);
|
||||
if (NIL_P(arg1))
|
||||
arg1 = INT2NUM(0);
|
||||
|
||||
VALUE passthrough;
|
||||
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){
|
||||
err = uc_hook_add(_uc, &trace, htype, cb_hook_code,(void *)passthrough, NUM2ULL(begin), NUM2ULL(end));
|
||||
}
|
||||
else if (htype & UC_HOOK_MEM_READ_UNMAPPED
|
||||
|| htype & UC_HOOK_MEM_WRITE_UNMAPPED
|
||||
|| htype & UC_HOOK_MEM_FETCH_UNMAPPED
|
||||
|| htype & UC_HOOK_MEM_READ_PROT
|
||||
|| htype & UC_HOOK_MEM_WRITE_PROT
|
||||
|| htype & UC_HOOK_MEM_FETCH_PROT
|
||||
else if (htype & UC_HOOK_MEM_READ_UNMAPPED
|
||||
|| htype & UC_HOOK_MEM_WRITE_UNMAPPED
|
||||
|| htype & UC_HOOK_MEM_FETCH_UNMAPPED
|
||||
|| htype & UC_HOOK_MEM_READ_PROT
|
||||
|| htype & UC_HOOK_MEM_WRITE_PROT
|
||||
|| htype & UC_HOOK_MEM_FETCH_PROT
|
||||
|| htype & UC_HOOK_MEM_READ_INVALID
|
||||
|| htype & UC_HOOK_MEM_WRITE_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_INVALID) {
|
||||
err = uc_hook_add(_uc, &trace, htype, cb_hook_mem_invalid,(void *)passthrough, NUM2ULL(begin), NUM2ULL(end));
|
||||
}
|
||||
}
|
||||
else{
|
||||
err = uc_hook_add(_uc, &trace, htype, cb_hook_mem_access,(void *)passthrough, NUM2ULL(begin), NUM2ULL(end));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user