Page MenuHomePhabricator

[DebugInfo][llvm-dwarfdump] Fix dumping of unit header with DW_UT_partial type

Authored by alok on Apr 25 2021, 7:51 AM.


Currently llvm-dwarfdump crashes for Unit header with DW_UT_partial type.
llvm-dwarfdump: /tmp/llvm/include/llvm/ADT/Optional.h:197: T& llvm::optional_detail::OptionalStorage<T, true>::getValue() &
[with T = long unsigned int]: Assertion `hasVal' failed.
PLEASE submit a bug report to the technical support section of and include the crash backtrace.
Stack dump:
0.      Program arguments: llvm-dwarfdump -v /tmp/test/DebugInfo/X86/Output/dwarfdump-he
 #0 0x00007f37d5ad8838 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /tmp/llvm/lib/Support/Unix/
 #1 0x00007f37d5ad88ef PrintStackTraceSignalHandler(void*) /tmp/llvm/lib/Support/Unix/
 #2 0x00007f37d5ad65bd llvm::sys::RunSignalHandlers() /tmp/llvm/lib/Support/Signals.cpp:71:0
 #3 0x00007f37d5ad81b9 SignalHandler(int) /tmp/llvm/lib/Support/Unix/
 #4 0x00007f37d4c26040 (/lib/x86_64-linux-gnu/
 #5 0x00007f37d4c25fb7 raise /build/glibc-S9d2JN/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
 #6 0x00007f37d4c27921 abort /build/glibc-S9d2JN/glibc-2.27/stdlib/abort.c:81:0
 #7 0x00007f37d4c1748a __assert_fail_base /build/glibc-S9d2JN/glibc-2.27/assert/assert.c:89:0
 #8 0x00007f37d4c17502 (/lib/x86_64-linux-gnu/
 #9 0x00007f37d7576b81 llvm::optional_detail::OptionalStorage<unsigned long, true>::getValue() & /tmp/llvm/include/llvm/ADT/Optional.h:198:0
 #10 0x00007f37d75726ac llvm::Optional<unsigned long>::operator*() && /tmp/llvm/include/llvm/ADT/Optional.h:309:0
 #11 0x00007f37d7582968 llvm::DWARFCompileUnit::dump(llvm::raw_ostream&, llvm::DIDumpOptions) /tmp/llvm/lib/DebugInfo/DWARF/DWARFCompileUnit.cpp:30:0

This was due to tool expecting DW_AT_dwo_id for DW_UT_partial type which should be expected only for DW_UT_skeleton and DW_UT_split_compile. This is fixed now.

Thanks to for providing the fix.

Diff Detail

Event Timeline

alok created this revision.Apr 25 2021, 7:51 AM
alok requested review of this revision.Apr 25 2021, 7:51 AM
Herald added a project: Restricted Project. · View Herald TranscriptApr 25 2021, 7:51 AM
alok updated this revision to Diff 340433.Apr 25 2021, 10:08 PM

Updated to do minor correction in comment of test case.

probinson accepted this revision.Apr 26 2021, 11:21 AM
probinson added a subscriber: probinson.

LGTM. Not sure how we missed partial units the first time around--thanks!

This revision is now accepted and ready to land.Apr 26 2021, 11:21 AM
This revision was landed with ongoing or failed builds.Apr 26 2021, 10:05 PM
This revision was automatically updated to reflect the committed changes.
alok added a comment.Apr 26 2021, 10:11 PM

LGTM. Not sure how we missed partial units the first time around--thanks!

Thanks Paul.