[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