Skip to content

[Hexagon] llvm-objdump -D crashes in .debug_info on a Hexagon binary #141740

@alexrp

Description

@alexrp
❯ cat test.c
int main(){}
❯ zig cc test.c -target hexagon-linux # or clang
❯ llvm-objdump --disassemble-all a.out
...snip...
00000000 <.debug_info>:
...snip...
   2ba94:       00 0a b6 01     01b60a00 {      r6 = memw(r19+#0x4);    r0 = memw(r0+#0x28) }
   2ba98:       00 00 8d 72     728d0000 {      r21 = and(r16,#1);      memw(r0+#0x0) = r0 }
   2ba9c:       14 00 0c 0a     0a0c0014 {      r20 = memw(r0+#0x28);   r4 = memw(r1+#0x0) }
   2baa0:       50 00 00 d5     d5000050 {      r0 = memub(r0+#0x5);    memh(r5+#0x0) = r0 }
   2baa4:       a2 00 00 0c     0c0000a2 {      r0 = memw(r0+#0x30);    r2 = memw(r18+#0x0) }
   2baa8:       0e 54 00 00     0000540e <unknown>
   2bab0:       0c b1 a6 02     02a6b10c <unknown>
 #0 0x000075d9cbdc49c0 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/alexrp/Source/llvm-project/llvm/lib/Support/Unix/Signals.inc:803:3
 #1 0x000075d9cbdc21c4 llvm::sys::RunSignalHandlers() /home/alexrp/Source/llvm-project/llvm/lib/Support/Signals.cpp:105:20
 #2 0x000075d9cbdc25bd SignalHandler(int) /home/alexrp/Source/llvm-project/llvm/lib/Support/Unix/Signals.inc:415:1
 #3 0x000075d9ca245810 (/lib/x86_64-linux-gnu/libc.so.6+0x45810)
 #4 0x000075d9ca2a50bc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x000075d9ca2a50bc __pthread_kill_internal ./nptl/pthread_kill.c:89:10
 #6 0x000075d9ca2a50bc pthread_kill ./nptl/pthread_kill.c:100:10
 #7 0x000075d9ca2456de raise ./signal/../sysdeps/posix/raise.c:27:6
 #8 0x000075d9ca2288cd internal_signal_block_all ./stdlib/../sysdeps/unix/sysv/linux/internal-signals.h:81:3
 #9 0x000075d9ca2288cd __abort_lock_wrlock ./stdlib/abort.c:58:3
#10 0x000075d9ca2288cd abort ./stdlib/abort.c:81:3
#11 0x000075d9ca228830 __assert_perror_fail ./assert/assert-perr.c:31:1
#12 0x00006285be4846ee llvm::ArrayRef<unsigned char>::slice(unsigned long, unsigned long) const (.part.0) /home/alexrp/Source/llvm-project/llvm/include/llvm/ADT/ArrayRef.h:198:17
#13 0x00006285be484b37 llvm::SmallVectorTemplateCommon<char const*, void>::operator[](unsigned long) const (/opt/llvm-20/bin/llvm-objdump+0x1ab37)
#14 0x00006285be484b37 llvm::opt::Arg::getValue(unsigned int) const /home/alexrp/Source/llvm-project/llvm/include/llvm/Option/Arg.h:126:20
#15 0x00006285be484b37 llvm::objdump::invalidArgValue(llvm::opt::Arg const*) (.cold) /home/alexrp/Source/llvm-project/llvm/tools/llvm-objdump/llvm-objdump.cpp:3435:51
#16 0x00006285be4b13b5 disassembleObject(llvm::object::ObjectFile&, llvm::object::ObjectFile const&, (anonymous namespace)::DisassemblerTarget&, std::optional<(anonymous namespace)::DisassemblerTarget>&, llvm::objdump::SourcePrinter&, bool) /home/alexrp/Source/llvm-project/llvm/tools/llvm-objdump/llvm-objdump.cpp:2316:44
#17 0x00006285be4b31e7 llvm::objdump::SourcePrinter::~SourcePrinter() /home/alexrp/Source/llvm-project/llvm/tools/llvm-objdump/SourcePrinter.h:161:11
#18 0x00006285be4b31e7 disassembleObject(llvm::object::ObjectFile*, bool) /home/alexrp/Source/llvm-project/llvm/tools/llvm-objdump/llvm-objdump.cpp:2660:1
#19 0x00006285be4b630d dumpObject(llvm::object::ObjectFile*, llvm::object::Archive const*, llvm::object::Archive::Child const*) /home/alexrp/Source/llvm-project/llvm/tools/llvm-objdump/llvm-objdump.cpp:3321:3
#20 0x00006285be4b84c4 dumpInput(llvm::StringRef) /home/alexrp/Source/llvm-project/llvm/tools/llvm-objdump/llvm-objdump.cpp:3403:15
#21 0x00006285be4b9320 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++/14/bits/stl_algo.h:3785:22
#22 0x00006285be4b9320 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/alexrp/Source/llvm-project/llvm/include/llvm/ADT/STLExtras.h:1733:23
#23 0x00006285be4b9320 llvm_objdump_main(int, char**, llvm::ToolContext const&) /home/alexrp/Source/llvm-project/llvm/tools/llvm-objdump/llvm-objdump.cpp:3748:17
#24 0x00006285be486d18 main /home/alexrp/Source/llvm-project/build-20/tools/llvm-objdump/llvm-objdump-driver.cpp:18:1
#25 0x000075d9ca22a338 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#26 0x000075d9ca22a3fb call_init ./csu/../csu/libc-start.c:128:20
#27 0x000075d9ca22a3fb __libc_start_main ./csu/../csu/libc-start.c:347:5
#28 0x00006285be486db5 _start (/opt/llvm-20/bin/llvm-objdump+0x1cdb5)
❯ llvm-objdump --version | head -n2
LLVM (http://llvm.org/):
  LLVM version 20.1.6

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions