diff options
author | Alon Zakai <azakai@google.com> | 2022-10-07 08:04:37 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-07 08:04:37 -0700 |
commit | d5aa6e7c070a7a14a6eb23edbe6343f6ee638e92 (patch) | |
tree | 123273782f77363c8f927a6458cb45a2123ab050 /src | |
parent | 7fc26f3e78f72ecaa5b79ebe042b95a0be422327 (diff) | |
download | binaryen-d5aa6e7c070a7a14a6eb23edbe6343f6ee638e92.tar.gz binaryen-d5aa6e7c070a7a14a6eb23edbe6343f6ee638e92.tar.bz2 binaryen-d5aa6e7c070a7a14a6eb23edbe6343f6ee638e92.zip |
[DWARF] Warn on unsupport DWARF versions and content (#5120)
Unfortunately there isn't a single place where an error may occur. I tested on
several files with different flags and added sufficient warnings so that we warn
on them all.
Diffstat (limited to 'src')
-rw-r--r-- | src/wasm/wasm-debug.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/wasm/wasm-debug.cpp b/src/wasm/wasm-debug.cpp index 8de691272..3e0749f36 100644 --- a/src/wasm/wasm-debug.cpp +++ b/src/wasm/wasm-debug.cpp @@ -64,6 +64,10 @@ struct BinaryenDWARFInfo { uint8_t addrSize = AddressSize; bool isLittleEndian = true; context = llvm::DWARFContext::create(sections, addrSize, isLittleEndian); + if (context->getMaxVersion() > 4) { + std::cerr << "warning: unsupported DWARF version (" + << context->getMaxVersion() << ")\n"; + } } }; @@ -162,8 +166,8 @@ struct LineState { } default: { // An unknown opcode, ignore. - std::cerr << "warning: unknown subopcopde " << opcode.SubOpcode - << '\n'; + std::cerr << "warning: unknown subopcode " << opcode.SubOpcode + << " (this may be an unsupported version of DWARF)\n"; } } break; @@ -180,7 +184,10 @@ struct LineState { return true; } case llvm::dwarf::DW_LNS_advance_pc: { - assert(table.MinInstLength == 1); + if (table.MinInstLength != 1) { + std::cerr << "warning: bad MinInstLength " + "(this may be an unsupported DWARF version)"; + } addr += opcode.Data; break; } |