Exemple #1
0
static int cmd_meta_add_fileline(Sdb *s, char *fileline, ut64 offset) {
	char aoffset[64];
	char *aoffsetptr = sdb_itoa (offset, aoffset, 16);

	if (!aoffsetptr) {
		return -1;
	}
	if (!sdb_add (s, aoffsetptr, fileline, 0)) {
		sdb_set (s, aoffsetptr, fileline, 0);
	}
	if (!sdb_add (s, fileline, aoffsetptr, 0)) {
		sdb_set (s, fileline, aoffsetptr, 0);
	}
	return 0;
}
Exemple #2
0
static void createdb(const char *f) {
    char line[SDB_VALUESIZE];
    struct cdb_make c;
    char *eq, *ftmp = malloc (strlen (f)+5);
    sprintf (ftmp, "%s.tmp", f);
    int fd = open (ftmp, O_RDWR|O_CREAT|O_TRUNC, 0644);
    if (fd == -1) {
        printf ("cannot create %s\n", ftmp);
        exit (1);
    }
    cdb_make_start (&c, fd);
    for (;;) {
        fgets (line, sizeof line, stdin);
        if (feof (stdin))
            break;
        line[strlen (line)-1] = 0;
        if ((eq = strchr (line, '='))) {
            *eq = 0;
            sdb_add (&c, line, eq+1);
        }
    }
    cdb_make_finish (&c);
    //fsync (fd);
    close (fd);
    rename (ftmp, f);
    free (ftmp);
}
Exemple #3
0
R_API int r_anal_fcn_label_set (RAnal *anal, RAnalFunction *fcn, const char *name, ut64 addr) {
	if (!anal || !fcn)
		return R_FALSE;
	if (sdb_add (DB, ADDR(addr), name, 0)) {
		if (sdb_num_add (DB, LABEL(name), addr, 0)) {
			sdb_array_add (DB, LABELS, ADDRLABEL (addr, name), 0);
			return R_TRUE;
		} else {
			sdb_unset (DB, ADDR(addr), 0);
		}
	}
	return R_FALSE;
}
Exemple #4
0
// avr
R_API int r_anal_var_access (RAnal *a, ut64 var_addr, char kind, int scope, int delta, int xs_type, ut64 xs_addr) {
	const char *var_global;
	const char *xs_type_str = xs_type? "writes": "reads";
// TODO: kind is not used
	if (scope>0) { // local
		char *var_local = sdb_fmt (0, "var.0x%"PFMT64x".%d.%d.%s",
			var_addr, scope, delta, xs_type_str);
		return sdb_array_add_num (DB, var_local, xs_addr, 0);
	}
	// global
	sdb_add (DB, sdb_fmt (0,"var.0x%"PFMT64x, var_addr), "a,", 0);
	var_global = sdb_fmt (0, "var.0x%"PFMT64x".%s", var_addr, xs_type_str);
	return sdb_array_add_num (DB, var_global, xs_addr, 0);
}
Exemple #5
0
// avr
R_API int r_anal_var_access (RAnal *a, ut64 var_addr, char kind, int scope, int delta, int xs_type, ut64 xs_addr) {
	const char *xs_type_str = xs_type? "writes": "reads";
	char key[128];
// TODO: kind is not used
	if (scope>0) { // local
		SETKEY ("var.0x%"PFMT64x, var_addr);
		//sdb_add (DB, key, var, 0);
		SETKEY ("var.0x%"PFMT64x".%d.%d.%s", var_addr, scope, delta, xs_type_str);
	} else { // global
		SETKEY ("var.0x%"PFMT64x, var_addr);
		sdb_add (DB, key, "a,", 0);
		SETKEY ("var.0x%"PFMT64x".%s", var_addr, xs_type_str);
	}
	return sdb_array_add_num (DB, key, xs_addr, 0);
}