[llvm-bugs] [Bug 50957] New: llvm-objdump wasm disassembly fails with Assertion `MI->getOperand(TableOperand).getImm() == 0'

via llvm-bugs llvm-bugs at lists.llvm.org
Thu Jul 1 10:50:55 PDT 2021


https://bugs.llvm.org/show_bug.cgi?id=50957

            Bug ID: 50957
           Summary: llvm-objdump wasm disassembly fails with Assertion
                    `MI->getOperand(TableOperand).getImm() == 0'
           Product: tools
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: llvm-objdump
          Assignee: unassignedbugs at nondot.org
          Reporter: adaambenali at gmail.com
                CC: llvm-bugs at lists.llvm.org

Hi,

I'm compiling the following program to wasm and then disassemble it with
llvm-objdump:

int main() {
    int X0 = 11 ;
    X0 = X0 + 2 + 23 + X0 ;
    X0 = 91 + X0 * 2 ;
}

$ clang -g -O0 --target=wasm32-unknown-unknown --no-standard-libraries
-Wl,--no-entry -Wl,--export-all main.c -o main.wasm
$ llvm-objdump -d main.wasm

This fails with Assertion `MI->getOperand(TableOperand).getImm() == 0'

Crash backtrace:

Disassembly of section CODE:

00000000 <CODE>:
        # 3 functions in section.
       1: 02 00         block           unknown_type
       3: 0b            end
       4: 80            i64.div_u
       5: 01            nop
       6: 01            nop
       7: 11 7f 23      call_indirect    llvm-objdump:
/home/adam/code/llvm-project/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyInstPrinter.cpp:71:
virtual void llvm::WebAssemblyInstPrinter::printInst(const llvm::MCInst*,
uint64_t, llvm::StringRef, const llvm::MCSubtargetInfo&, llvm::raw_ostream&):
Assertion `MI->getOperand(TableOperand).getImm() == 0' failed.
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash
backtrace.
Stack dump:
0.      Program arguments: /home/adam/code/llvm-project/build/bin/llvm-objdump
-d /tmp/clang.wasm
 #0 0x00005632787c6796 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int)
/home/adam/code/llvm-project/llvm/lib/Support/Unix/Signals.inc:565:22
 #1 0x00005632787c6851 PrintStackTraceSignalHandler(void*)
/home/adam/code/llvm-project/llvm/lib/Support/Unix/Signals.inc:632:1
 #2 0x00005632787c44bd llvm::sys::RunSignalHandlers()
/home/adam/code/llvm-project/llvm/lib/Support/Signals.cpp:76:20
 #3 0x00005632787c60e2 SignalHandler(int)
/home/adam/code/llvm-project/llvm/lib/Support/Unix/Signals.inc:407:1
 #4 0x00007f9ddeb373c0 __restore_rt
(/lib/x86_64-linux-gnu/libpthread.so.0+0x153c0)
 #5 0x00007f9dde5dc18b raise
/build/glibc-eX1tMB/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
 #6 0x00007f9dde5bb859 abort /build/glibc-eX1tMB/glibc-2.31/stdlib/abort.c:81:7
 #7 0x00007f9dde5bb729 get_sysdep_segment_value
/build/glibc-eX1tMB/glibc-2.31/intl/loadmsgcat.c:509:8
 #8 0x00007f9dde5bb729 _nl_load_domain
/build/glibc-eX1tMB/glibc-2.31/intl/loadmsgcat.c:970:34
 #9 0x00007f9dde5ccf36 (/lib/x86_64-linux-gnu/libc.so.6+0x36f36)
#10 0x0000563278123108 llvm::WebAssemblyInstPrinter::printInst(llvm::MCInst
const*, unsigned long, llvm::StringRef, llvm::MCSubtargetInfo const&,
llvm::raw_ostream&)
/home/adam/code/llvm-project/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyInstPrinter.cpp:73:17
#11 0x0000563277db5dd5 (anonymous
namespace)::PrettyPrinter::printInst(llvm::MCInstPrinter&, llvm::MCInst const*,
llvm::ArrayRef<unsigned char>, llvm::object::SectionedAddress,
llvm::formatted_raw_ostream&, llvm::StringRef, llvm::MCSubtargetInfo const&,
llvm::objdump::SourcePrinter*, llvm::StringRef,
std::vector<llvm::object::RelocationRef,
std::allocator<llvm::object::RelocationRef> >*,
llvm::objdump::LiveVariablePrinter&)
/home/adam/code/llvm-project/llvm/tools/llvm-objdump/llvm-objdump.cpp:494:19
#12 0x0000563277dbb7bf disassembleObject(llvm::Target const*,
llvm::object::ObjectFile const*, llvm::MCContext&, llvm::MCDisassembler*,
llvm::MCDisassembler*, llvm::MCInstrAnalysis const*, llvm::MCInstPrinter*,
llvm::MCSubtargetInfo const*, llvm::MCSubtargetInfo const*, (anonymous
namespace)::PrettyPrinter&, llvm::objdump::SourcePrinter&, bool)
/home/adam/code/llvm-project/llvm/tools/llvm-objdump/llvm-objdump.cpp:1424:24
#13 0x0000563277dbd25a disassembleObject(llvm::object::ObjectFile const*, bool)
/home/adam/code/llvm-project/llvm/tools/llvm-objdump/llvm-objdump.cpp:1669:20
#14 0x0000563277dc1dbb dumpObject(llvm::object::ObjectFile*,
llvm::object::Archive const*, llvm::object::Archive::Child const*)
/home/adam/code/llvm-project/llvm/tools/llvm-objdump/llvm-objdump.cpp:2294:3
#15 0x0000563277dc2604 dumpInput(llvm::StringRef)
/home/adam/code/llvm-project/llvm/tools/llvm-objdump/llvm-objdump.cpp:2374:15
#16 0x0000563277de91d2 void
(*std::for_each<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >*,
std::vector<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > > > >, void
(*)(llvm::StringRef)>(__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >*,
std::vector<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > > > >,
__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >*,
std::vector<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > > > >, void
(*)(llvm::StringRef)))(llvm::StringRef)
/usr/include/c++/9/bits/stl_algo.h:3875:33
#17 0x0000563277ddd2fa void
(*llvm::for_each<std::vector<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > > >&, void
(*)(llvm::StringRef)>(std::vector<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > > >&, void (*)(llvm::StringRef)))(llvm::StringRef)
/home/adam/code/llvm-project/llvm/include/llvm/ADT/STLExtras.h:1529:1
#18 0x0000563277dc49a0 main
/home/adam/code/llvm-project/llvm/tools/llvm-objdump/llvm-objdump.cpp:2650:27
#19 0x00007f9dde5bd0b3 __libc_start_main
/build/glibc-eX1tMB/glibc-2.31/csu/../csu/libc-start.c:342:3
#20 0x0000563277db44fe _start
(/home/adam/code/llvm-project/build/bin/llvm-objdump+0x5c74fe)


$ llvm-objdump --version
LLVM (http://llvm.org/):
  LLVM version 13.0.0git
  DEBUG build with assertions.
  Default target: x86_64-unknown-linux-gnu
  Host CPU: skylake

  Registered Targets:
    aarch64    - AArch64 (little endian)
    aarch64_32 - AArch64 (little endian ILP32)
    aarch64_be - AArch64 (big endian)
    amdgcn     - AMD GCN GPUs
    arm        - ARM
    arm64      - ARM64 (little endian)
    arm64_32   - ARM64 (little endian ILP32)
    armeb      - ARM (big endian)
    avr        - Atmel AVR Microcontroller
    bpf        - BPF (host endian)
    bpfeb      - BPF (big endian)
    bpfel      - BPF (little endian)
    hexagon    - Hexagon
    lanai      - Lanai
    mips       - MIPS (32-bit big endian)
    mips64     - MIPS (64-bit big endian)
    mips64el   - MIPS (64-bit little endian)
    mipsel     - MIPS (32-bit little endian)
    msp430     - MSP430 [experimental]
    nvptx      - NVIDIA PTX 32-bit
    nvptx64    - NVIDIA PTX 64-bit
    ppc32      - PowerPC 32
    ppc32le    - PowerPC 32 LE
    ppc64      - PowerPC 64
    ppc64le    - PowerPC 64 LE
    r600       - AMD GPUs HD2XXX-HD6XXX
    riscv32    - 32-bit RISC-V
    riscv64    - 64-bit RISC-V
    sparc      - Sparc
    sparcel    - Sparc LE
    sparcv9    - Sparc V9
    systemz    - SystemZ
    thumb      - Thumb
    thumbeb    - Thumb (big endian)
    wasm32     - WebAssembly 32-bit
    wasm64     - WebAssembly 64-bit
    x86        - 32-bit X86: Pentium-Pro and above
    x86-64     - 64-bit X86: EM64T and AMD64
    xcore      - XCore

Regards,
Adam Benali

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20210701/9aec5814/attachment.html>


More information about the llvm-bugs mailing list