Index: llvm/trunk/lib/DebugInfo/DWARF/DWARFVerifier.cpp =================================================================== --- llvm/trunk/lib/DebugInfo/DWARF/DWARFVerifier.cpp +++ llvm/trunk/lib/DebugInfo/DWARF/DWARFVerifier.cpp @@ -179,9 +179,14 @@ } } - DieRangeInfo RI; - DWARFDie Die = Unit.getUnitDIE(/* ExtractUnitDIEOnly = */ false); - NumUnitErrors += verifyDieRanges(Die, RI); + if (DWARFDie Die = Unit.getUnitDIE(/* ExtractUnitDIEOnly = */ false)) { + DieRangeInfo RI; + NumUnitErrors += verifyDieRanges(Die, RI); + } else { + OS << "error: Compilation unit without unit DIE.\n"; + NumUnitErrors++; + } + return NumUnitErrors == 0; } Index: llvm/trunk/test/tools/llvm-dwarfdump/X86/empty-CU.s =================================================================== --- llvm/trunk/test/tools/llvm-dwarfdump/X86/empty-CU.s +++ llvm/trunk/test/tools/llvm-dwarfdump/X86/empty-CU.s @@ -0,0 +1,21 @@ +# RUN: llvm-mc %s -filetype obj -triple x86_64-apple-darwin -o - \ +# RUN: | not llvm-dwarfdump --verify --debug-info - \ +# RUN: | FileCheck %s +# CHECK: error: Compilation unit without unit DIE. + + .section __DWARF,__debug_info,regular,debug +.long 8 # CU length +.short 3 # Version +.long 0 # Abbrev offset +.byte 4 # AddrSize +.byte 1 # Abbrev 1 +.long 7 # Unit lengthh... +.short 3 +.long 0 +.byte 4 + .section __DWARF,__debug_abbrev,regular,debug +.byte 1 # Abbrev code +.byte 0x11 # TAG_compile_unit +.byte 0 # no children +.byte 0 # no attributes +.byte 0