mirror of
https://github.com/radareorg/radare2.git
synced 2025-02-18 21:28:15 +00:00
Export fcnsign from t* to asf
This commit is contained in:
parent
72b27776d7
commit
c04256f39f
@ -2107,7 +2107,9 @@ static void cmd_asf(RCore *core, const char *input) {
|
||||
} else {
|
||||
ret = sdb_querys (core->anal->sdb_fcnsign, NULL, 0, "*");
|
||||
}
|
||||
r_cons_printf ("%s\n", ret);
|
||||
if (ret && *ret)
|
||||
r_cons_printf ("%s\n", ret);
|
||||
free (ret);
|
||||
}
|
||||
|
||||
static void cmd_anal_syscall(RCore *core, const char *input) {
|
||||
|
@ -31,6 +31,54 @@ static int sdbforcb (void *p, const char *k, const char *v) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int typelist (void *p, const char *k, const char *v) {
|
||||
#define DB core->anal->sdb_types
|
||||
RCore *core = (RCore*)p;
|
||||
int i;
|
||||
if (!strcmp (v, "func")) {
|
||||
const char *rv = sdb_const_get (DB,
|
||||
sdb_fmt (0, "func.%s.ret", k), 0);
|
||||
r_cons_printf ("# %s %s(", rv, k);
|
||||
for (i=0; i<16; i++) {
|
||||
char *av = sdb_get (DB,
|
||||
sdb_fmt (0, "func.%s.arg.%d", k, i), 0);
|
||||
if (!av) break;
|
||||
r_str_replace_char (av, ',', ' ');
|
||||
r_cons_printf ("%s%s", i?", ":"", av);
|
||||
free (av);
|
||||
}
|
||||
r_cons_printf (");\n");
|
||||
// signature in pf for asf
|
||||
r_cons_printf ("asf %s=", k);
|
||||
// formats
|
||||
for (i=0; i<16; i++) {
|
||||
const char *fmt;
|
||||
char *comma, *av = sdb_get (DB,
|
||||
sdb_fmt (0, "func.%s.arg.%d", k, i), 0);
|
||||
if (!av) break;
|
||||
comma = strchr (av, ',');
|
||||
if (comma) *comma = 0;
|
||||
fmt = sdb_const_get (DB, sdb_fmt (0, "type.%s", av), 0);
|
||||
r_cons_printf ("%s", fmt);
|
||||
if (comma) *comma = ',';
|
||||
free (av);
|
||||
}
|
||||
// names
|
||||
for (i=0; i<16; i++) {
|
||||
const char *fmt;
|
||||
char *comma, *av = sdb_get (DB,
|
||||
sdb_fmt (0, "func.%s.arg.%d", k, i), 0);
|
||||
if (!av) break;
|
||||
comma = strchr (av, ',');
|
||||
if (comma) *comma++ = 0;
|
||||
r_cons_printf (" %s", comma);
|
||||
free (av);
|
||||
}
|
||||
r_cons_newline();
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int cmd_type(void *data, const char *input) {
|
||||
RCore *core = (RCore*)data;
|
||||
|
||||
@ -159,12 +207,10 @@ static int cmd_type(void *data, const char *input) {
|
||||
}
|
||||
}
|
||||
break;
|
||||
#if 0
|
||||
// t* - list all types in 'pf' syntax
|
||||
case '*':
|
||||
r_anal_type_list (core->anal, R_ANAL_TYPE_ANY, 1);
|
||||
sdb_foreach (core->anal->sdb_types, typelist, core);
|
||||
break;
|
||||
#endif
|
||||
case 0:
|
||||
sdb_foreach (core->anal->sdb_types, sdbforcb, core);
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user