static ut64 getFunctionSize(Sdb *db) { ut64 min = UT64_MAX, max = 0; char *c, *bbs = sdb_get (db, "bbs", NULL); bool first = true; sdb_aforeach (c, bbs) { ut64 addr = sdb_atoi (c); ut64 addr_end = sdb_num_get (db, Fbb (addr), NULL); if (first) { min = addr; max = addr_end; first = false; } else { if (addr < min) { min = addr; } if (addr_end > max) { max = addr_end; } } sdb_aforeach_next (c); }
R_API int r_anal_fcn_labels (RAnal *anal, RAnalFunction *fcn, int rad) { if (!anal || !fcn) return 0; if (fcn) { char *cur, *token; char *str = sdb_get (DB, LABELS, 0); sdb_aforeach (cur, str) { struct { ut64 addr; char *name; } loc; token = strchr (cur, '/'); if (!token) break; *token = ','; sdb_fmt_tobin (cur, "qz", &loc); switch (rad) { case '*': case 1: anal->printf ("f.%s@0x%08"PFMT64x"\n", loc.name, loc.addr); break; case 'j': eprintf ("TODO\n"); break; default: anal->printf ("0x%08"PFMT64x" %s [%s + %"PFMT64d"]\n", loc.addr, loc.name, fcn->name, loc.addr - fcn->addr, loc.addr); } *token = '/'; sdb_fmt_free (&loc, "qz"); sdb_aforeach_next (cur); } free (str); } else {
static ut64 getFunctionSize(Sdb *db) { #if 1 ut64 min = sdb_num_get (db, Fmin (addr), NULL); ut64 max = sdb_num_get (db, Fmax (addr), NULL); #else ut64 min, max; char *c, *bbs = sdb_get (db, "bbs", NULL); int first = 1; sdb_aforeach (c, bbs) { ut64 addr = sdb_atoi (c); ut64 addr_end = sdb_num_get (db, Fbb(addr), NULL); if (first) { min = addr; max = addr_end; first = 0; } else { if (addr<min) min = addr; if (addr_end>max) max = addr_end; } sdb_aforeach_next (c); }