Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Failed to lift simple ARM binary #187

Open
Silipwn opened this issue Nov 22, 2022 · 1 comment
Open

Failed to lift simple ARM binary #187

Silipwn opened this issue Nov 22, 2022 · 1 comment
Labels
ARM Relates to raising ARM binaries

Comments

@Silipwn
Copy link

Silipwn commented Nov 22, 2022

Hello,
I was trying to lift a simple ARM binary, but mctoll crashes with Assertion Failure.

Error:

llvm-mctoll: /mnt/data/silipwn/llvm-project/llvm/include/llvm/MC/MCInstrInfo.h:64: const llvm::MCInstrDesc& llvm::MCInstrInfo::get(unsigned int) const: Assertion `Opcode < NumOpcodes && "Invalid opcode!"' failed.

Stack trace

Stack dump:
0.      Program arguments: llvm-mctoll -d hello_test_arm
 #0 0x000055bb62146ddc llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /mnt/data/silipwn/llvm-project/llvm/lib/Support/Unix/Signals.inc:573:0
 #1 0x000055bb62144e74 llvm::sys::RunSignalHandlers() /mnt/data/silipwn/llvm-project/llvm/lib/Support/Signals.cpp:103:0
 #2 0x000055bb6214557e SignalHandler(int) /mnt/data/silipwn/llvm-project/llvm/lib/Support/Unix/Signals.inc:397:0
 #3 0x00007f73700ec980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
 #4 0x00007f736ed19e87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #5 0x00007f736ed1b7f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
 #6 0x00007f736ed0b3fa __assert_fail_base /build/glibc-CVJwZb/glibc-2.27/assert/assert.c:89:0
 #7 0x00007f736ed0b472 (/lib/x86_64-linux-gnu/libc.so.6+0x30472)
 #8 0x000055bb61922137 llvm::MachineOperand::getImm() const /mnt/data/silipwn/llvm-project/llvm/include/llvm/CodeGen/MachineOperand.h:547:0
 #9 0x000055bb61922137 llvm::getAddressFromInstr(llvm::MachineInstr const*, unsigned int) (.part.114) /mnt/data/silipwn/llvm-project/llvm/lib/Target/X86/X86InstrBuilder.h:114:0
#10 0x000055bb626bddd5 llvm::MachineFunction::getBlockNumbered(unsigned int) const /mnt/data/silipwn/llvm-project/llvm/include/llvm/CodeGen/MachineFunction.h:789:0
#11 0x000055bb626bddd5 llvm::mctoll::MCInstRaiser::buildCFG(llvm::MachineFunction&, llvm::MCInstrAnalysis const*, llvm::MCInstrInfo const*) /mnt/data/silipwn/llvm-project/llvm/tools/llvm-mctoll/Raiser/MCInstRaiser.cpp:167:0
#12 0x000055bb626bf29a llvm::mctoll::ModuleRaiser::runMachineFunctionPasses() /mnt/data/silipwn/llvm-project/llvm/tools/llvm-mctoll/Raiser/ModuleRaiser.cpp:191:0
#13 0x000055bb619c81df disassembleObject(llvm::object::ObjectFile const*, bool) (.constprop.604) /mnt/data/silipwn/llvm-project/llvm/tools/llvm-mctoll/llvm-mctoll.cpp:1281:0
#14 0x000055bb61974eef llvm::Expected<llvm::object::OwningBinary<llvm::object::Binary>>::assertIsChecked() const /mnt/data/silipwn/llvm-project/llvm/include/llvm/Support/Error.h:713:0
#15 0x000055bb61974eef llvm::Expected<llvm::object::OwningBinary<llvm::object::Binary>>::~Expected() /mnt/data/silipwn/llvm-project/llvm/include/llvm/Support/Error.h:551:0
#16 0x000055bb61974eef dumpInput /mnt/data/silipwn/llvm-project/llvm/tools/llvm-mctoll/llvm-mctoll.cpp:1406:0
#17 0x000055bb61974eef 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:3884:0
#18 0x000055bb61974eef main /mnt/data/silipwn/llvm-project/llvm/tools/llvm-mctoll/llvm-mctoll.cpp:1590:0
#19 0x00007f736ecfcc87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
#20 0x000055bb619b85ba _start (/mnt/data/silipwn/llvm-project/build/bin/llvm-mctoll+0x7665ba)

The binary is also attached
crash.zip

The binary was compiled in a Ubuntu Bionic docker container, with gcc-arm-linux-gnueabi and gcc-multilib

@bharadwajy bharadwajy added the ARM Relates to raising ARM binaries label Nov 28, 2022
@bharadwajy
Copy link
Contributor

Thanks for the bug report. Added appropriate tag and will look at it. As always, any help is welcome.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ARM Relates to raising ARM binaries
Projects
None yet
Development

No branches or pull requests

2 participants