-
Notifications
You must be signed in to change notification settings - Fork 15.4k
Closed
Description
With the follow assembly code a.S
.text
.globl add
add:
add r24, r22
adc r25, r23
std Y+36, r20
ret
Build and disassemble
clang a.S --target=avr -mmcu=atmega328 -c
llvm-objdump -d a.o --mcpu=atmega328
Then the following error message rised
a.o: file format elf32-avr
Disassembly of section .text:
00000000 <add>:
0: 86 0f add r24, r22
2: 97 1f adc r25, r23
4: 4c a3 std llvm-objdump: /home/shiben/work/llvm-project/llvm/lib/Target/AVR/MCTargetDesc/AVRInstPrinter.cpp:176: void llvm::AVRInstPrinter::printMemri(const llvm::MCInst*, unsigned int, llvm::raw_ostream&): Assertion `MI->getOperand(OpNo).isReg() && "Expected a register for the first operand"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: ./bin/llvm-objdump -d a.o --mcpu=atmega328
#0 0x00005635b129a3a0 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/shiben/work/llvm-project/llvm/lib/Support/Unix/Signals.inc:565:0
#1 0x00005635b129a457 PrintStackTraceSignalHandler(void*) /home/shiben/work/llvm-project/llvm/lib/Support/Unix/Signals.inc:632:0
#2 0x00005635b129801a llvm::sys::RunSignalHandlers() /home/shiben/work/llvm-project/llvm/lib/Support/Signals.cpp:103:0
#3 0x00005635b1299d21 SignalHandler(int) /home/shiben/work/llvm-project/llvm/lib/Support/Unix/Signals.inc:407:0
#4 0x00007fddad806980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
#5 0x00007fddac6bae87 raise /build/glibc-uZu3wS/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
#6 0x00007fddac6bc7f1 abort /build/glibc-uZu3wS/glibc-2.27/stdlib/abort.c:81:0
#7 0x00007fddac6ac3fa __assert_fail_base /build/glibc-uZu3wS/glibc-2.27/assert/assert.c:89:0
#8 0x00007fddac6ac472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
#9 0x00005635b0de7187 llvm::AVRInstPrinter::printMemri(llvm::MCInst const*, unsigned int, llvm::raw_ostream&) /home/shiben/work/llvm-project/llvm/lib/Target/AVR/MCTargetDesc/AVRInstPrinter.cpp:175:0
#10 0x00005635b0de6212 llvm::AVRInstPrinter::printInstruction(llvm::MCInst const*, unsigned long, llvm::raw_ostream&) /home/shiben/work/llvm-project/build-avr-0/lib/Target/AVR/AVRGenAsmWriter.inc:1083:0
#11 0x00005635b0de6d31 llvm::AVRInstPrinter::printInst(llvm::MCInst const*, unsigned long, llvm::StringRef, llvm::MCSubtargetInfo const&, llvm::raw_ostream&) /home/shiben/work/llvm-project/llvm/lib/Target/AVR/MCTargetDesc/AVRInstPrinter.cpp:84:0
#12 0x00005635b0cb6431 (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/shiben/work/llvm-project/llvm/tools/llvm-objdump/llvm-objdump.cpp:499:0
#13 0x00005635b0cbc2d0 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/shiben/work/llvm-project/llvm/tools/llvm-objdump/llvm-objdump.cpp:1480:0
#14 0x00005635b0cbdd8d disassembleObject(llvm::object::ObjectFile const*, bool) /home/shiben/work/llvm-project/llvm/tools/llvm-objdump/llvm-objdump.cpp:1725:0
#15 0x00005635b0cc324d dumpObject(llvm::object::ObjectFile*, llvm::object::Archive const*, llvm::object::Archive::Child const*) /home/shiben/work/llvm-project/llvm/tools/llvm-objdump/llvm-objdump.cpp:2415:0
#16 0x00005635b0cc3ab5 dumpInput(llvm::StringRef) /home/shiben/work/llvm-project/llvm/tools/llvm-objdump/llvm-objdump.cpp:2495:0
#17 0x00005635b0ceb8f4 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++/7/bits/stl_algo.h:3883:0
#18 0x00005635b0cdf94e 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/shiben/work/llvm-project/llvm/include/llvm/ADT/STLExtras.h:1586:0
#19 0x00005635b0cc5ffe main /home/shiben/work/llvm-project/llvm/tools/llvm-objdump/llvm-objdump.cpp:2782:0
#20 0x00007fddac69dc87 __libc_start_main /build/glibc-uZu3wS/glibc-2.27/csu/../csu/libc-start.c:344:0
#21 0x00005635b0cb4b6a _start (./bin/llvm-objdump+0x1fcb6a)
Aborted (core dumped)