diff --git a/libr/core/canal.c b/libr/core/canal.c index 2c80ba7ecb003..456999a226361 100644 --- a/libr/core/canal.c +++ b/libr/core/canal.c @@ -1729,9 +1729,6 @@ R_API void r_core_anal_datarefs(RCore *core, ut64 addr) { r_cons_printf ("age %s %s\n", me, dst); } } - if (!found) { - eprintf ("No data refs in this function.\n"); - } r_list_free (refs); } else { eprintf ("Not in a function. Use 'df' to define it.\n"); diff --git a/libr/core/cmd_anal.c b/libr/core/cmd_anal.c index dc77aabc0b496..72373851f41d6 100644 --- a/libr/core/cmd_anal.c +++ b/libr/core/cmd_anal.c @@ -5951,6 +5951,34 @@ static void cmd_anal_graph(RCore *core, const char *input) { break; } break; + case 'R': // "agR" global refs + switch (input[1]) { + case 'v': + case 't': + case 'd': + case 'J': + case 'j': + case 'g': + case 'k': + case 'w': + case ' ': + case 0: { + r_core_cmdf (core, "ag-; .agR*; agg%c;", input[1]); + break; + } + case '*': { + RListIter *it; + RAnalFunction *fcn; + r_list_foreach (core->anal->fcns, it, fcn) { + r_core_anal_coderefs (core, fcn->addr); + } + break; + } + default: + eprintf ("Usage: see ag?\n"); + break; + } + break; case 'x': // agx "cross refs" switch (input[1]) { case 'v': @@ -6095,6 +6123,34 @@ static void cmd_anal_graph(RCore *core, const char *input) { break; } break; + case 'A': // "agA" global data refs + switch (input[1]) { + case 'v': + case 't': + case 'd': + case 'J': + case 'j': + case 'g': + case 'k': + case 'w': + case ' ': + case 0: { + r_core_cmdf (core, "ag-; .agA*; agg%c;", input[1]); + break; + } + case '*': { + RListIter *it; + RAnalFunction *fcn; + r_list_foreach (core->anal->fcns, it, fcn) { + r_core_anal_datarefs (core, fcn->addr); + } + break; + } + default: + eprintf ("Usage: see ag?\n"); + break; + } + break; case 'd': // "agd" switch (input[1]) { case 'v':