Add 'floc' and 'invalid' color palettes, Vdr renames locals

Vdr now support renaming local function labels
Do not colorize lines when scr.color=0
This commit is contained in:
pancake 2013-07-17 23:06:06 +02:00
parent fd075de90a
commit 670bb111d8
4 changed files with 51 additions and 36 deletions

View File

@ -6,10 +6,12 @@ R_API void r_cons_pal_init(const char *foo) {
RCons *cons = r_cons_singleton ();
memset (&cons->pal, 0, sizeof (cons->pal));
cons->pal.prompt = Color_YELLOW;
cons->pal.invalid = Color_BRED;
cons->pal.offset = Color_GREEN;
cons->pal.floc = Color_CYAN;
cons->pal.input = Color_WHITE;
cons->pal.comment = Color_CYAN;
cons->pal.fname = Color_CYAN;
cons->pal.fname = Color_RED;
cons->pal.fline = Color_CYAN;
cons->pal.flag = Color_CYAN;
cons->pal.label = Color_CYAN;
@ -20,7 +22,7 @@ R_API void r_cons_pal_init(const char *foo) {
cons->pal.b0x7f = Color_CYAN;
cons->pal.b0xff = Color_RED;
cons->pal.other = Color_YELLOW;
cons->pal.btext = Color_YELLOW;
cons->pal.btext = Color_WHITE;
cons->pal.push = Color_MAGENTA;
cons->pal.pop = Color_BMAGENTA;
cons->pal.nop = Color_BLUE;
@ -33,7 +35,7 @@ R_API void r_cons_pal_init(const char *foo) {
cons->pal.ret = Color_RED;
cons->pal.num = Color_YELLOW;
cons->pal.reg = Color_CYAN;
cons->pal.reset = "\x1b[0m";
cons->pal.reset = Color_RESET;
}
struct {

View File

@ -537,7 +537,7 @@ static int cmd_anal(void *data, const char *input) {
}
if (*name) {
fcn = r_anal_fcn_find (core->anal, off,
R_ANAL_FCN_TYPE_FCN|R_ANAL_FCN_TYPE_SYM);
R_ANAL_FCN_TYPE_FCN|R_ANAL_FCN_TYPE_SYM|R_ANAL_FCN_TYPE_LOC);
if (fcn) {
eprintf ("fr %s %s@ 0x%"PFMT64x"\n",
fcn->name, name, off);

View File

@ -193,7 +193,8 @@ R_API int r_core_print_disasm(RPrint *p, RCore *core, ut64 addr, ut8 *buf, int l
#define P(x) (core->cons && core->cons->pal.x)? core->cons->pal.x
// TODO: only if show_color?
const char *color_comment = P(comment): Color_CYAN;
const char *color_fname = P(fname): Color_CYAN;
const char *color_fname = P(fname): Color_RED;
const char *color_floc = P(floc): Color_MAGENTA;
const char *color_fline = P(fline): Color_CYAN;
const char *color_flow = P(flow): Color_CYAN;
const char *color_flag = P(flag): Color_CYAN;
@ -212,6 +213,7 @@ R_API int r_core_print_disasm(RPrint *p, RCore *core, ut64 addr, ut8 *buf, int l
const char *color_pop = P(pop): Color_BYELLOW;
const char *color_reg = P(reg): Color_YELLOW;
const char *color_num = P(num): Color_YELLOW;
const char *color_invalid = P(invalid): Color_BRED;
if (show_lines) ocols += 10; // XXX
if (show_offset) ocols += 14;
@ -566,16 +568,18 @@ toro:
if (f->type == R_ANAL_FCN_TYPE_LOC) {
if (show_color) {
r_cons_strcat (color_fline);
r_cons_printf ("|- "Color_RESET"%s (%d)\n", f->name, f->size);
r_cons_strcat ("|- ");
r_cons_strcat (color_floc);
r_cons_printf ("%s"Color_RESET" %d\n", f->name, f->size);
r_cons_strcat (color_fline);
r_cons_strcat ("| "Color_RESET);
} else {
r_cons_printf ("|- %s (%d)\n| ", f->name, f->size);
r_cons_printf ("|- %s %d\n| ", f->name, f->size);
}
} else {
const char *fmt = show_color?
"%s/ "Color_RESET"%s%s: %s"Color_RESET" (%d)\n":
"/ %s: %s (%d)\n| ";
"%s/ "Color_RESET"%s%s: %s"Color_RESET" %d\n":
"/ %s: %s %d\n| ";
if (show_color) {
r_cons_printf (fmt, color_fline, color_fname,
(f->type==R_ANAL_FCN_TYPE_FCN||f->type==R_ANAL_FCN_TYPE_SYM)?"function":
@ -618,11 +622,12 @@ toro:
if (show_flags) {
flag = r_flag_get_i (core->flags, at);
if (flag) {
if (show_lines && refline)
{
r_cons_strcat (color_flow);
r_cons_strcat (refline);
r_cons_strcat (Color_RESET);
if (show_lines && refline) {
if (show_color) {
r_cons_strcat (color_flow);
r_cons_strcat (refline);
r_cons_strcat (Color_RESET);
} else r_cons_strcat (refline);
}
if (show_offset) r_cons_printf ("; -- ");
if (show_color) r_cons_strcat (color_flag);
@ -638,9 +643,11 @@ toro:
}
}
if (!linesright && show_lines && line) {
r_cons_strcat (color_flow);
r_cons_strcat (line);
r_cons_strcat (Color_RESET);
if (show_color) {
r_cons_strcat (color_flow);
r_cons_strcat (line);
r_cons_strcat (Color_RESET);
} else r_cons_strcat (line);
}
if (show_offset)
r_print_offset (core->print, at, (at==dest), show_offseg);
@ -767,14 +774,17 @@ toro:
}
if (linesright && show_lines && line) {
r_cons_strcat (color_flow);
r_cons_strcat (line);
r_cons_strcat (Color_RESET);
if (show_color) {
r_cons_strcat (color_flow);
r_cons_strcat (line);
r_cons_strcat (Color_RESET);
} else
r_cons_strcat (line);
}
if (show_color) {
switch (analop.type) {
case R_ANAL_OP_TYPE_NOP:
r_cons_printf (color_nop);
r_cons_strcat (color_nop);
break;
case R_ANAL_OP_TYPE_ADD:
case R_ANAL_OP_TYPE_SUB:
@ -794,37 +804,40 @@ toro:
break;
case R_ANAL_OP_TYPE_JMP:
case R_ANAL_OP_TYPE_UJMP:
r_cons_printf (color_jmp);
r_cons_strcat (color_jmp);
break;
case R_ANAL_OP_TYPE_CJMP:
r_cons_printf (color_cjmp);
r_cons_strcat (color_cjmp);
break;
case R_ANAL_OP_TYPE_CMP:
r_cons_printf (color_cmp);
r_cons_strcat (color_cmp);
break;
case R_ANAL_OP_TYPE_UCALL:
case R_ANAL_OP_TYPE_CALL:
r_cons_printf (color_call);
r_cons_strcat (color_call);
break;
case R_ANAL_OP_TYPE_SWI:
r_cons_printf (color_swi);
r_cons_strcat (color_swi);
break;
case R_ANAL_OP_TYPE_ILL:
case R_ANAL_OP_TYPE_TRAP:
r_cons_printf (color_trap);
r_cons_strcat (color_trap);
break;
case R_ANAL_OP_TYPE_RET:
r_cons_printf (color_ret);
r_cons_strcat (color_ret);
break;
case R_ANAL_OP_TYPE_PUSH:
case R_ANAL_OP_TYPE_UPUSH:
case R_ANAL_OP_TYPE_LOAD:
r_cons_printf (color_push);
r_cons_strcat (color_push);
break;
case R_ANAL_OP_TYPE_POP:
case R_ANAL_OP_TYPE_STORE:
r_cons_printf (color_pop);
r_cons_strcat (color_pop);
break;
case R_ANAL_OP_TYPE_NULL:
case R_ANAL_OP_TYPE_UNK:
r_cons_strcat (color_invalid);
}
}
opstr = NULL;
@ -883,17 +896,16 @@ toro:
r_cons_strcat (opstr);
{ /* show function name */
RAnalFunction *f;
ut8 have_local = 0;
RAnalFunction *f, *cf;
switch (analop.type) {
case R_ANAL_OP_TYPE_JMP:
case R_ANAL_OP_TYPE_CJMP:
case R_ANAL_OP_TYPE_CALL:
{
cf = r_anal_fcn_find (core->anal, /* current function */
at, R_ANAL_FCN_TYPE_NULL);
f = r_anal_fcn_find (core->anal,
analop.jump, R_ANAL_FCN_TYPE_NULL);
RAnalFunction *cf = r_anal_fcn_find (core->anal, /* current function */
at, R_ANAL_FCN_TYPE_NULL);
ut8 have_local = 0;
if (f && !strstr (opstr, f->name)) {
if (f->locals != NULL) {
RAnalFcnLocal *l;
@ -923,7 +935,6 @@ toro:
r_cons_strcat (Color_RESET);
}
}
}
break;
}
}

View File

@ -60,6 +60,7 @@ typedef struct r_cons_palette_t {
char *offset;
char *comment;
char *fname;
char *floc;
char *fline;
char *flag;
char *label;
@ -85,6 +86,7 @@ typedef struct r_cons_palette_t {
char *cmp;
char *num;
char *reg;
char *invalid;
} RConsPalette;
typedef void (*RConsEvent)(void *);