Fix - Too much function informations

This commit is contained in:
pancake 2013-10-15 01:17:54 +02:00
parent b1140b99aa
commit 6e54a0c7a7
2 changed files with 22 additions and 10 deletions
libr
anal
core

@ -89,7 +89,7 @@ R_API char *r_anal_cc_to_string (RAnal *anal, RAnalCC* cc) {
snprintf (str, sizeof (str), "0x%08"PFMT64x"(", cc->jump);
else strncpy (str, "unk(", sizeof (str)-1);
str_len = strlen (str);
if (fcn) cc->nargs = (fcn->nargs>cc->nargs?cc->nargs:fcn->nargs);
if (fcn) cc->nargs = (fcn->nargs>cc->nargs?fcn->nargs:cc->nargs);
if (cc->nargs>8) {
//eprintf ("too many arguments for stdcall. chop to 8\n");
cc->nargs = 8;

@ -1099,19 +1099,31 @@ toro:
}
if (!r_anal_cc_update (core->anal, &cc, &analop)) {
if (show_functions) {
char tmp[128];
char *ccstr = r_anal_cc_to_string (core->anal, &cc);
if (ccstr) {
RFlagItem *flag = r_flag_get_at (core->flags, cc.jump);
if (flag && ccstr) {
int delta = 0;
if (f) { delta = cc.jump-flag->offset; }
if (!strncmp (flag->name, ccstr, strlen (flag->name))) {
if (ccstr[strlen(flag->name)] == '(') {
tmp[0] = 0;
} else {
if (delta)
snprintf (tmp, sizeof (tmp), " ; %s+%d", flag->name, delta);
else snprintf (tmp, sizeof (tmp), " ; %s", flag->name);
}
} else {
if (delta)
snprintf (tmp, sizeof (tmp), " ; %s+%d", flag->name, delta);
else snprintf (tmp, sizeof (tmp), " ; %s", flag->name);
}
}
if (show_color)
r_cons_printf ("\n%s%s"Color_RESET"%s%s"Color_RESET" %s; %s (%s+%d)"Color_RESET,
color_fline, pre, color_flow, refline, ccstr,
(flag&&flag->name)? flag->name: "",
(flag&&flag->name)? flag->name: "",
(f&&flag)? cc.jump-flag->offset: 0);
else r_cons_printf ("\n%s%s ; %s (%s+%d)",
pre, refline, ccstr,
(flag&&flag->name)?flag->name:"",
flag? cc.jump-flag->offset: 0);
r_cons_printf ("\n%s%s"Color_RESET"%s%s"Color_RESET" %s%s"Color_RESET,
color_fline, pre, color_flow, refline, ccstr, tmp);
else r_cons_printf ("\n%s%s %s%s", pre, refline, ccstr, tmp);
free (ccstr);
}
}