* Added r_parse and r_print pkgconfig and vapis

* Fix all compilation problems of swig/
  - Many new APIs are now exposed to the bindings
This commit is contained in:
pancake 2010-10-28 02:51:01 +02:00
parent e0127a3b4f
commit 7767f79b35
26 changed files with 120 additions and 140 deletions

2
configure vendored
View File

@ -379,7 +379,7 @@ for A in ${ENVWORDS} ; do
SEDFLAGS="${SEDFLAGS}s,@${A}@,${VAR},g;"
done
SEDFLAGS="${SEDFLAGS}'"
for A in ./config-user.mk libr/include/r_userconf.h pkgcfg/libr.pc pkgcfg/r_io.pc pkgcfg/r_asm.pc pkgcfg/r_bin.pc pkgcfg/r_anal.pc pkgcfg/r_hash.pc pkgcfg/r_cons.pc pkgcfg/r_diff.pc pkgcfg/r_core.pc pkgcfg/r_lang.pc pkgcfg/r_socket.pc pkgcfg/r_debug.pc pkgcfg/r_reg.pc pkgcfg/r_cmd.pc pkgcfg/r_config.pc pkgcfg/r_flags.pc pkgcfg/r_line.pc pkgcfg/r_syscall.pc pkgcfg/r_sign.pc pkgcfg/r_util.pc pkgcfg/r_search.pc pkgcfg/r_vm.pc pkgcfg/r_th.pc pkgcfg/r_bp.pc pkgcfg/r_db.pc pkgcfg/r_lib.pc ; do # SUBDIRS
for A in ./config-user.mk libr/include/r_userconf.h pkgcfg/libr.pc pkgcfg/r_io.pc pkgcfg/r_asm.pc pkgcfg/r_bin.pc pkgcfg/r_anal.pc pkgcfg/r_hash.pc pkgcfg/r_cons.pc pkgcfg/r_diff.pc pkgcfg/r_core.pc pkgcfg/r_lang.pc pkgcfg/r_socket.pc pkgcfg/r_debug.pc pkgcfg/r_reg.pc pkgcfg/r_cmd.pc pkgcfg/r_config.pc pkgcfg/r_flags.pc pkgcfg/r_line.pc pkgcfg/r_syscall.pc pkgcfg/r_sign.pc pkgcfg/r_util.pc pkgcfg/r_search.pc pkgcfg/r_vm.pc pkgcfg/r_th.pc pkgcfg/r_bp.pc pkgcfg/r_db.pc pkgcfg/r_lib.pc pkgcfg/r_parse.pc pkgcfg/r_print.pc ; do # SUBDIRS
if [ -f "${VPATH}/${A}.acr" ]; then
SD_TARGET=${A}
else

View File

@ -81,4 +81,6 @@ SUBDIRS ./config-user.mk libr/include/r_userconf.h
pkgcfg/r_bp.pc
pkgcfg/r_db.pc
pkgcfg/r_lib.pc
pkgcfg/r_parse.pc
pkgcfg/r_print.pc
;

View File

@ -258,6 +258,7 @@ R_API int r_io_desc_add(RIO *io, int fd, const char *file, int flags, struct r_i
R_API int r_io_desc_del(RIO *io, int fd);
R_API struct r_io_desc_t *r_io_desc_get(RIO *io, int fd);
R_API int r_io_desc_generate(RIO *io);
R_API void r_io_desc_free(RIO* io) { free (io); } // XXX
/* plugins */

View File

@ -21,14 +21,14 @@ typedef struct r_parse_plugin_t {
char *desc;
int (*init)(void *user);
int (*fini)(void *user);
int (*parse)(RParse *p, void *data, char *str);
int (*assemble)(RParse *p, char *data, char *str);
int (*parse)(struct r_parse_t *p, void *data, char *str);
int (*assemble)(struct r_parse_t *p, char *data, char *str);
int (*filter)(RParse *p, struct r_flag_t *f, char *data, char *str, int len);
struct list_head list;
} RParsePlugin;
/* parse.c */
R_API RParse *r_parse_new();
#ifdef R_API
R_API struct r_parse_t *r_parse_new();
R_API void r_parse_free(RParse *p);
R_API void r_parse_set_user_ptr(RParse *p, void *user);
R_API int r_parse_add(RParse *p, struct r_parse_plugin_t *foo);
@ -42,5 +42,6 @@ R_API int r_parse_filter(RParse *p, RFlag *f, char *data, char *str, int len);
extern struct r_parse_plugin_t r_parse_plugin_dummy;
extern struct r_parse_plugin_t r_parse_plugin_x86_pseudo;
extern struct r_parse_plugin_t r_parse_plugin_mreplace;
#endif
#endif

View File

@ -39,7 +39,7 @@ R_API void r_print_hexdump(RPrint *p, ut64 addr, const ut8 *buf, int len, int ba
R_API void r_print_hexpairs(RPrint *p, ut64 addr, const ut8 *buf, int len);
R_API void r_print_bytes(RPrint *p, const ut8* buf, int len, const char *fmt);
R_API void r_print_byte(RPrint *p, const char *fmt, int idx, ut8 ch);
R_API void r_print_c(RPrint *p, const char *str, int len);
R_API void r_print_c(RPrint *p, const ut8 *str, int len);
R_API void r_print_raw(RPrint *p, const ut8* buf, int len);
R_API void r_print_cursor(RPrint *p, int cur, int set);
R_API void r_print_set_cursor(RPrint *p, int curset, int ocursor, int cursor);

View File

@ -264,9 +264,9 @@ R_API void r_print_raw(RPrint *p, const ut8* buf, int len) {
r_cons_memcat ((char *)buf, len);
}
R_API void r_print_c(RPrint *p, const char *str, int len) {
R_API void r_print_c(RPrint *p, const ut8 *str, int len) {
int i,j;
int inc= p->width/6;
int inc = p->width/6;
p->printf ("#define _BUFFER_SIZE %d\n"
"unsigned char buffer[_BUFFER_SIZE] = {\n", len);
p->interrupt = 0;

View File

@ -5,7 +5,7 @@ includedir=${prefix}/include
Name: r_parse
Description: radare foundation libraries
Version: 0.2
Version:
Requires:
Libs: -L${libdir} -lr_parse -lr_lib
Libs: -L${libdir} -lr_parse -lr_flags
Cflags: -I${includedir}/libr

View File

@ -2,6 +2,7 @@ include ../config.mk
LIBS=r_util.so r_bp.so r_asm.so r_diff.so r_core.so r_bin.so r_cons.so r_anal.so r_cmd.so
LIBS+=r_debug.so r_config.so r_io.so r_syscall.so r_search.so r_lib.so libr.so r_flags.so
LIBS+=r_parse.so
.SUFFIXES: .so

View File

@ -20,8 +20,15 @@ public class RAnal {
//public bool set_pc (uint64 addr);
public RList<RAnal.Block> fcn_bb_list(Fcn fun);
[Compact]
[CCode (cname="RAnalCond")]
public class Cond {
int type;
RAnal.Value arg[2];
}
[CCode (cprefix="R_ANAL_COND_")]
public enum Cond {
public enum Cnd {
EQ,
NE,
GE,
@ -101,7 +108,7 @@ public class RAnal {
[CCode (cprefix="R_ANAL_VAR_DIR_")]
public enum VarDir {
NONE
NONE,
IN,
OUT
}

View File

@ -28,7 +28,7 @@ public class RAsm {
}
[CCode (cprefix="R_ASM_MOD_", cname="int")]
public enum Syntax {
public enum Mod {
RAWVALUE,
VALUE,
DSTREG,

View File

@ -4,8 +4,8 @@
[CCode (cheader_filename="r_bp.h,r_types_base.h,r_list.h", cname="struct r_bp_t", free_function="r_bp_free", cprefix="r_bp_")]
public class Radare.RBreakpoint {
public RBreakpoint ();
public RList<Item> bps;
public RList<Trace> traces;
public RList<RBreakpoint.Item> bps;
public RList<RBreakpoint.Trace> traces;
public bool use (string arch);
public void enable (uint64 addr, bool enabled);
public unowned Item? at_addr (uint64 addr, int rwx);
@ -16,7 +16,7 @@ public class Radare.RBreakpoint {
public bool del (uint64 addr);
public bool del_cond (int idx);
public int get_bytes(out uint8 *buf, int len, bool bigendian, int idx);
//public int get_bytes(out uint8 *buf, int len, bool bigendian, int idx);
public int set_trace (uint64 addr, int set);
public int restore (bool set);
@ -30,10 +30,9 @@ public class Radare.RBreakpoint {
public uint64 traptrace_next (uint64 addr);
public int traptrace_add (uint64 from, uint64 to);
public int traptrace_free_at (uint64 from);
public void traptrace_list (uint64 from);
public void traptrace_list ();
public int traptrace_at (uint64 from, int len);
// XXX public void traptrace_new ();
public void traptrace_enable (bool enable);
[CCode (cprefix="R_BP_PROT_")]
public enum Protection {

View File

@ -8,7 +8,7 @@ namespace Radare {
public int last_notfound;
public int n_nodes;
public void @lock (bool enable);
//public void @lock (bool enable);
public int eval(string str);
public unowned string get(string name);

View File

@ -63,10 +63,10 @@ namespace Radare {
public static int html_print (string ptr);
public static int arrow_to_hjkl (int ch);
public static string get_buffer ();
public static weak string get_buffer ();
public static void grep (string str);
public static int grep_line (string str, int len);
public static int grepbuf (string str, int len);
//public static int grep_line (string str, int len);
//public static int grepbuf (string str, int len);
public static void invert (bool set, int color);
}
}

View File

@ -13,3 +13,7 @@ r_syscall
r_flags
r_config
r_asm
r_bin
r_parse
r_lang
r_sign

View File

@ -2,7 +2,7 @@
namespace Radare {
[Compact]
[CCode (cheader_filename="r_core.h,r_list.h,r_types_base.h", cname="RCore", free_function="r_core_free", cprefix="r_core_")]
[CCode (cheader_filename="r_core.h,r_bin.h,r_parse.h,r_lang.h,r_sign.h,r_reg.h,r_list.h,r_types_base.h", cname="RCore", free_function="r_core_free", cprefix="r_core_")]
public class RCore {
public RFlag flags;
public RNum num;
@ -21,7 +21,7 @@ public class RCore {
public RSearch search;
public RSign sign;
// TODO: public RMeta meta;
// TODO: public RPrint print;
public RPrint print;
// TODO: public RVm vm;
public static unowned RCore cast(uint64 ptr);
@ -35,7 +35,7 @@ public class RCore {
public int cmd0(string cmd);
public void cmd_init ();
public int cmd_foreach(string cmd, string each);
// XXX. must be const in .h public int cmd_foreach(string cmd, string each);
/**
* Execute every line of the given file as radare commands
*/
@ -57,14 +57,14 @@ public class RCore {
public int anal_fcn(uint64 at, uint64 from, int depth);
public int anal_fcn_list(string input, bool rad);
public int anal_graph(uint64 addr, int opts);
public int anal_graph_fcn(string input, int opts);
//public int anal_graph_fcn(string input, int opts);
public int anal_ref_list(bool rad);
public int project_open (string file);
public int project_save (string file);
public string project_info (string file);
public int gdiff(string file1, string file2, bool va);
//public int gdiff(string file1, string file2, bool va);
public void sysenv_update ();
@ -78,7 +78,7 @@ public class RCore {
/* io */
public int read_at(uint64 addr, out uint8 *buf, int size);
public int write_at(uint64 addr, uint8 *buf, int size);
public int write_op(uint64 addr, string arg, char op);
//public int write_op(uint64 addr, string arg, char op);
public int block_read(bool next);
public int block_size(int size);
public int seek(uint64 addr, bool rb);
@ -124,7 +124,7 @@ public class RCore {
/* files */
public RCore.File file_open(string file, int mode);
public bool file_close(RCoreFile cf);
public bool file_close(RCore.File cf);
public bool file_close_fd(int fd);
public bool file_list();

View File

@ -26,17 +26,17 @@ public class Radare.RDebug {
public bool step(int count);
public bool step_over(int count);
public bool @continue();
public bool continue_kill(uint64 addr, int sig);
public bool continue_kill(int sig);
public bool continue_until(uint64 addr);
public bool continue_until_optype(int type, int over);
public bool continue_until_nontraced();
public bool continue_syscall(int syscall);
public bool map_list(RDebug.Map map);
//public bool map_list(RDebug.Map map);
public bool map_alloc (RDebug.Map map);
public bool map_dealloc (RDebug.Map map);
public RList<RDebug.Map> map_list_new ();
public void map_list_free (RList<RDebug.Map> maps);
//public RList<RDebug.Map> map_list_new ();
//public void map_list_free (RList<RDebug.Map> maps);
public void map_list (uint64 addr);
public RDebug.Map map_get(uint64 addr);
public bool map_sync ();
@ -46,7 +46,7 @@ public class Radare.RDebug {
public uint64 arg_get (int fast, int num);
public bool arg_set (int fast, int num, uint64 val);
public uint64 execute(string buf, int len); // XXX: uint8
public uint64 execute(uint8 *buf, int len); // XXX: uint8
public int desc_open (string path);
public int desc_close (int fd);
public int desc_dup (int fd, int newfd);
@ -58,10 +58,10 @@ public class Radare.RDebug {
//public bool mmu_alloc(uint64 size, out uint64 size);
//public bool mmu_free(uint64 addr);
public bool reg_sync(bool set);
public bool reg_sync(RReg.Type type, bool set);
public bool reg_list(int type, int size, bool rad); // TODO must be depreacted
public bool reg_set(string name, uint64 num);
public uint64 reg_get(string name);
//public bool reg_set(string name, uint64 num);
//public uint64 reg_get(string name);
public int pid_list (int pid);
public int thread_list (int pid);
@ -69,9 +69,9 @@ public class Radare.RDebug {
public void trace_reset (bool liberate);
public int trace_pc ();
public void trace_at (string str);
public RDebug.Tracepoint trace_get(uint64 addr);
//public RDebug.Tracepoint trace_get(uint64 addr);
public void trace_list(int mode);
public RDebug.Tracepoint trace_add(uint64 addr, int size);
//public RDebug.Tracepoint trace_add(uint64 addr, int size);
public bool trace_tag (int tag);
[CCode (cname="RDebugPid", free_function="r_debug_pid_free", cprefix="r_debug_pid_")]
@ -123,7 +123,7 @@ public class Radare.RDebug {
public int perm;
public int user;
public Map(string name, uint64 addr, uint64 addr_end, int perm, int user);
//public Map(string name, uint64 addr, uint64 addr_end, int perm, int user);
}
[CCode (cname="RDebugTrace")]
@ -156,7 +156,7 @@ public class Radare.RDebug {
public RDebug.Trace trace;
public bool stop_all_threads;
public string reg_profile;
public RRegister reg;
public RReg reg;
public RAnal anal;
public RList<RDebug.Map> maps;

View File

@ -6,14 +6,14 @@ namespace Radare {
public class RDiff {
public RDiff (uint64 off_a = 0LL, uint64 off_b = 0LL);
public int buffers (uint8* a, int la, uint8* b, int lb);
public int buffers_static (uint8[] a, uint8[] b);
public int buffers_delta (uint8[] a, uint8[] b);
//public int buffers_static (uint8[] a, uint8[] b);
//public int buffers_delta (uint8[] a, uint8[] b);
//public int set_callback(...);
public int buffers_distance (uint8 *a, int la, uint8 *b, int lb, out uint32 distance, out double similarity);
//public static int lines (string file, string sa, int la, string file2, string sb, int lb);
//public int lines(string a, int len, string b, int len);
public static int gdiff(string file1, string file2, bool rad, bool va);
//public static int gdiff(string file1, string file2, bool rad, bool va);
public bool set_delta(int delta);
[Compact]

View File

@ -5,14 +5,15 @@ namespace Radare {
[Compact]
[CCode (cname="struct r_flag_item_t", free_function="free")]
public class RFlagItem {
string name;
uint64 namehash;
int space;
uint64 size;
uint64 offset;
string cmd;
public string name;
public uint64 namehash;
public int space;
public uint64 size;
public uint64 offset;
public string cmd;
//public void rename(string name);
}
[Compact]
[CCode (cname="struct r_flag_t", free_function="r_flag_free", cprefix="r_flag_")]
public class RFlag {
@ -23,12 +24,14 @@ namespace Radare {
public bool unset(string name);
public bool sort(int namesort);
public static bool name_check(string name);
public static bool name_filter(string name);
//public static bool name_filter(string name);
public bool unset_i(uint64 addr);
public void set(string name, uint64 addr, int size=1, bool dup=false);
/*
public void space_list();
public string space_get(int idx);
public void space_set(string name);
*/
}
}

View File

@ -84,9 +84,9 @@ namespace Radare {
}
/* TODO: make them methods of Plugin class ? */
public bool plugin_open(int fd, Plugin plugin);
public bool plugin_close(int fd, Plugin plugin);
public bool plugin_add(Plugin plugin);
public bool plugin_open(int fd, RIO.Plugin plugin);
public bool plugin_close(int fd, RIO.Plugin plugin);
public bool plugin_add(RIO.Plugin plugin);
public int plugin_generate();
public void plugin_list();
@ -128,16 +128,17 @@ namespace Radare {
public uint64 section_offset_to_vaddr(uint64 offset);
[Compact]
[CCode (cname="RIODesc")]
[CCode (cname="RIODesc",free_function="")]
public class Desc {
int fd;
int flags;
const string name;
public int fd;
public int flags;
public string name;
}
// int perms -> RIOPerm ?
public bool desc_add(int fd, string file, int perms, Plugin plugin);
public bool desc_add(int fd, string file, int perms, RIO.Plugin plugin);
public bool desc_del(int fd);
public RIO.Desc desc_get (int fd);
//public RIO.Desc desc_get (int fd);
public int desc_generate();
*/
}
}

View File

@ -9,7 +9,7 @@ namespace Radare {
public bool define(string type, string name, void* ptr);
public bool @add(RLang.Plugin plugin);
public bool use(string name);
public bool undef();
public void undef();
public bool list();
public bool set_argv(int argc, char **argv);
public bool run(string code, int len);

View File

@ -1,45 +0,0 @@
/* radare - LGPL - Copyright 2010 pancake<nopcode.org> */
namespace Radare {
[Compact]
[CCode (cheader_filename="r_meta.h,r_list.h,r_types_base.h", cname="RMeta", free_function="r_meta_free", cprefix="r_meta_")]
public class RMeta {
[Compact]
[CCode (cname="RMetaItem")]
public class Item {
public uint64 from;
public uint64 to;
public uint64 size;
public int type;
public string str;
}
}
public RList<RMeta.Item> data;
[CCode (cprefix="R_META_WHERE_")]
public enum Where {
PREV,
HERE,
NEXT
}
[CCode (cprefix="R_META_")]
public enum Type {
ANY,
DATA,
CODE,
STRING,
STRUCT,
COMMENT,
FOLDER
}
//public int count (RMeta.Type type, uint64 from, uint64 to,
public string get_string(RMeta.Type, uint64 addr);
public bool @add(RMeta.Type type, uint64 from, uint64 size, string str);
public bool del(RMeta.Type type, uint64 from, uint64 size, string str);
public RMeta.Item find(uint64 off, RMeta.Type type, RMeta.Where where);
public bool cleanup (uint64 from, uint64 to);
public static string tytpe_to_string(RMeta.Type type);
public int list (RMeta.Type type);
}

1
swig/vapi/r_parse.deps Normal file
View File

@ -0,0 +1 @@
r_flags

View File

@ -1,6 +1,6 @@
/* radare - LGPL - Copyright 2009 pancake<@nopcode.org> */
/* radare - LGPL - Copyright 2009-2010 pancake<@nopcode.org> */
[CCode (cheader_filename="r_parse.h,r_flags.h", cprefix="r_parse_", lower_case_cprefix="r_parse_")]
[CCode (cheader_filename="r_parse.h", cprefix="r_parse_", lower_case_cprefix="r_parse_")]
namespace Radare {
[Compact]
[CCode (cname="struct r_parse_t", free_function="r_parse_free", cprefix="r_parse_")]
@ -9,13 +9,15 @@ namespace Radare {
public int list();
public bool use(string name);
public bool assemble(ref string dst, string src);
public bool parse(ref string dst, string src);
public bool assemble(string data, string str);
public bool filter(RFlag flag, string data, string str, int len);
public bool filter(RFlag flag, ref string data, ref string str, int len);
public bool assemble(ref string dst, ref string src);
public bool parse(void *dst, ref string src);
/*
public void set_user_ptr(void *user);
//TODO public bool @add();
// This is the destructor
public void free();
*/
}
}

View File

@ -1 +1,23 @@
/* TODO */
/* radare - LGPL - Copyright 2010 pancake<@nopcode.org> */
[Compact]
[CCode (cheader_filename="r_print.h", cprefix="r_print_", cname="struct r_print_t", free_function="r_print_free")]
public class Radare.RPrint {
public RPrint();
public string hexpair (string str, int idx);
public void set_flags (int flags);
public void set_width (int width);
public void hexdump(uint64 addr, uint8* buf, int len, int baddr, int step);
public void hexpairs(uint64 addr, uint8 *buf, int len);
public void bytes(uint8* buf, int len, string fmt);
//public void @byte (string fmt, int idx, uint8 ch);
public void c(uint8 *buf, int len);
public void raw(uint8 *buf, int len);
public void cursor(int cur, int set);
public void set_cursor(int curset, int ocursor, int cursor);
public void code(uint64 addr, uint8* buf, int len);
//public void string(uint64 addr, uint8* buf, int len);
public int date_dos(uint8* buf, int len);
public int date_w32(uint8* buf, int len);
public int date_unix(uint8* buf, int len);
}

View File

@ -49,7 +49,7 @@ public class Radare.RReg {
//public KernelList<RReg.Item*> get_list(RReg.Type type);
public bool set_name(int role, string name);
public string get_name(int role);
public weak string get_name(int role);
public static int get_name_idx(string type);
public static int type_by_name(string str);
@ -71,5 +71,5 @@ public class Radare.RReg {
public void arena_set(int n, bool copy);
public bool arena_push ();
public void arena_pop();
public uint64 arena_cmp (RReg.Item item);
//public uint64 arena_cmp (RReg.Item item);
}

View File

@ -1,30 +1,11 @@
/* radare - LGPL - Copyright 2009 nibble<.ds@gmail.com> */
/* radare - LGPL - Copyright 2010 pancake<nopcode.org> */
[CCode (cheader_filename="r_lang.h", cprefix="r_lang_", lower_case_cprefix="r_lang_")]
[CCode (cheader_filename="r_sign.h", cprefix="r_sign_", lower_case_cprefix="r_sign_")]
namespace Radare {
[Compact]
[CCode (cname="RLang", free_function="r_lang_free", cprefix="r_lang_")]
public class RLang {
public RLang ();
public bool define(string type, string name, void* ptr);
public bool @add(RLang.Plugin plugin);
public bool use(string name);
public bool undef();
public bool list();
public bool set_argv(int argc, char **argv);
public bool run(string code, int len);
public bool run_file(string file);
public bool prompt();
[Compact]
[CCode (cname="struct r_lang_plugin_t", destroy_function="", free_function="" )]
public class Plugin {
public string name;
public string desc;
public string help;
}
public Plugin cur;
[CCode (cname="RSign", free_function="r_sign_free", cprefix="r_sign_")]
public class RSign {
public RSign ();
/* TODO */
}
}