[llvm] r305229 - Fix a null pointer dereference in llvm-pdbutil pretty.
Zachary Turner via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 19 10:00:41 PDT 2017
Because the test that tests everything would have been a superset of this
test, making this redundant. Not a big deal I suppose but that was the
thinking
On Mon, Jun 19, 2017 at 9:57 AM David Blaikie <dblaikie at gmail.com> wrote:
> On Mon, Jun 19, 2017 at 9:53 AM Zachary Turner <zturner at google.com> wrote:
>
>> Yea, i had put this off because i was planning on adding a test where I
>> hand constructed a yaml file that would systematically test every possible
>> symbol. To add a test for this now would require editing some source by
>> hand, compiling with msvc, and checking in the updated pdb in binary. Do
>> you think I should just go ahead and do that, or work on the every symbol
>> test?
>>
>
> Not sure I quite follow - if the YAML based testing can hit this, why
> would it need to wait for a YAML test that tests everything? Could add one
> that tests this then add all the other cases to it in a follow-up?
>
> But if it's coming 'soon', either way's probably OK. Would be good to
> followup on this thread with the revision number of the test case for
> posterity. :)
>
> - Dave
>
>
>> On Mon, Jun 19, 2017 at 9:28 AM David Blaikie <dblaikie at gmail.com> wrote:
>>
>>> Test coverage?
>>>
>>> On Mon, Jun 12, 2017 at 1:47 PM Zachary Turner via llvm-commits <
>>> llvm-commits at lists.llvm.org> wrote:
>>>
>>>> Author: zturner
>>>> Date: Mon Jun 12 15:46:35 2017
>>>> New Revision: 305229
>>>>
>>>> URL: http://llvm.org/viewvc/llvm-project?rev=305229&view=rev
>>>> Log:
>>>> Fix a null pointer dereference in llvm-pdbutil pretty.
>>>>
>>>> Static data members were causing a problem because I mistakenly
>>>> assumed all members would affect a class's layout and so the
>>>> Layout member would be non-null.
>>>>
>>>> Modified:
>>>> llvm/trunk/lib/DebugInfo/PDB/UDTLayout.cpp
>>>> llvm/trunk/tools/llvm-pdbutil/PrettyClassLayoutGraphicalDumper.cpp
>>>>
>>>> Modified: llvm/trunk/lib/DebugInfo/PDB/UDTLayout.cpp
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/UDTLayout.cpp?rev=305229&r1=305228&r2=305229&view=diff
>>>>
>>>> ==============================================================================
>>>> --- llvm/trunk/lib/DebugInfo/PDB/UDTLayout.cpp (original)
>>>> +++ llvm/trunk/lib/DebugInfo/PDB/UDTLayout.cpp Mon Jun 12 15:46:35 2017
>>>> @@ -181,13 +181,14 @@ void UDTLayoutBase::initializeChildren(c
>>>> if (Data->getDataKind() == PDB_DataKind::Member)
>>>> Members.push_back(std::move(Data));
>>>> else
>>>> - Other.push_back(std::move(Child));
>>>> + Other.push_back(std::move(Data));
>>>> } else if (auto VT = unique_dyn_cast<PDBSymbolTypeVTable>(Child))
>>>> VTables.push_back(std::move(VT));
>>>> else if (auto Func = unique_dyn_cast<PDBSymbolFunc>(Child))
>>>> Funcs.push_back(std::move(Func));
>>>> - else
>>>> + else {
>>>> Other.push_back(std::move(Child));
>>>> + }
>>>> }
>>>>
>>>> // We don't want to have any re-allocations in the list of bases, so
>>>> make
>>>>
>>>> Modified:
>>>> llvm/trunk/tools/llvm-pdbutil/PrettyClassLayoutGraphicalDumper.cpp
>>>> URL:
>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-pdbutil/PrettyClassLayoutGraphicalDumper.cpp?rev=305229&r1=305228&r2=305229&view=diff
>>>>
>>>> ==============================================================================
>>>> --- llvm/trunk/tools/llvm-pdbutil/PrettyClassLayoutGraphicalDumper.cpp
>>>> (original)
>>>> +++ llvm/trunk/tools/llvm-pdbutil/PrettyClassLayoutGraphicalDumper.cpp
>>>> Mon Jun 12 15:46:35 2017
>>>> @@ -151,21 +151,21 @@ bool PrettyClassLayoutGraphicalDumper::s
>>>> }
>>>>
>>>> void PrettyClassLayoutGraphicalDumper::dump(const PDBSymbolData
>>>> &Symbol) {
>>>> - assert(CurrentItem != nullptr);
>>>> -
>>>> - DataMemberLayoutItem &Layout =
>>>> - static_cast<DataMemberLayoutItem &>(*CurrentItem);
>>>> -
>>>> VariableDumper VarDumper(Printer);
>>>> VarDumper.start(Symbol, ClassOffsetZero);
>>>>
>>>> - if (Layout.hasUDTLayout() && shouldRecurse()) {
>>>> - uint32_t ChildOffsetZero = ClassOffsetZero +
>>>> Layout.getOffsetInParent();
>>>> - Printer.Indent();
>>>> - PrettyClassLayoutGraphicalDumper TypeDumper(Printer,
>>>> RecursionLevel + 1,
>>>> - ChildOffsetZero);
>>>> - TypeDumper.start(Layout.getUDTLayout());
>>>> - Printer.Unindent();
>>>> + if (CurrentItem != nullptr) {
>>>> + DataMemberLayoutItem &Layout =
>>>> + static_cast<DataMemberLayoutItem &>(*CurrentItem);
>>>> +
>>>> + if (Layout.hasUDTLayout() && shouldRecurse()) {
>>>> + uint32_t ChildOffsetZero = ClassOffsetZero +
>>>> Layout.getOffsetInParent();
>>>> + Printer.Indent();
>>>> + PrettyClassLayoutGraphicalDumper TypeDumper(Printer,
>>>> RecursionLevel + 1,
>>>> + ChildOffsetZero);
>>>> + TypeDumper.start(Layout.getUDTLayout());
>>>> + Printer.Unindent();
>>>> + }
>>>> }
>>>>
>>>> DumpedAnything = true;
>>>>
>>>>
>>>> _______________________________________________
>>>> llvm-commits mailing list
>>>> llvm-commits at lists.llvm.org
>>>> http://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/20170619/fefa45ba/attachment.html>
More information about the llvm-commits
mailing list