If anyone's working on this I'd suggest adding a test case for the "split
code" case as well (where even a single function is split into multiple
ranges). MSVC with PGO should help produce hot/cold cold split repros.

On Thu, May 31, 2018 at 10:24 AM, Greg Clayton via lldb-commits <
lldb-commits@lists.llvm.org> wrote:

>
>
> On May 31, 2018, at 2:31 AM, Aleksandr Urakov via lldb-commits <
> lldb-commits@lists.llvm.org> wrote:
>
> Hello!
>
> I'm Aleksandr from JetBrains. We are working on improving support of
> MSVC-compiled binaries in lldb. We have made several fixes and would like
> to upstream them.
>
> The first patch adds support of function-level linking feature. The
> SymbolFilePDB::ParseCompileUnitLineTable function relies on the fact that
> ranges of compiled source files in the binary are continuous and don't
> intersect with each other. ParseCompileUnitLineTable creates LineSequence
> for each file and inserts it into LineTable, and the implementation of
> LineTable relies on continuity of the sequence. But it's not always true
> when function-level linking is enabled, e.g. in the attached input test
> file test-pdb-function-level-linking.exe there is xstring's
> std__basic_string_char_std__char_traits_char__std__allocator_char_____max_size
> (.00454820) between test-pdb-function-level-linking.cpp's foo (.00454770)
> and main (.004548F0). The source is compiled with Microsoft C/C++ compiler
> version 19.14.26429.4 for x86.
>
> To fix the problem we propose to renew the sequence on each address gap.
>
>
> That is what DWARF does as well. A line table can have many sequences
> where each sequence is a vector of rows whose addresses must always
> increase or stay the same. The line tables we have in LLDB mimic the DWARF
> line tables in many ways.
>
>
>
> The link to the patch and related files is: https://drive.google.com/
> open?id=1ozp06jyqugjLGT-6wuJKS1UhRuXFsixf
>
> Thanks!
>
> --
> Aleksandr Urakov
> Software Developer
> JetBrains
> http://www.jetbrains.com
> The Drive to Develop
> _______________________________________________
> lldb-commits mailing list
> lldb-commits@lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
>
>
>
> _______________________________________________
> lldb-commits mailing list
> lldb-commits@lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
>
>
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to