core/bin: convert cmd call to API
This commit is contained in:
parent
d0a24f5789
commit
e9000ec45b
2 changed files with 12 additions and 7 deletions
|
|
@ -4109,7 +4109,7 @@ RZ_API bool rz_core_bin_fields_print(RZ_NONNULL RzCore *core, RZ_NONNULL RzBinFi
|
|||
rz_pvector_foreach (fields, iter) {
|
||||
field = *iter;
|
||||
switch (state->mode) {
|
||||
case RZ_OUTPUT_MODE_JSON:
|
||||
case RZ_OUTPUT_MODE_JSON: {
|
||||
pj_o(state->d.pj);
|
||||
pj_ks(state->d.pj, "name", field->name);
|
||||
pj_kn(state->d.pj, "vaddr", field->vaddr);
|
||||
|
|
@ -4120,16 +4120,19 @@ RZ_API bool rz_core_bin_fields_print(RZ_NONNULL RzCore *core, RZ_NONNULL RzBinFi
|
|||
if (field->format && *field->format) {
|
||||
pj_ks(state->d.pj, "format", field->format);
|
||||
}
|
||||
char *o = rz_core_cmd_strf(core, "pfj%c%s@ 0x%" PFMT64x,
|
||||
field->format_named ? '.' : ' ', field->format, field->vaddr);
|
||||
if (o && *o) {
|
||||
rz_str_trim_tail(o);
|
||||
int mode = RZ_PRINT_JSON;
|
||||
char *realfmt = field->format_named ? rz_str_prepend(field->format, ".") : rz_str_dup(field->format);
|
||||
char *format = rz_core_print_format(core, realfmt, mode, field->vaddr);
|
||||
free(realfmt);
|
||||
if (RZ_STR_ISNOTEMPTY(format)) {
|
||||
rz_str_trim_tail(format);
|
||||
pj_k(state->d.pj, "pf");
|
||||
pj_j(state->d.pj, o);
|
||||
pj_j(state->d.pj, format);
|
||||
}
|
||||
free(o);
|
||||
free(format);
|
||||
pj_end(state->d.pj);
|
||||
break;
|
||||
}
|
||||
case RZ_OUTPUT_MODE_TABLE:
|
||||
rz_table_add_rowf(state->d.t, "XsXs", field->paddr, field->name, field->vaddr, field->comment);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ CMDS=<<EOF
|
|||
ic
|
||||
icf Person
|
||||
icm Person
|
||||
icfj Person
|
||||
EOF
|
||||
EXPECT=<<EOF
|
||||
address min max name super
|
||||
|
|
@ -19,6 +20,7 @@ address index class flags name
|
|||
0x100000da0 0 Person sayHello
|
||||
0x100000df0 1 Person name
|
||||
0x100000e20 2 Person setName:
|
||||
[{"name":"Person::(property)name","class":"Person","addr":18446744073709551615},{"type":"struct objc_class *","name":"isa","class":"Person","addr":18446744073709551615},{"type":"*","name":"Person::(ivar)name","class":"Person","addr":4294971768}]
|
||||
EOF
|
||||
RUN
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue