static RList* sections(RBinArch *arch) { RList *ret = NULL; RBinSection *ptr = NULL; struct r_bin_java_sym_t *s = NULL; RBinJavaObj *b = arch->bin_obj; if (!(ret = r_list_new ())) return NULL; ret->free = free; if ((s = r_bin_java_get_symbols (arch->bin_obj))) { if ((ptr = R_NEW (RBinSection))) { strcpy (ptr->name, "code"); ptr->size = ptr->vsize = b->fsymsz; ptr->offset = ptr->rva = b->fsym; ptr->srwx = 4|1; r_list_append (ret, ptr); } if ((ptr = R_NEW (RBinSection))) { strcpy (ptr->name, "constpool"); ptr->size = ptr->vsize = b->fsym; ptr->offset = ptr->rva = 0; ptr->srwx = 4; r_list_append (ret, ptr); } if ((ptr = R_NEW (RBinSection))) { strcpy (ptr->name, "data"); ptr->offset = ptr->rva = b->fsymsz+b->fsym; ptr->size = ptr->vsize = arch->buf->length - ptr->rva; ptr->srwx = 4|2; r_list_append (ret, ptr); } free (s); } return ret; }
static RList* symbols(RBinArch *arch) { RList *ret = NULL; RBinSymbol *ptr = NULL; struct r_bin_java_sym_t *s = NULL; int i; if (!(ret = r_list_new ())) return NULL; ret->free = free; if (!(s = r_bin_java_get_symbols ((struct r_bin_java_obj_t*)arch->bin_obj))) return ret; for (i = 0; !s[i].last; i++) { if (!(ptr = R_NEW (RBinSymbol))) break; strncpy (ptr->name, s[i].name, R_BIN_SIZEOF_STRINGS); strncpy (ptr->forwarder, "NONE", R_BIN_SIZEOF_STRINGS); strncpy (ptr->bind, "NONE", R_BIN_SIZEOF_STRINGS); strncpy (ptr->type, "FUNC", R_BIN_SIZEOF_STRINGS); ptr->rva = ptr->offset = s[i].offset; ptr->size = s[i].size; ptr->ordinal = i; r_list_append (ret, ptr); } free (s); return ret; }
static RList *symbols(RBinFile *bf) { return r_bin_java_get_symbols ((struct r_bin_java_obj_t *) bf->o->bin_obj); }
static RList* symbols(RBinArch *arch) { IFDBG debug_dump_all_cp_obj((struct r_bin_java_obj_t*)arch->bin_obj); return r_bin_java_get_symbols ((struct r_bin_java_obj_t*)arch->bin_obj); }