<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:宋体;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"\@宋体";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:938759049;
        mso-list-template-ids:-593699704;}
@list l1
        {mso-list-id:2098938860;
        mso-list-template-ids:-333513462;}
@list l1:level1
        {mso-level-start-at:2;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">> Are you using clang 9? If so, it doesn't have the fix.<o:p></o:p></p>
<p class="MsoNormal">> This will be fixed in the next release.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">OK, got it. Thank you!<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks<o:p></o:p></p>
<p class="MsoNormal">Steven<o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:12.0pt;font-family:"Arial",sans-serif"><o:p> </o:p></span></b></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><a name="_____replyseparator"></a><b>From:</b> Reid Kleckner <rnk@google.com>
<br>
<b>Sent:</b> Wednesday, January 15, 2020 4:31 AM<br>
<b>To:</b> Shi, Steven <steven.shi@intel.com><br>
<b>Cc:</b> Zachary Turner <zturner@roblox.com>; Rui Ueyama <ruiu@google.com>; Martin Storsjö <martin@martin.st>; David Blaikie <dblaikie@gmail.com>; llvm-dev <llvm-dev@lists.llvm.org><br>
<b>Subject:</b> Re: [llvm-dev] LLD PDB Lines zero number issue<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">Are you using clang 9? If so, it doesn't have the fix. When I do what you are doing locally, I see this line table in the object file:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">$ llvm-pdbutil dump -l main.obj <br>
                           Lines                            <br>
============================================================<br>
Mod 0000 | `.debug$S`: <br>
/usr/local/google/home/rnk/llvm-project/build/t.cpp (MD5: 87CCDBA652A1F79A159CCE31252B66B1)<br>
  0000:00000000-0000001A, line/addr entries = 3<br>
     3 00000000 !    5 00000009 !    9 00000013 ! <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">The zero entries are missing. This will be fixed in the next release.<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">On Tue, Jan 14, 2020, 4:53 AM Shi, Steven <<a href="mailto:steven.shi@intel.com" target="_blank">steven.shi@intel.com</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm">
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">OK, maybe I was wrong and the “-use-unknown-locations” option is not the issue root cause.
<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">I'm not familiar with the LLVM codebase and I appreciate any suggestion on how to debug this issue. I'd like to know is it a clang issue or a lld issue? Is there a tool which can
 dump the obj file debug location info?<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Let me simplify the previous test case to reproduce this issue. All what you need is just a C function to invoke an empty assembly function as below.<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<ol start="1" type="1">
<li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo1">
An empty assembly function file:<o:p></o:p></li></ol>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">$ cat assembly.nasm<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">    DEFAULT REL<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">    SECTION .text<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">global assembly_fun<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">assembly_fun:<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">  ret<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<ol start="2" type="1">
<li class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo2">
A file of a C function to invoke the empty assembly function but not inline the assembly function:<o:p></o:p></li></ol>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">$ cat main.c<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">void assembly_fun();<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">int main()<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">{<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">  int Index1;<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">  for (Index1 = 0; Index1 == 0; assembly_fun(), Index1++){<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">    assembly_fun();<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">  }<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">  assembly_fun();<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">}<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Then link the assembly and c functions together as below:<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">$ clang -g -m64 -target x86_64-unknown-windows -gcodeview -O1 -c -o main.obj  main.c<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">$ nasm -f win64 -o assembly.obj assembly.nasm<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">$ lld-link /OUT:main.dll /Machine:X64 /DLL /ENTRY:main /DEBUG:GHASH /lldmap main.obj assembly.obj<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Check to see that there are line zeros in the pdb file:
<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">$ llvm-pdbutil" dump -l main.pdb<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">                           Lines<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">============================================================<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Mod 0000 | `/home/jshi19/llvm/wrongcode/lld_PDB_issue/main.obj`:<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">/home/jshi19/llvm/wrongcode/lld_PDB_issue/main.c (MD5: 5F82BB79FE2DA0B0549B784CFDC37D05)<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">  0001:00000000-0000001A, line/addr entries = 5<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">     3 00000000 !   
<span style="color:red">0 00000004 </span>!    5 00000009 !    <span style="color:red">
0 0000000E !    </span>9 00000013 !<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Thanks<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Shi, Steven<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><a name="m_3500904920787195822_m_4776398469764899"><b>From:</b> Zachary Turner <</a><a href="mailto:zturner@roblox.com" target="_blank"><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899">zturner@roblox.com</span><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899"></span></a><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899">>
<br>
<b>Sent:</b> Tuesday, January 14, 2020 2:56 AM<br>
<b>To:</b> Shi, Steven <</span><a href="mailto:steven.shi@intel.com" target="_blank"><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899">steven.shi@intel.com</span><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899"></span></a><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899">><br>
<b>Cc:</b> Martin Storsjö <</span><a href="mailto:martin@martin.st" target="_blank"><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899">martin@martin.st</span><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899"></span></a><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899">>;
 David Blaikie <</span><a href="mailto:dblaikie@gmail.com" target="_blank"><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899">dblaikie@gmail.com</span><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899"></span></a><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899">>;
 Rui Ueyama <</span><a href="mailto:ruiu@google.com" target="_blank"><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899">ruiu@google.com</span><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899"></span></a><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899">>;
 llvm-dev <</span><a href="mailto:llvm-dev@lists.llvm.org" target="_blank"><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899">llvm-dev@lists.llvm.org</span><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899"></span></a><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899">><br>
<b>Subject:</b> Re: [llvm-dev] LLD PDB Lines zero number issue<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899"> <o:p></o:p></span></p>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899">Could you try putting together a prototype patch and testing it locally to see if it solves your problem?<o:p></o:p></span></p>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899"> <o:p></o:p></span></p>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899">On Sat, Jan 11, 2020 at 7:11 PM Shi, Steven via llvm-dev <</span><a href="mailto:llvm-dev@lists.llvm.org" target="_blank"><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899">llvm-dev@lists.llvm.org</span><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899"></span></a><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899">>
 wrote:<o:p></o:p></span></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0cm;margin-bottom:5.0pt">
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899">I checked the LLVM master code and find that the “-use-unknown-locations” option and its related logic is only
 supported for Dwarf debug info as below. These codes are missing in the Codeview side. It looks the “-use-unknown-locations” option logic is not complex, could we port the code logic into llvm\lib\CodeGen\AsmPrinter\CodeViewDebug.cpp as well? I’ve submitted
 a BZ for this requirment: </span><a href="https://bugs.llvm.org/show_bug.cgi?id=44522" target="_blank"><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899">https://bugs.llvm.org/show_bug.cgi?id=44522</span><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899"></span></a><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899">
<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899">llvm-project\llvm\lib\CodeGen\AsmPrinter\DwarfDebug.cpp :<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899"><span style="font-size:10.0pt;font-family:"Courier New"">static cl::opt<DefaultOnOff> UnknownLocations(</span><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899"><span style="font-size:10.0pt;font-family:"Courier New"">    "use-unknown-locations", cl::Hidden,</span><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899"><span style="font-size:10.0pt;font-family:"Courier New"">    cl::desc("Make an absence of debug location information
 explicit."),</span><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899"><span style="font-size:10.0pt;font-family:"Courier New"">    cl::values(clEnumVal(Default, "At top of block or
 after label"),</span><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899"><span style="font-size:10.0pt;font-family:"Courier New"">               clEnumVal(Enable, "In all cases"), clEnumVal(Disable,
 "Never")),</span><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899"><span style="font-size:10.0pt;font-family:"Courier New"">    cl::init(Default));</span><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899"><span style="font-size:10.0pt;font-family:"Courier New"">... ...
</span><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899"><span style="font-size:10.0pt;font-family:"Courier New"">    // If user said Don't Do That, don't do that.</span><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899"><span style="font-size:10.0pt;font-family:"Courier New"">    if (UnknownLocations == Disable)</span><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899"><span style="font-size:10.0pt;font-family:"Courier New"">      return;</span><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899"> <o:p></o:p></span></p>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899">This issue blocks the LLVM toolchain debugging capability for UEFI firmware. Please help to add the support.
 Thank you in advance!<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899"> <o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899"> <o:p></o:p></span></p>
<p><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899">Thanks<o:p></o:p></span></p>
<p><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899">Steven Shi<o:p></o:p></span></p>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="mso-bookmark:m_3500904920787195822_m_4776398469764899"> <o:p></o:p></span></p>
<span style="mso-bookmark:m_3500904920787195822_m_4776398469764899"></span>
<div style="border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b>From:</b> Shi, Steven
<br>
<b>Sent:</b> Friday, January 10, 2020 9:43 AM<br>
<b>To:</b> Martin Storsjö <<a href="mailto:martin@martin.st" target="_blank">martin@martin.st</a>>; David Blaikie <<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a>><br>
<b>Cc:</b> Reid Kleckner <<a href="mailto:rnk@google.com" target="_blank">rnk@google.com</a>>; llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>>; Rui Ueyama <<a href="mailto:ruiu@google.com" target="_blank">ruiu@google.com</a>><br>
<b>Subject:</b> RE: [llvm-dev] LLD PDB Lines zero number issue<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p>Hi Martin,<o:p></o:p></p>
<p>I tried your suggestion of adding "-mllvm -use-unknown-locations=Disable" in the clang CC flag to build test case in my previous email, but it looks still not work in my side with llvm 9.0.0.  Could you give me some more advices? Do I need to use the master
 LLVM instead of the 9.0.0?<o:p></o:p></p>
<p> <o:p></o:p></p>
<p>$ make -f makefile_clanglto_Oz                                           <o:p>
</o:p></p>
<p>"/home/jshi19/llvm/clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-18.04/bin/clang" -g  -m64 -mcmodel=small -target x86_64-unknown-windows -gcodeview
<span style="color:red">-mllvm -use-unknown-locations=Disable </span>-flto -Oz -c -o main.obj  main.c<o:p></o:p></p>
<p>"nasm" -f win64 -o assembly.obj assembly.nasm<o:p></o:p></p>
<p>"/home/jshi19/llvm/clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-18.04/bin/llvm-lib" /OUT:main.lib main.obj<o:p></o:p></p>
<p>"/home/jshi19/llvm/clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-18.04/bin/llvm-lib" /OUT:assembly.lib assembly.obj<o:p></o:p></p>
<p>"/home/jshi19/llvm/clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-18.04/bin/lld-link" /OUT:main.dll /Machine:X64 /DLL /ENTRY:main /DEBUG:GHASH /lldmap main.lib assembly.lib<o:p></o:p></p>
<p> <o:p></o:p></p>
<p>$ /home/jshi19/llvm/clang+llvm-9.0.0-x86_64-linux-gnu-ubuntu-18.04/bin/llvm-pdbutil dump -l main.pdb<o:p></o:p></p>
<p>                           Lines<o:p></o:p></p>
<p>============================================================<o:p></o:p></p>
<p>Mod 0000 | `assembly.obj`:<o:p></o:p></p>
<p>Mod 0001 | `/home/jshi19/llvm/wrongcode/lld-link5/lto.tmp`:<o:p></o:p></p>
<p>/home/jshi19/llvm/wrongcode/lld-link5/main.c (MD5: 5F82BB79FE2DA0B0549B784CFDC37D05)<o:p></o:p></p>
<p>  0001:00000004-0000001E, line/addr entries = 5<o:p></o:p></p>
<p>     3 00000004 !    <span style="color:red">0 00000008 ! </span>   5 0000000D !   
<span style="color:red">0 00000012 !    </span>9 00000017 !<o:p></o:p></p>
<p> <o:p></o:p></p>
<p> <o:p></o:p></p>
<p>Thanks<o:p></o:p></p>
<p>Steven Shi<o:p></o:p></p>
<p> <o:p></o:p></p>
<p> <o:p></o:p></p>
<p>> -----Original Message-----<o:p></o:p></p>
<p>> From: Martin Storsjö <<a href="mailto:martin@martin.st" target="_blank">martin@martin.st</a>><o:p></o:p></p>
<p>> Sent: Friday, January 10, 2020 5:00 AM<o:p></o:p></p>
<p>> To: David Blaikie <<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a>><o:p></o:p></p>
<p>> Cc: Shi, Steven <<a href="mailto:steven.shi@intel.com" target="_blank">steven.shi@intel.com</a>>; Reid Kleckner <<a href="mailto:rnk@google.com" target="_blank">rnk@google.com</a>>;<o:p></o:p></p>
<p>> llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>><o:p></o:p></p>
<p>> Subject: Re: [llvm-dev] LLD PDB Lines zero number issue<o:p></o:p></p>
<p>> <o:p></o:p></p>
<p>> On Thu, 9 Jan 2020, David Blaikie via llvm-dev wrote:<o:p></o:p></p>
<p>> <o:p></o:p></p>
<p>> > +rnk who works on COFF debugging things.<o:p></o:p></p>
<p>> ><o:p></o:p></p>
<p>> >  My understanding is that this has nothing to do with the linker - but is a<o:p></o:p></p>
<p>> > function of LLVM optimizations creating line zero debug locations. I believe<o:p></o:p></p>
<p>> > rnk & folks have disabled line zero emission for CodeView debug info in<o:p></o:p></p>
<p>> some<o:p></o:p></p>
<p>> > manner - perhaps that needs a flag? or Steven hasn't got a release with<o:p></o:p></p>
<p>> that<o:p></o:p></p>
<p>> > change in it?<o:p></o:p></p>
<p>> <o:p></o:p></p>
<p>> I think I've run into that with dwarf as well, and there AFAIK it can be<o:p></o:p></p>
<p>> gotten rid of by adding "-mllvm -use-unknown-locations=Disable".<o:p></o:p></p>
<p>> <o:p></o:p></p>
<p>> // Martin<o:p></o:p></p>
</div>
</div>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><o:p></o:p></p>
</blockquote>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</body>
</html>