[PATCH] D38363: [dwarfdump] Verify that CUs have a unit DIE.

Jonas Devlieghere via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 28 09:52:33 PDT 2017


Excellent point, we’d need to check that too.

How about “error: CU has no DIE” and “error: Root DIE is not a unit DIE”?

— Jonas

> On Sep 28, 2017, at 5:47 PM, David Blaikie <dblaikie at gmail.com> wrote:
> 
> I think this error might be more general: CU contains no DIEs. This check doesn't verify that the root DIE Is actually a unit DIE (type_unit, compile_unit, or partial_unit).
> 
> Dunno about the best phrasing "unit is empty, does not contain a root unit DIE" or somesuch. That doesn't seem the best phrasing - open to ideas.
> 
> On Thu, Sep 28, 2017 at 8:16 AM Jonas Devlieghere via Phabricator <reviews at reviews.llvm.org <mailto:reviews at reviews.llvm.org>> wrote:
> JDevlieghere created this revision.
> 
> This patch adds a check to the DWARF verifier to detect CUs without a
> unit DIE.
> 
> 
> Repository:
>   rL LLVM
> 
> https://reviews.llvm.org/D38363 <https://reviews.llvm.org/D38363>
> 
> Files:
>   lib/DebugInfo/DWARF/DWARFVerifier.cpp
>   test/tools/llvm-dwarfdump/X86/empty-CU.s
> 
> 
> Index: test/tools/llvm-dwarfdump/X86/empty-CU.s
> ===================================================================
> --- /dev/null
> +++ 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
> Index: lib/DebugInfo/DWARF/DWARFVerifier.cpp
> ===================================================================
> --- lib/DebugInfo/DWARF/DWARFVerifier.cpp
> +++ 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;
>  }
> 
> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170928/3c479af3/attachment.html>


More information about the llvm-commits mailing list