<div dir="ltr">Thanks Sri.<br><br>I've sent out
<p class="gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span class="gmail-s1" style="font-variant-ligatures:no-common-ligatures"><a href="https://reviews.llvm.org/D94063">https://reviews.llvm.org/D94063</a> and </span><span style="font-variant-ligatures:no-common-ligatures"><a href="https://reviews.llvm.org/D94064">https://reviews.llvm.org/D94064</a> for review, which include fixes for the lldb+ranges-on-subprograms issues I could find so far.</span></p>
</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Dec 30, 2020 at 6:53 PM Sriraman Tallam <<a href="mailto:tmsriram@google.com">tmsriram@google.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Dec 29, 2020 at 4:44 PM Sriraman Tallam <<a href="mailto:tmsriram@google.com" target="_blank">tmsriram@google.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Dec 29, 2020 at 2:06 PM David Blaikie <<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Dec 23, 2020 at 7:02 PM Sriraman Tallam <<a href="mailto:tmsriram@google.com" target="_blank">tmsriram@google.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Dec 23, 2020 at 4:46 PM David Blaikie <<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hey folks,<br><br>So I've been doing some more testing/implementation work on various address pool reduction strategies previously discussed back in January ( <a href="http://lists.llvm.org/pipermail/llvm-dev/2020-January/thread.html#138029" target="_blank">http://lists.llvm.org/pipermail/llvm-dev/2020-January/thread.html#138029</a> ).<br><br>I've committed a -mllvm flag to allow experimenting with the first of these strategies: Always using ranges in DWARFv5 (the flag has no effect pre-v5). Since ranges can use address pool entries, this allows significant address reuse (clang opt split-dwarf 13% reduction in object file size, specifically a reduction in aggregate .rela.debug_addr size from 78MB to 16MB - the lowest this could go is approximately 8MB (this is the size of .rela.debug_line)).<br><br>It causes one lldb test to fail lldb/test/SymbolFile/DWARF/Output/debug-types-expressions.test which reveals that lldb has some trouble with ranges on DW_TAG_subprograms.<br><br>Anyone happen to have ideas about what the problem might be? Anyone interested in fixing this? (Jordan, maybe?) <br><br>Sri: Sounded like you folks had done some testing of Propeller with lldb - and I'd expect it to trip over this same problem, since it'll cause ranges to be used for DW_TAG_subprograms to an even greater degree. Have you come across anything like this? <br></div></blockquote><div><br></div><div>Not sure David. I think you tested basic block sections for v5 a while back.</div></div></div></blockquote><div><br>I'd looked at the DWARF being well-formed & for the most part efficient as it can be, given the nature of Basic Block Sections - but I haven't done any debugger testing with it.<br><br>You mentioned gdb might already be pretty well setup for functions that are split into multiple chunks because GCC does this under some circumstances?<br><br>But it looks like lldb might not be so well situated.<br> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div> How do I test if this breaks with bbsections?</div></div></div></blockquote><div><br>Test printing out the value of a variable in a function with more than one section, eg:<br><br>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">$ ~/dev/llvm/build/default/bin/lldb ./b</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">(lldb) target create "./b"</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">Current executable set to '/usr/local/google/home/blaikie/dev/scratch/b' (x86_64).</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(116,116,116)"><span style="font-variant-ligatures:no-common-ligatures">(lldb) </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">b main</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">Breakpoint 1: where = b`main + 15, address = 0x000000000040112f</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(116,116,116)"><span style="font-variant-ligatures:no-common-ligatures">(lldb) </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">start</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(202,51,35)"><b>error: </b></span><span style="font-variant-ligatures:no-common-ligatures">'start' is not a valid command.</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(116,116,116)"><span style="font-variant-ligatures:no-common-ligatures">(lldb) </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">r</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">Process 1827628 launched: '/usr/local/google/home/blaikie/dev/scratch/b' (x86_64)</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">Process 1827628 stopped</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">* thread #1, name = 'b', stop reason = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(202,51,35)">breakpoint 1.1</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures"><span> </span>frame #0: </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)">0x000000000040112f</span><span style="font-variant-ligatures:no-common-ligatures"> b`main at </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(56,185,199)">test.cpp</span><span style="font-variant-ligatures:no-common-ligatures">:</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)">5</span><span style="font-variant-ligatures:no-common-ligatures">:</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)">7</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)"><span> </span></span><span style="font-variant-ligatures:no-common-ligatures"> 2<span> </span></span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(57,192,38)">int</span><span style="font-variant-ligatures:no-common-ligatures"> j = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(202,51,35)">12</span><span style="font-variant-ligatures:no-common-ligatures">;</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)"><span> </span></span><span style="font-variant-ligatures:no-common-ligatures"> 3<span> </span>}</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)"><span> </span></span><span style="font-variant-ligatures:no-common-ligatures"> 4<span> </span></span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(57,192,38)">int</span><span style="font-variant-ligatures:no-common-ligatures"> main() {</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)">-></span><span style="font-variant-ligatures:no-common-ligatures"> 5<span> </span></span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(57,192,38)">int</span><span style="font-variant-ligatures:no-common-ligatures"> </span><span style="text-decoration-line:underline;font-variant-ligatures:no-common-ligatures">i</span><span style="font-variant-ligatures:no-common-ligatures"> = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(202,51,35)">7</span><span style="font-variant-ligatures:no-common-ligatures">;</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)"><span> </span></span><span style="font-variant-ligatures:no-common-ligatures"> 6<span> </span></span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(57,192,38)">if</span><span style="font-variant-ligatures:no-common-ligatures"> (i)</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)"><span> </span></span><span style="font-variant-ligatures:no-common-ligatures"> 7<span> </span>f1();</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)"><span> </span></span><span style="font-variant-ligatures:no-common-ligatures"> 8<span> </span>}</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(116,116,116)"><span style="font-variant-ligatures:no-common-ligatures">(lldb) </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">p i</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">error: <user expression 0>:1:1: use of undeclared identifier 'i'</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">i</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">^</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(116,116,116)"><span style="font-variant-ligatures:no-common-ligatures">(lldb) </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">^D</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">$ clang++-tot test.cpp -g -o b</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">$ ~/dev/llvm/build/default/bin/lldb ./b</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">(lldb) target create "./b"</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">Current executable set to '/usr/local/google/home/blaikie/dev/scratch/b' (x86_64).</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(116,116,116)"><span style="font-variant-ligatures:no-common-ligatures">(lldb) </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">b main</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">Breakpoint 1: where = b`main + 15 at test.cpp:5:7, address = 0x000000000040112f</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(116,116,116)"><span style="font-variant-ligatures:no-common-ligatures">(lldb) </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">r</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">Process 1828108 launched: '/usr/local/google/home/blaikie/dev/scratch/b' (x86_64)</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">p i</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">Process 1828108 stopped</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">* thread #1, name = 'b', stop reason = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(202,51,35)">breakpoint 1.1</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures"><span> </span>frame #0: </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)">0x000000000040112f</span><span style="font-variant-ligatures:no-common-ligatures"> b`main at </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(56,185,199)">test.cpp</span><span style="font-variant-ligatures:no-common-ligatures">:</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)">5</span><span style="font-variant-ligatures:no-common-ligatures">:</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)">7</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)"><span> </span></span><span style="font-variant-ligatures:no-common-ligatures"> 2<span> </span></span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(57,192,38)">int</span><span style="font-variant-ligatures:no-common-ligatures"> j = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(202,51,35)">12</span><span style="font-variant-ligatures:no-common-ligatures">;</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)"><span> </span></span><span style="font-variant-ligatures:no-common-ligatures"> 3<span> </span>}</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)"><span> </span></span><span style="font-variant-ligatures:no-common-ligatures"> 4<span> </span></span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(57,192,38)">int</span><span style="font-variant-ligatures:no-common-ligatures"> main() {</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)">-></span><span style="font-variant-ligatures:no-common-ligatures"> 5<span> </span></span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(57,192,38)">int</span><span style="font-variant-ligatures:no-common-ligatures"> </span><span style="text-decoration-line:underline;font-variant-ligatures:no-common-ligatures">i</span><span style="font-variant-ligatures:no-common-ligatures"> = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(202,51,35)">7</span><span style="font-variant-ligatures:no-common-ligatures">;</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)"><span> </span></span><span style="font-variant-ligatures:no-common-ligatures"> 6<span> </span></span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(57,192,38)">if</span><span style="font-variant-ligatures:no-common-ligatures"> (i)</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)"><span> </span></span><span style="font-variant-ligatures:no-common-ligatures"> 7<span> </span>f1();</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)"><span> </span></span><span style="font-variant-ligatures:no-common-ligatures"> 8<span> </span>}</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(116,116,116)"><span style="font-variant-ligatures:no-common-ligatures">(lldb) </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">p i</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">(int) $0 = 0</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(116,116,116)"><span style="font-variant-ligatures:no-common-ligatures">(lldb) </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">^D</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(57,192,38)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">$ cat test.cpp</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">void f1() {</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures"><span> </span>int j = 12;</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">}</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">int main() {</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures"><span> </span>int i = 7;</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures"><span> </span>if (i)</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures"><span> </span>f1();</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">}<br><br>So, yeah, seems like DW_AT_ranges on a DW_TAG_subprogram is a bit buggy with lldb & that'll need to be fixed for Propeller to be usable with lldb. For my "ranges everywhere" feature - nice to fix, but given we/Google/my use case uses -ffunction-sections, subprogram ranges don't actually ever get used in that situation (since every function starts at a new relocated address - subprogram address ranges can't share address pool entries anyway - so they never get DW_AT_ranges in this case), so I could tweak ranges-everywhere to not apply to subprogram ranges for now to keep it more usable/unsurprising.</span></p> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div> I can give you a simple program with bb sections that would create a lot of ranges. Any pointers? My understanding of DWARF v5 is near zero so please bear with me. Thanks.</div></div></div></blockquote><div><br>This applies to DWARFv4 as well, as shown above - sorry for the confusion there. I happened to be experimenting with DWARFv5 range features - but it shows lldb has some problems with ranges on subprograms in general (& even if the ranges only contains a single range (expressed with a range list, rather than with low/high pc) it still breaks)<br></div></div></div></blockquote></div></div></div></div></blockquote><div><br></div><div><br></div><div>Just one more data point regarding gcc which uses DW_AT_ranges even with DW_TAG_subprogram as it independently implements the function splitting feature we did in LLVM. Here is how to generate this with gcc:</div><div><br></div><div>#include <stdio.h><br>const int LOOP_BOUND = 200000000;<br>__attribute__((noinline))<br>static int work(bool b) {<br> if (b) {<br> for (int i=0; i<LOOP_BOUND; ++i) {<br> printf("Hot\n");<br> }<br> } else {<br> for (int i=0; i<LOOP_BOUND; ++i) {<br> printf("Cold\n");<br> }<br> }<br> return 0;<br>}<br>int main(int argc, char* argv[]) {<br> int result = work((argc > 3));<br> return result;<br>}<br></div><div><br></div><div>$ g++ -O2 gccsplit.cc -fprofile-generate</div><div>$ ./a.out > /dev/null</div><div>$ ls *.gcda</div><div>$ g++ -O2 gccsplit.cc -freorder-blocks-and-partition -g -fprofile-use -c</div><div>$ llvm-dwarfdump gccsplit.o</div><div><br></div><div>0x000000ff: DW_TAG_subprogram<br> DW_AT_name ("work")<br> DW_AT_decl_file ("gccsplit.cc")<br> DW_AT_decl_line (5)<br> DW_AT_decl_column (0x0c)<br> DW_AT_type (0x00000053 "int")<br> DW_AT_ranges (0x00000000<br> [0x0000000000000000, 0x000000000000006b)<br> [0x0000000000000000, 0x000000000000001e))<br> DW_AT_frame_base (DW_OP_call_frame_cfa)<br> DW_AT_GNU_all_call_sites (true)<br> DW_AT_sibling (0x00000234)<br></div><div><br></div><div><br></div><div>This is also exactly how LLVM splits functions and generates debug info. Probably explains why gdb is able to work with this example.</div><div><br></div><div>Thanks</div><div>Sri</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><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"><div dir="ltr"><div class="gmail_quote"><div></div></div></div></blockquote><div><br></div><div>Thanks David, so I tried this slightly more complicated program with bbsections on LLDB and GDB. TLDR; This seems like a LLDB bug and seems fine with GDB. </div><div><br></div><div>I used a slightly modified example and split the bb sections to be discontiguous FWIW.</div><div><br></div><div><div>inline __attribute__((noinline)) void f1(int j) {}</div><div>int main() {</div><div> int i = 7;</div><div> if (i) {</div><div> int j = 8;</div><div> f1(j);</div><div> }</div><div>}</div></div><div><br></div><div>$ cat syms.txt</div><div><div>main.__part.1</div><div>_start</div><div>main</div><div>_Z2f1i</div><div>main.__part.2</div></div><div><br></div><div>$ /g/tmsriram/Projects_2019/llvm_trunk_upstream/release_build/bin/clang++ -fbasic-block-sections=all -g test.cc -O0 -Wl,--symbol-ordering-file=syms.txt -fuse-ld=lld</div><div>$ nm -n a.out</div><div>0000000000201640 t main.__part.1<br>0000000000201660 T _start<br>0000000000201690 t _dl_relocate_static_pie<br>00000000002016a0 T main<br>00000000002016d0 W _Z2f1i<br>00000000002016d9 t main.__part.2<br></div><div><br></div><div>$ gdb ./a.out</div><div><br></div><div>(gdb) b main<br>Breakpoint 1 at 0x201647: main. (2 locations)<br>(gdb) r<br>Starting program: /g/tmsriram/Projects_2019/github_repo/Examples/bbsections_bug/a.out <br><br>Breakpoint 1, main () at test.cc:2<br>2 int main() {<br>...<br>(gdb) n<br>4 if (i) {<br>(gdb) p i<br>$3 = 7<br>(gdb) n<br>5 int j = 8;<br>(gdb) p j<br>$4 = 32767<br>(gdb) n<br>Breakpoint 1, main () at test.cc:6<br>6 f1(j);<br>(gdb) p j<br>$5 = 8<br></div><div><br></div><div>lldb fails like how you said.</div><div><br></div><div>Thanks</div><div>Sri</div><div><br></div><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><br>Here's a small example:<br><br>(the test has an inline function to force the output file to have more than one section (otherwise it'll all be in the text section, the CU's low_pc will be relocatable and all the other addresses will be relative to that - so there won't be any benefit to using ranges) and 'main' is the second function, so it starts at an offset relative to the address in the address pool (which will be f2's starting address) and benefit from using ranges to share that address)<br><br>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">$ cat test.cpp</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">inline __attribute__((noinline)) void f1() { }</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">void f2() {</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">}</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">int main() {</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures"><span> </span>int i = 7;</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures"><span> </span>f1();</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">}<br>$</span><span style="font-variant-ligatures:no-common-ligatures"> ~/dev/llvm/build/default/bin/lldb ./a</span><span style="font-variant-ligatures:no-common-ligatures"> </span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">(lldb) target create "./a"</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">Current executable set to '/usr/local/google/home/blaikie/dev/scratch/always_ranges/a' (x86_64).</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(116,116,116)"><span style="font-variant-ligatures:no-common-ligatures">(lldb) </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">b main</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">Breakpoint 1: where = a`main + 8 at test.cpp:5:7, address = 0x0000000000401128</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(116,116,116)"><span style="font-variant-ligatures:no-common-ligatures">(lldb) </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">r</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">Process 2271305 launched: '/usr/local/google/home/blaikie/dev/scratch/always_ranges/a' (x86_64)</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">p iProcess 2271305 stopped</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">* thread #1, name = 'a', stop reason = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(202,51,35)">breakpoint 1.1</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures"><span> </span>frame #0: </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)">0x0000000000401128</span><span style="font-variant-ligatures:no-common-ligatures"> a`main at </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(56,185,199)">test.cpp</span><span style="font-variant-ligatures:no-common-ligatures">:</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)">5</span><span style="font-variant-ligatures:no-common-ligatures">:</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)">7</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)"><span> </span></span><span style="font-variant-ligatures:no-common-ligatures"> 2<span> </span></span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(57,192,38)">void</span><span style="font-variant-ligatures:no-common-ligatures"> f2() {</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)"><span> </span></span><span style="font-variant-ligatures:no-common-ligatures"> 3<span> </span>}</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)"><span> </span></span><span style="font-variant-ligatures:no-common-ligatures"> 4<span> </span></span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(57,192,38)">int</span><span style="font-variant-ligatures:no-common-ligatures"> main() {</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)">-></span><span style="font-variant-ligatures:no-common-ligatures"> 5<span> </span></span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(57,192,38)">int</span><span style="font-variant-ligatures:no-common-ligatures"> </span><span style="text-decoration-line:underline;font-variant-ligatures:no-common-ligatures">i</span><span style="font-variant-ligatures:no-common-ligatures"> = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(202,51,35)">7</span><span style="font-variant-ligatures:no-common-ligatures">;</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)"><span> </span></span><span style="font-variant-ligatures:no-common-ligatures"> 6<span> </span>f1();</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)"><span> </span></span><span style="font-variant-ligatures:no-common-ligatures"> 7<span> </span>}</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(116,116,116)"><span style="font-variant-ligatures:no-common-ligatures">(lldb) </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">p i</span></p>
<p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">(int) $0 = 0<br>
</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">$ ~/dev/llvm/build/default/bin/lldb ./b</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">(lldb) target create "./b"</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">Current executable set to '/usr/local/google/home/blaikie/dev/scratch/always_ranges/b' (x86_64).</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(116,116,116)"><span style="font-variant-ligatures:no-common-ligatures">(lldb) </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">b main</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">Breakpoint 1: where = b`main + 8, address = 0x0000000000401128</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(116,116,116)"><span style="font-variant-ligatures:no-common-ligatures">(lldb) </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">r</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">Process 2271759 launched: '/usr/local/google/home/blaikie/dev/scratch/always_ranges/b' (x86_64)</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">Process 2271759 stopped</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">* thread #1, name = 'b', stop reason = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(202,51,35)">breakpoint 1.1</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures"><span> </span>frame #0: </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)">0x0000000000401128</span><span style="font-variant-ligatures:no-common-ligatures"> b`main at </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(56,185,199)">test.cpp</span><span style="font-variant-ligatures:no-common-ligatures">:</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)">5</span><span style="font-variant-ligatures:no-common-ligatures">:</span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)">7</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)"><span> </span></span><span style="font-variant-ligatures:no-common-ligatures"> 2<span> </span></span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(57,192,38)">void</span><span style="font-variant-ligatures:no-common-ligatures"> f2() {</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)"><span> </span></span><span style="font-variant-ligatures:no-common-ligatures"> 3<span> </span>}</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)"><span> </span></span><span style="font-variant-ligatures:no-common-ligatures"> 4<span> </span></span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(57,192,38)">int</span><span style="font-variant-ligatures:no-common-ligatures"> main() {</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)">-></span><span style="font-variant-ligatures:no-common-ligatures"> 5<span> </span></span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(57,192,38)">int</span><span style="font-variant-ligatures:no-common-ligatures"> </span><span style="text-decoration-line:underline;font-variant-ligatures:no-common-ligatures">i</span><span style="font-variant-ligatures:no-common-ligatures"> = </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(202,51,35)">7</span><span style="font-variant-ligatures:no-common-ligatures">;</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)"><span> </span></span><span style="font-variant-ligatures:no-common-ligatures"> 6<span> </span>f1();</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures;color:rgb(170,171,37)"><span> </span></span><span style="font-variant-ligatures:no-common-ligatures"> 7<span> </span>}</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(116,116,116)"><span style="font-variant-ligatures:no-common-ligatures">(lldb) </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)">p i</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">error: <user expression 0>:1:1: use of undeclared identifier 'i'</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">i</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">
</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">^<br>
</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">$ diff <(llvm-dwarfdump-tot a | sed -e "s/0x[0-9a-f]\{8\}//g") <(llvm-dwarfdump-tot b | sed -e "s/0x[0-9a-f]\{8\}//g")</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">1c1</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">< a:<span> </span>file format elf64-x86-64</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">---</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">> b:<span> </span>file format elf64-x86-64</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">14c14</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">< <span> </span>DW_AT_ranges<span> </span>(indexed (0x0) rangelist =<span> </span></span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">---</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">> <span> </span>DW_AT_ranges<span> </span>(indexed (0x1) rangelist =<span> </span></span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">31,32c31,32</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">< <span> </span>DW_AT_low_pc<span> </span>(00401120)</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">< <span> </span>DW_AT_high_pc (0040113c)</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">---</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">> <span> </span>DW_AT_ranges<span> </span>(indexed (0x0) rangelist =<span> </span></span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">
</span></p><p style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span style="font-variant-ligatures:no-common-ligatures">><span> </span>[00401120, 0040113c))</span></p></div>
</blockquote></div></div>
</blockquote></div></div>
</blockquote></div></div></div></div>
</blockquote></div></div>
</blockquote></div>