summaryrefslogtreecommitdiff
path: root/src/binary-reader-objdump.cc
diff options
context:
space:
mode:
authorSam Clegg <sbc@chromium.org>2020-12-09 22:09:40 -0800
committerGitHub <noreply@github.com>2020-12-09 22:09:40 -0800
commited647324744cbc3da86eb737af4a9d9262314789 (patch)
tree47408a109eb933e9187e62b03a968d63c2a4d3d2 /src/binary-reader-objdump.cc
parent3c4bad02b95e8ef6b4f773647adcbe467cc316f3 (diff)
downloadwabt-ed647324744cbc3da86eb737af4a9d9262314789.tar.gz
wabt-ed647324744cbc3da86eb737af4a9d9262314789.tar.bz2
wabt-ed647324744cbc3da86eb737af4a9d9262314789.zip
wasm-objdump: Report data segment names (#1588)
Also fix ordering of data names and table segment names.
Diffstat (limited to 'src/binary-reader-objdump.cc')
-rw-r--r--src/binary-reader-objdump.cc21
1 files changed, 19 insertions, 2 deletions
diff --git a/src/binary-reader-objdump.cc b/src/binary-reader-objdump.cc
index abc50edb..8fab9724 100644
--- a/src/binary-reader-objdump.cc
+++ b/src/binary-reader-objdump.cc
@@ -250,6 +250,9 @@ class BinaryReaderObjdumpPrepass : public BinaryReaderObjdumpBase {
case NameSectionSubsection::Table:
SetTableName(index, name);
break;
+ case NameSectionSubsection::DataSegment:
+ SetSegmentName(index, name);
+ break;
default:
break;
}
@@ -650,14 +653,28 @@ Result BinaryReaderObjdumpDisassemble::OnOpcodeIndexIndex(Index value,
Result BinaryReaderObjdumpDisassemble::OnOpcodeUint32(uint32_t value) {
Offset immediate_len = state->offset - current_opcode_offset;
- LogOpcode(immediate_len, "%u", value);
+ string_view name;
+ if (current_opcode == Opcode::DataDrop &&
+ !(name = GetSegmentName(value)).empty()) {
+ LogOpcode(immediate_len, "%d <" PRIstringview ">", value,
+ WABT_PRINTF_STRING_VIEW_ARG(name));
+ } else {
+ LogOpcode(immediate_len, "%u", value);
+ }
return Result::Ok;
}
Result BinaryReaderObjdumpDisassemble::OnOpcodeUint32Uint32(uint32_t value,
uint32_t value2) {
Offset immediate_len = state->offset - current_opcode_offset;
- LogOpcode(immediate_len, "%u %u", value, value2);
+ string_view name;
+ if (current_opcode == Opcode::MemoryInit &&
+ !(name = GetSegmentName(value)).empty()) {
+ LogOpcode(immediate_len, "%u %u <" PRIstringview ">", value, value2,
+ WABT_PRINTF_STRING_VIEW_ARG(name));
+ } else {
+ LogOpcode(immediate_len, "%u %u", value, value2);
+ }
return Result::Ok;
}