<div dir="ltr"><div dir="ltr">On Thu, Aug 1, 2019 at 8:38 PM Pavel Labath <<a href="mailto:pavel@labath.sk">pavel@labath.sk</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 01/08/2019 14:34, Fangrui Song via lldb-commits wrote:<br>
> Author: maskray<br>
> Date: Thu Aug  1 05:34:43 2019<br>
> New Revision: 367549<br>
> <br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=367549&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=367549&view=rev</a><br>
> Log:<br>
> [lit] Use ld.lld -z separate-code to work around a debug_line parsing bug<br>
> <br>
> The issue was exposed by D64903/r367537.<br>
> <a href="http://lab.llvm.org:8011/builders/lldb-x64-windows-ninja/builds/7321/" rel="noreferrer" target="_blank">http://lab.llvm.org:8011/builders/lldb-x64-windows-ninja/builds/7321/</a><br>
> <br>
> In these tests, .debug_str immediately follows .text.<br>
> The last section of last RX PT_LOAD was originally padded with trap<br>
> instructions and .debug_str started at a new page (actually<br>
> common-page-size). Now, .debug_str immediately follows .test.<br>
> Add -z separate-code to use the old layout.<br>
> <br>
<br>
<br>
Thanks, I was about to commit the same patch.<br>
<br>
For future reference, here is my analysis I was going to put into the <br>
commit message:<br>
<br>
---<br>
The lld patch changed how it lays out data in segments, which was<br>
resulted in the tiny test funclets being at the very end of a PT_LOAD<br>
segment. This exposed a bug where lldb does not correctly handle line<br>
table end-of-sequence entries to the very end of a section (so the byte<br>
they point to does not actually belong to any section).<br>
<br>
This is mostly bening in practice, as the code handling line tables will<br>
terminate as soon as it is not able to resolve an address, which is<br>
something that would happen after reading the end-of-sequence entry<br>
anyway. However, these tests assert that we are actually able to parse<br>
and display the end entry itself, and so they fail.<br>
---<br>
</blockquote></div><div><br></div>Thanks for the enlightening comment! I'll play with it to learn more about the mechanism.<br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr">宋方睿</div></div></div>