Skip to content

Commit b25e990

Browse files
oddcoderradare
authored andcommitted
Adding relro to i and putting stuff in semiorder
1 parent 86f2793 commit b25e990

File tree

2 files changed

+67
-52
lines changed

2 files changed

+67
-52
lines changed

libr/core/cbin.c

+41-34
Original file line numberDiff line numberDiff line change
@@ -673,59 +673,66 @@ static int bin_info(RCore *r, int mode) {
673673
if (IS_MODE_JSON (mode)) {
674674
r_cons_printf ("{");
675675
}
676-
pair_bool ("havecode", havecode, mode, false);
677-
pair_bool ("pic", info->has_pi, mode, false);
676+
pair_str ("arch", info->arch, mode, false);
677+
pair_int ("binsz", r_bin_get_size (r->bin), mode, false);
678+
pair_str ("bintype", info->rclass, mode, false);
679+
pair_int ("bits", info->bits, mode, false);
678680
pair_bool ("canary", info->has_canary, mode, false);
679-
pair_bool ("nx", info->has_nx, mode, false);
681+
pair_str ("class", info->bclass, mode, false);
682+
if (info->actual_checksum) {
683+
/* computed checksum */
684+
pair_str ("cmp.csum", info->actual_checksum, mode, false);
685+
}
686+
pair_str ("compiled", compiled, mode, false);
680687
pair_bool ("crypto", info->has_crypto, mode, false);
681-
pair_bool ("va", info->has_va, mode, false);
688+
tmp_buf = r_str_escape (info->debug_file_name);
689+
pair_str ("dbg_file", tmp_buf, mode, false);
690+
free (tmp_buf);
691+
pair_str ("endian", info->big_endian ? "big" : "little", mode, false);
692+
pair_bool ("havecode", havecode, mode, false);
693+
if (info->claimed_checksum) {
694+
/* checksum specified in header */
695+
pair_str ("hdr.csum", info->claimed_checksum, mode, false);
696+
}
697+
pair_str ("guid", info->guid, mode, false);
682698
pair_str ("intrp", info->intrp, mode, false);
683-
pair_str ("bintype", info->rclass, mode, false);
684-
pair_str ("class", info->bclass, mode, false);
685699
pair_str ("lang", info->lang, mode, false);
686-
pair_str ("arch", info->arch, mode, false);
687-
pair_int ("bits", info->bits, mode, false);
700+
pair_bool ("linenum", R_BIN_DBG_LINENUMS & info->dbg_info, mode, false);
701+
pair_bool ("lsyms", R_BIN_DBG_SYMS & info->dbg_info, mode, false);
688702
pair_str ("machine", info->machine, mode, false);
689-
pair_str ("os", info->os, mode, false);
703+
v = r_anal_archinfo (r->anal, R_ANAL_ARCHINFO_MAX_OP_SIZE);
704+
if (v != -1) {
705+
pair_int ("maxopsz", v, mode, false);
706+
}
690707
v = r_anal_archinfo (r->anal, R_ANAL_ARCHINFO_MIN_OP_SIZE);
691708
if (v != -1) {
692709
pair_int ("minopsz", v, mode, false);
693710
}
694-
v = r_anal_archinfo (r->anal, R_ANAL_ARCHINFO_MAX_OP_SIZE);
695-
if (v != -1) {
696-
pair_int ("maxopsz", v, mode, false);
711+
pair_bool ("nx", info->has_nx, mode, false);
712+
pair_str ("os", info->os, mode, false);
713+
if (info->rclass && !strcmp (info->rclass, "pe")) {
714+
pair_bool ("overlay", info->pe_overlay, mode, false);
697715
}
698716
v = r_anal_archinfo (r->anal, R_ANAL_ARCHINFO_ALIGN);
699717
if (v != -1) {
700718
pair_int ("pcalign", v, mode, false);
701719
}
702-
pair_str ("subsys", info->subsystem, mode, false);
703-
pair_str ("endian", info->big_endian ? "big" : "little", mode, false);
704-
pair_bool ("stripped", R_BIN_DBG_STRIPPED & info->dbg_info, mode, false);
705-
pair_bool ("static", r_bin_is_static (r->bin), mode, false);
706-
pair_bool ("linenum", R_BIN_DBG_LINENUMS & info->dbg_info, mode, false);
707-
pair_bool ("lsyms", R_BIN_DBG_SYMS & info->dbg_info, mode, false);
720+
pair_bool ("pic", info->has_pi, mode, false);
708721
pair_bool ("relocs", R_BIN_DBG_RELOCS & info->dbg_info, mode, false);
709-
pair_str ("rpath", info->rpath, mode, false);
710-
pair_int ("binsz", r_bin_get_size (r->bin), mode, false);
711-
pair_str ("compiled", compiled, mode, false);
712-
tmp_buf = r_str_escape (info->debug_file_name);
713-
pair_str ("dbg_file", tmp_buf, mode, false);
714-
free (tmp_buf);
715-
if (info->claimed_checksum) {
716-
/* checksum specified in header */
717-
pair_str ("hdr.csum", info->claimed_checksum, mode, false);
718-
}
719-
if (info->actual_checksum) {
720-
/* computed checksum */
721-
pair_str ("cmp.csum", info->actual_checksum, mode, false);
722+
tmp_buf = sdb_get (obj->kv, "elf.relro", 0);
723+
if (tmp_buf) {
724+
pair_str ("relro", tmp_buf, mode, false);
725+
free (tmp_buf);
722726
}
727+
pair_str ("rpath", info->rpath, mode, false);
723728
if (info->rclass && !strcmp (info->rclass, "pe")) {
724-
pair_bool ("overlay", info->pe_overlay, mode, false);
725729
//this should be moved if added to mach0 (or others)
726730
pair_bool ("signed", info->signature, mode, false);
727731
}
728-
732+
pair_bool ("static", r_bin_is_static (r->bin), mode, false);
733+
pair_bool ("stripped", R_BIN_DBG_STRIPPED & info->dbg_info, mode, false);
734+
pair_str ("subsys", info->subsystem, mode, false);
735+
pair_bool ("va", info->has_va, mode, true);
729736
for (i = 0; info->sum[i].type; i++) {
730737
RBinHash *h = &info->sum[i];
731738
ut64 hash = r_hash_name_to_bits (h->type);
@@ -742,7 +749,7 @@ static int bin_info(RCore *r, int mode) {
742749
}
743750
r_cons_newline ();
744751
}
745-
pair_str ("guid", info->guid, mode, true);
752+
746753
if (IS_MODE_JSON (mode)) r_cons_printf ("}");
747754
}
748755
r_core_anal_type_init (r);

libr/core/cmd_info.c

+26-18
Original file line numberDiff line numberDiff line change
@@ -85,13 +85,8 @@ static void r_core_file_info(RCore *core, int mode) {
8585
}
8686
if (info) {
8787
fn = info->file;
88-
switch (mode) {
89-
case R_CORE_BIN_JSON:
88+
if (mode == R_CORE_BIN_JSON) {
9089
r_cons_printf ("\"type\":\"%s\"", STR (info->type));
91-
break;
92-
default:
93-
pair ("type", info->type);
94-
break;
9590
}
9691
} else {
9792
fn = (cf && cf->desc)? cf->desc->name: NULL;
@@ -139,32 +134,44 @@ static void r_core_file_info(RCore *core, int mode) {
139134
r_cons_printf ("}");
140135
} else if (cf && mode != R_CORE_BIN_SIMPLE) {
141136
//r_cons_printf ("# Core file info\n");
142-
pair ("file", fn? fn: cf->desc->uri);
143137
if (dbg) {
144138
dbg = R_IO_WRITE | R_IO_EXEC;
145139
}
146140
if (cf->desc) {
147-
ut64 fsz = r_io_desc_size (core->io, cf->desc);
148-
if (cf->desc->referer && *cf->desc->referer) {
149-
pair ("referer", cf->desc->referer);
150-
}
141+
pair ("blksz", sdb_fmt (0, "0x%"PFMT64x, (ut64) core->io->desc->obsz));
142+
}
143+
pair ("block", sdb_fmt (0, "0x%x", core->blocksize));
144+
if (cf->desc) {
151145
pair ("fd", sdb_fmt (0, "%d", cf->desc->fd));
146+
}
147+
pair ("file", fn? fn: cf->desc->uri);
148+
if (plugin) {
149+
pair ("format", plugin->name);
150+
}
151+
if (cf->desc) {
152152
if (fsz != UT64_MAX) {
153153
pair ("size", sdb_fmt (0,"0x%"PFMT64x, fsz));
154154
pair ("humansz", r_num_units (NULL, fsz));
155155
}
156-
pair ("iorw", r_str_bool ( io_cache ||\
157-
cf->desc->flags & R_IO_WRITE ));
156+
pair ("iorw", r_str_bool (io_cache || cf->desc->flags & R_IO_WRITE ));
158157
pair ("blksz", sdb_fmt (0, "0x%"PFMT64x,
159158
(ut64) core->io->desc->obsz));
160159
pair ("mode", r_str_rwx_i (cf->desc->flags & 7));
161160
}
162-
pair ("block", sdb_fmt (0, "0x%x", core->blocksize));
163161
if (binfile && binfile->curxtr) {
164162
pair ("packet", binfile->curxtr->name);
165163
}
166-
if (plugin) {
167-
pair ("format", plugin->name);
164+
if (cf->desc && cf->desc->referer && *cf->desc->referer) {
165+
pair ("referer", cf->desc->referer);
166+
}
167+
if (cf->desc) {
168+
ut64 fsz = r_io_desc_size (core->io, cf->desc);
169+
if (fsz != UT64_MAX) {
170+
pair ("size", sdb_fmt (0,"0x%"PFMT64x, fsz));
171+
}
172+
}
173+
if (info) {
174+
pair ("type", info->type);
168175
}
169176
}
170177
}
@@ -202,9 +209,10 @@ static void cmd_info_bin(RCore *core, int va, int mode) {
202209
if (obj && bin_is_executable (obj)) {
203210
if ((mode & R_CORE_BIN_JSON)) {
204211
r_cons_printf (",\"bin\":");
212+
} else {
213+
r_cons_printf("\n");
205214
}
206-
r_core_bin_info (core, R_CORE_BIN_ACC_INFO,
207-
mode, va, NULL, NULL);
215+
r_core_bin_info (core, R_CORE_BIN_ACC_INFO, mode, va, NULL, NULL);
208216
}
209217
if (mode == R_CORE_BIN_JSON && array == 0) {
210218
r_cons_printf ("}\n");

0 commit comments

Comments
 (0)