diff options
Diffstat (limited to 'src/binary-reader-objdump.cc')
-rw-r--r-- | src/binary-reader-objdump.cc | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/binary-reader-objdump.cc b/src/binary-reader-objdump.cc index a28652dd..8b40c2ad 100644 --- a/src/binary-reader-objdump.cc +++ b/src/binary-reader-objdump.cc @@ -169,6 +169,7 @@ class BinaryReaderObjdumpDisassemble : public BinaryReaderObjdumpBase { virtual Result OnOpcode(Opcode Opcode); virtual Result OnOpcodeBare(); + virtual Result OnOpcodeIndex(Index value); virtual Result OnOpcodeUint32(uint32_t value); virtual Result OnOpcodeUint32Uint32(uint32_t value, uint32_t value2); virtual Result OnOpcodeUint64(uint64_t value); @@ -296,6 +297,16 @@ Result BinaryReaderObjdumpDisassemble::OnOpcodeBare() { return Result::Ok; } +Result BinaryReaderObjdumpDisassemble::OnOpcodeIndex(Index value) { + Offset immediate_len = state->offset - current_opcode_offset; + const char *name; + if (current_opcode == Opcode::Call && (name = GetFunctionName(value))) + LogOpcode(data, immediate_len, "%d <%s>", value, name); + else + LogOpcode(data, immediate_len, "%d", value); + return Result::Ok; +} + Result BinaryReaderObjdumpDisassemble::OnOpcodeUint32(uint32_t value) { Offset immediate_len = state->offset - current_opcode_offset; LogOpcode(data, immediate_len, "%#x", value); |