[PATCH] D38363: [dwarfdump] Verify that CUs have a unit DIE.
Adrian Prantl via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 28 09:52:50 PDT 2017
If we want to go further we could also add a check to verify that the unit type specified in the header (does that field exist pre-5?) matches the TAG of the root DIE.
-- adrian
> On Sep 28, 2017, at 9:47 AM, 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/7a2534e9/attachment.html>
More information about the llvm-commits
mailing list