mirror of
https://github.com/radareorg/radare2.git
synced 2025-03-04 20:39:46 +00:00
Making asm.calls true by default
And fixing some of its output syntax issues
This commit is contained in:
parent
aa2286bc35
commit
bc16525860
@ -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;
|
||||
|
@ -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");
|
||||
|
@ -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);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user