[llvm] r371510 - Reland [DWARF] Add a unit test for DWARFUnit::getLength().

David Blaikie via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 16 15:08:06 PDT 2019


What was the asan bot failure? What was the fix?

On Tue, Sep 10, 2019 at 4:52 AM Igor Kudrin via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> Author: ikudrin
> Date: Tue Sep 10 04:54:32 2019
> New Revision: 371510
>
> URL: http://llvm.org/viewvc/llvm-project?rev=371510&view=rev
> Log:
> Reland [DWARF] Add a unit test for DWARFUnit::getLength().
>
> This is a follow-up of rL369529, where the return value of
> DWARFUnit::getLength() was changed from uint32_t to uint64_t.
> The test checks that a unit header with Length > 4G can be successfully
> parsed and the value of the Length field is not truncated.
>
> Differential Revision: https://reviews.llvm.org/D67276
>
> Modified:
>     llvm/trunk/unittests/DebugInfo/DWARF/DWARFDebugInfoTest.cpp
>
> Modified: llvm/trunk/unittests/DebugInfo/DWARF/DWARFDebugInfoTest.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/DebugInfo/DWARF/DWARFDebugInfoTest.cpp?rev=371510&r1=371509&r2=371510&view=diff
>
> ==============================================================================
> --- llvm/trunk/unittests/DebugInfo/DWARF/DWARFDebugInfoTest.cpp (original)
> +++ llvm/trunk/unittests/DebugInfo/DWARF/DWARFDebugInfoTest.cpp Tue Sep 10
> 04:54:32 2019
> @@ -3158,4 +3158,46 @@ TEST(DWARFDebugInfo, TestDWARFDieRangeIn
>    AssertRangesIntersect(Ranges, {{0x20, 0x21}, {0x2f, 0x31}});
>  }
>
> +TEST(DWARFDebugInfo, TestDWARF64UnitLength) {
> +  static const char DebugInfoSecRaw[] =
> +      "\xff\xff\xff\xff"                 // DWARF64 mark
> +      "\x88\x77\x66\x55\x44\x33\x22\x11" // Length
> +      "\x05\x00"                         // Version
> +      "\x01"                             // DW_UT_compile
> +      "\x04"                             // Address size
> +      "\0\0\0\0\0\0\0\0";                // Offset Into Abbrev. Sec.
> +  StringMap<std::unique_ptr<MemoryBuffer>> Sections;
> +  Sections.insert(std::make_pair(
> +      "debug_info", MemoryBuffer::getMemBuffer(StringRef(
> +                        DebugInfoSecRaw, sizeof(DebugInfoSecRaw) - 1))));
> +  auto Context = DWARFContext::create(Sections, /* AddrSize = */ 4,
> +                                      /* isLittleEndian = */ true);
> +  const auto &Obj = Context->getDWARFObj();
> +  Obj.forEachInfoSections([&](const DWARFSection &Sec) {
> +    DWARFUnitHeader Header;
> +    DWARFDataExtractor Data(Obj, Sec, /* IsLittleEndian = */ true,
> +                            /* AddressSize = */ 4);
> +    uint64_t Offset = 0;
> +    EXPECT_FALSE(Header.extract(*Context, Data, &Offset));
> +    // Header.extract() returns false because there is not enough space
> +    // in the section for the declared length. Anyway, we can check that
> +    // the properties are read correctly.
> +    ASSERT_EQ(DwarfFormat::DWARF64, Header.getFormat());
> +    ASSERT_EQ(0x1122334455667788ULL, Header.getLength());
> +    ASSERT_EQ(5, Header.getVersion());
> +    ASSERT_EQ(DW_UT_compile, Header.getUnitType());
> +    ASSERT_EQ(4, Header.getAddressByteSize());
> +
> +    // Check that the length can be correctly read in the unit class.
> +    DWARFUnitVector DummyUnitVector;
> +    DWARFSection DummySec;
> +    DWARFCompileUnit CU(*Context, Sec, Header, /* DA = */ 0, /* RS = */ 0,
> +                        /* LocSection = */ 0, /* SS = */ StringRef(),
> +                        /* SOS = */ DummySec, /* AOS = */ 0,
> +                        /* LS = */ DummySec, /* LE = */ true,
> +                        /* isDWO= */ false, DummyUnitVector);
> +    ASSERT_EQ(0x1122334455667788ULL, CU.getLength());
> +  });
> +}
> +
>  } // end anonymous namespace
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190916/dcb74152/attachment.html>


More information about the llvm-commits mailing list