diff --git a/librz/bin/p/bin_elf.c b/librz/bin/p/bin_elf.c index 0fff01c354..3521f65414 100644 --- a/librz/bin/p/bin_elf.c +++ b/librz/bin/p/bin_elf.c @@ -11,6 +11,13 @@ static void headers32(RzBinFile *bf) { p ("0x00000018 Entrypoint 0x%08x\n", rz_buf_read_le32_at (bf->buf, 0x18)); p ("0x0000001c PhOff 0x%08x\n", rz_buf_read_le32_at (bf->buf, 0x1c)); p ("0x00000020 ShOff 0x%08x\n", rz_buf_read_le32_at (bf->buf, 0x20)); + p ("0x00000024 Flags 0x%08x\n", rz_buf_read_le32_at (bf->buf, 0x24)); + p ("0x00000028 EhSize %d\n", rz_buf_read_le16_at (bf->buf, 0x28)); + p ("0x0000002a PhentSize %d\n", rz_buf_read_le16_at (bf->buf, 0x2a)); + p ("0x0000002c PhNum %d\n", rz_buf_read_le16_at (bf->buf, 0x2c)); + p ("0x0000002e ShentSize %d\n", rz_buf_read_le16_at (bf->buf, 0x2e)); + p ("0x00000030 ShNum %d\n", rz_buf_read_le16_at (bf->buf, 0x30)); + p ("0x00000032 ShrStrndx %d\n", rz_buf_read_le16_at (bf->buf, 0x32)); } static bool check_buffer(RzBuffer *buf) { diff --git a/librz/bin/p/bin_elf.inc b/librz/bin/p/bin_elf.inc index bb2221f3cc..5c88d902b0 100644 --- a/librz/bin/p/bin_elf.inc +++ b/librz/bin/p/bin_elf.inc @@ -1184,13 +1184,30 @@ static RzList* fields(RzBinFile *bf) { ROW ("PhOff", 4, rz_buf_read_le32_at (bf->buf, addr), "x"); addr += 0x4; ROW ("ShOff", 4, rz_buf_read_le32_at (bf->buf, addr), "x"); + addr += 0x4; } else { ROW ("Entry point", 8, rz_buf_read_le64_at (bf->buf, addr), "x"); addr += 0x8; ROW ("PhOff", 8, rz_buf_read_le64_at (bf->buf, addr), "x"); addr += 0x8; ROW ("ShOff", 8, rz_buf_read_le64_at (bf->buf, addr), "x"); + addr += 0x8; } + + ROW ("Flags", 4, rz_buf_read_le32_at (bf->buf, addr), "x"); + addr += 0x4; + ROW ("EhSize", 2, rz_buf_read_le16_at (bf->buf, addr), "x"); + addr += 0x2; + ROW ("PhentSize", 2, rz_buf_read_le16_at (bf->buf, addr), "x"); + addr += 0x2; + ROW ("PhNum", 2, rz_buf_read_le16_at (bf->buf, addr), "x"); + addr += 0x2; + ROW ("ShentSize", 2, rz_buf_read_le16_at (bf->buf, addr), "x"); + addr += 0x2; + ROW ("ShNum", 2, rz_buf_read_le16_at (bf->buf, addr), "x"); + addr += 0x2; + ROW ("ShrStrndx", 2, rz_buf_read_le16_at (bf->buf, addr), "x"); + return ret; } diff --git a/librz/bin/p/bin_elf64.c b/librz/bin/p/bin_elf64.c index a809835366..016e30da5b 100644 --- a/librz/bin/p/bin_elf64.c +++ b/librz/bin/p/bin_elf64.c @@ -33,6 +33,13 @@ static void headers64(RzBinFile *bf) { p ("0x00000018 Entrypoint 0x%08"PFMT64x"\n", rz_buf_read_le64_at (bf->buf, 0x18)); p ("0x00000020 PhOff 0x%08"PFMT64x"\n", rz_buf_read_le64_at (bf->buf, 0x20)); p ("0x00000028 ShOff 0x%08"PFMT64x"\n", rz_buf_read_le64_at (bf->buf, 0x28)); + p ("0x00000030 Flags 0x%08x\n", rz_buf_read_le32_at (bf->buf, 0x30)); + p ("0x00000034 EhSize %d\n", rz_buf_read_le16_at (bf->buf, 0x34)); + p ("0x00000036 PhentSize %d\n", rz_buf_read_le16_at (bf->buf, 0x36)); + p ("0x00000038 PhNum %d\n", rz_buf_read_le16_at (bf->buf, 0x38)); + p ("0x0000003a ShentSize %d\n", rz_buf_read_le16_at (bf->buf, 0x3a)); + p ("0x0000003c ShNum %d\n", rz_buf_read_le16_at (bf->buf, 0x3c)); + p ("0x0000003e ShrStrndx %d\n", rz_buf_read_le16_at (bf->buf, 0x3e)); } static RzBuffer* create(RzBin* bin, const ut8 *code, int codelen, const ut8 *data, int datalen, RzBinArchOptions *opt) { diff --git a/test/db/cmd/cmd_i b/test/db/cmd/cmd_i index cff88a9cdd..dace1da23b 100644 --- a/test/db/cmd/cmd_i +++ b/test/db/cmd/cmd_i @@ -98,8 +98,15 @@ EXPECT=<