Making asm.calls true by default

And fixing some of its output syntax issues
This commit is contained in:
Ahmed Mohamed Abd El-MAwgood 2016-09-14 19:23:11 +03:00 committed by Maijin
parent aa2286bc35
commit bc16525860
3 changed files with 12 additions and 8 deletions

View File

@ -286,22 +286,22 @@ R_API int r_anal_type_func_exist(RAnal *anal, const char *func_name) {
}
R_API const char *r_anal_type_func_ret(RAnal *anal, const char *func_name){
char *query = sdb_fmt (-1, "func.%s.ret", func_name);
const char *query = sdb_fmt (-1, "func.%s.ret", func_name);
return sdb_const_get (anal->sdb_types, query, 0);
}
R_API const char *r_anal_type_func_cc(RAnal *anal, const char *func_name) {
char *query = sdb_fmt (-1, "func.%s.cc", func_name);
const char *query = sdb_fmt (-1, "func.%s.cc", func_name);
return sdb_const_get (anal->sdb_types, query, 0);
}
R_API int r_anal_type_func_args_count(RAnal *anal, const char *func_name) {
char *query = sdb_fmt (-1, "func.%s.args", func_name);
const char *query = sdb_fmt (-1, "func.%s.args", func_name);
return sdb_num_get (anal->sdb_types, query, 0);
}
R_API char *r_anal_type_func_args_type(RAnal *anal, const char *func_name, int i) {
char *query = sdb_fmt (-1, "func.%s.arg.%d", func_name, i);
const char *query = sdb_fmt (-1, "func.%s.arg.%d", func_name, i);
char *ret = sdb_get (anal->sdb_types, query, 0);
char *comma = strchr (ret, ',');
if (comma) {
@ -313,7 +313,7 @@ R_API char *r_anal_type_func_args_type(RAnal *anal, const char *func_name, int i
}
R_API char *r_anal_type_func_args_name(RAnal *anal, const char *func_name, int i) {
char *query = sdb_fmt (-1, "func.%s.arg.%d", func_name, i);
const char *query = sdb_fmt (-1, "func.%s.arg.%d", func_name, i);
const char *get = sdb_const_get (anal->sdb_types, query, 0);
char *ret = strchr (get, ',');
return ret == 0 ? ret : ret + 1;

View File

@ -1571,7 +1571,7 @@ R_API int r_core_config_init(RCore *core) {
SETPREF("asm.cmtright", "true", "Show comments at right of disassembly if they fit in screen");
SETI("asm.cmtcol", 70, "Align comments at column 60");
SETICB("asm.pcalign", 0, &cb_asm_pcalign, "Only recognize as valid instructions aligned to this value");
SETPREF("asm.calls", "false", "Show calling convention calls as comments in disasm");
SETPREF("asm.calls", "true", "Show callee function related info as comments in disasm");
SETPREF("asm.bbline", "false", "Show empty line after every basic block");
SETPREF("asm.comments", "true", "Show comments in disassembly view");
SETPREF("asm.jmphints", "true", "Show jump hints [numbers] in disasm");

View File

@ -2834,12 +2834,16 @@ static void ds_print_calls_hints(RDisasmState *ds) {
r_cons_strcat (ds->pal_comment);
}
ds_align_comment (ds);
r_cons_printf ("; %s %s(", r_anal_type_func_ret (anal, name), name);
const char *fcn_type = r_anal_type_func_ret (anal, name);
r_cons_printf ("; %s%s%s(", fcn_type, fcn_type[strlen (fcn_type) - 1] == '*' ? "": " ", name);
int i, arg_max = r_anal_type_func_args_count (anal, name);
for (i = 0; i < arg_max; i++) {
r_cons_printf (" %s %s%s", r_anal_type_func_args_type (anal, name, i),
char *type = r_anal_type_func_args_type (anal, name, i);
r_cons_printf ("%s%s%s%s%s", i == 0 ? "": " ", type,
type[strlen (type) -1] == '*' ? "": " ",
r_anal_type_func_args_name (anal, name, i),
i == arg_max - 1 ? ");\n": ",");
free (type);
}
free (name);
}