From ac0748de51fe4a1ff12b1ea8b9e16e52229d1a9f Mon Sep 17 00:00:00 2001 From: pancake Date: Thu, 26 May 2011 20:55:11 +0200 Subject: [PATCH] * Rewrite io_ptrace{read|write} to fix bugs on OpenBSD-amd64 debugger - New code is shorter, more readable and bugs-free * Added 'install' target for r2-bindings/gir --- libr/io/p/io_ptrace.c | 58 +++++++++++++++++----------------------- r2-bindings/gir/Makefile | 9 +++++-- r2-bindings/gir/test.js | 6 +++++ 3 files changed, 38 insertions(+), 35 deletions(-) create mode 100644 r2-bindings/gir/test.js diff --git a/libr/io/p/io_ptrace.c b/libr/io/p/io_ptrace.c index f822884e88..930abce59b 100644 --- a/libr/io/p/io_ptrace.c +++ b/libr/io/p/io_ptrace.c @@ -37,23 +37,17 @@ static int __waitpid(int pid) { #define debug_write_raw(x,y,z) ptrace(PTRACE_POKEDATA, x, y, z) #endif -static int debug_os_read_at(int pid, void *buf, int sz, ut64 addr) { - unsigned long words = sz / sizeof (long); - unsigned long last = sz % sizeof (long); - long x, lr, s = 0; - - if (sz<0 || addr==-1) - return -1; - for (x=0; xoff; memset (buf, '\xff', len); // TODO: only memset the non-readed bytes - return debug_os_read_at (RIOPTRACE_PID (fd), buf, len, addr); + return debug_os_read_at (RIOPTRACE_PID (fd), (ut32*)buf, len, addr); } -static int ptrace_write_at(int pid, const ut8 *buf, int sz, ut64 addr) { - long words = sz / sizeof(long); - long last = (sz - words*sizeof(long)) * 8; - long x, lr; - +static int ptrace_write_at(int pid, const ut32 *buf, int sz, ut64 addr) { + ut32 words = sz / sizeof (ut32); + ut32 last = sz % sizeof (ut32); + ut32 x, lr, *at = (int*)(size_t)addr; + if (sz<1 || addr==UT64_MAX) + return -1; for (x=0; xdata; //printf("ptrace io command (%s)\n", cmd); /* XXX ugly hack for testing purposes */ if (!strcmp (cmd, "mem")) { char b[128]; - int ret = debug_os_read_at (iop->pid, b, 128, 0x8048500); + int ret = debug_os_read_at (iop->pid, (ut32*)b, 128, 0x8048500); printf ("ret = %d , pid = %d\n", ret, iop->pid); printf ("%x %x %x %x\n", b[0], b[1], b[2], b[3]); } else diff --git a/r2-bindings/gir/Makefile b/r2-bindings/gir/Makefile index 1564fd54c8..b1b0a9a2f5 100644 --- a/r2-bindings/gir/Makefile +++ b/r2-bindings/gir/Makefile @@ -15,8 +15,13 @@ ifeq ($(HAVE_VALABIND),1) endif install: - cp r_asm.typelib /usr/lib/girepository-1.0/ - cp r_asm.gir /usr/share/gir-1.0/ + rm -f /usr/lib/girepository-1.0/RAsm-1.0.* + rm -f /usr/lib/girepository-1.0/r_asm-1.0.* + rm -f /usr/share/gir-1.0/RAsm-1.0.* + rm -f /usr/share/gir-1.0/r_asm-1.0.* + cp r_asm.typelib /usr/lib/girepository-1.0/r_asm-1.0.typelib + cp r_asm.gir /usr/share/gir-1.0/r_asm-1.0.gir + gjs test.js clean: @rm -f *.gir *.typelib diff --git a/r2-bindings/gir/test.js b/r2-bindings/gir/test.js new file mode 100644 index 0000000000..cefe587b40 --- /dev/null +++ b/r2-bindings/gir/test.js @@ -0,0 +1,6 @@ +/* This is not working */ +const r = imports.gi.r_asm.Radare; +var b = new r.RAsm (); +for (var a in r) { + print (a); +}