<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=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@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;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        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:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle18
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></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">Ah, I see—I don’t need to call that method directly, so that pretty much solves my problem.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks, and sorry for the oversight.<o:p></o:p></p>
<p class="MsoNormal">Anna<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> paul.robinson@sony.com <paul.robinson@sony.com>
<br>
<b>Sent:</b> Monday, September 13, 2021 3:04 PM<br>
<b>To:</b> Youssefi, Anna <a-youssefi@ti.com>; llvm-dev@lists.llvm.org; dblaikie@gmail.com<br>
<b>Subject:</b> [EXTERNAL] RE: Vendor extensions to DWARF support<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">We provide a variety of addXxxx methods for a variety of different kinds of values; did we miss one?  For the case where you need addAttribute, what sort of form/value do you need?<o:p></o:p></p>
<p class="MsoNormal">--paulr<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> Youssefi, Anna <<a href="mailto:a-youssefi@ti.com">a-youssefi@ti.com</a>>
<br>
<b>Sent:</b> Monday, September 13, 2021 3:03 PM<br>
<b>To:</b> Robinson, Paul <<a href="mailto:paul.robinson@sony.com">paul.robinson@sony.com</a>>;
<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>; <a href="mailto:dblaikie@gmail.com">
dblaikie@gmail.com</a><br>
<b>Subject:</b> RE: Vendor extensions to DWARF support<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">We are adding the generation of one TI-specific dwarf tag and 3 dwarf attributes, in order to use our stack analyzer which relies on these dwarf tags & attributes.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">One function calls the following functions in order to add the TI-specifc call tag and either the indirect call attribute, or the direct call attribute along with name attribute for the callee.  . It looks like only the addAttribute function
 is protected:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">createAndAddDIE (public method of DwarfUnit)<o:p></o:p></p>
<p class="MsoNormal">addLabelAddress  (public method of DwarfCompileUnit)<o:p></o:p></p>
<p class="MsoNormal">addAttribute (protected method of DwarfUnit)<o:p></o:p></p>
<p class="MsoNormal">addString (public method of DwarfUnit)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The second function just calls addUInt() (public method of DwarfUnit) to use add our frame size attribute to the existing Subprogram Die.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Additionally, I duplicated code from the DwarfDebug::constructCallSiteEntryDIE function in order to make these calls without mucking with the existing function.  Note we do not currently support DWARF5 so this function doesn’t get called
 for the TI Arm Clang compiler.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> <a href="mailto:paul.robinson@sony.com">paul.robinson@sony.com</a> <<a href="mailto:paul.robinson@sony.com">paul.robinson@sony.com</a>>
<br>
<b>Sent:</b> Monday, September 13, 2021 1:43 PM<br>
<b>To:</b> Youssefi, Anna <<a href="mailto:a-youssefi@ti.com">a-youssefi@ti.com</a>>;
<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>; <a href="mailto:dblaikie@gmail.com">
dblaikie@gmail.com</a><br>
<b>Subject:</b> [EXTERNAL] RE: Vendor extensions to DWARF support<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">+dblaikie who made DwarfCompileUnit final in c0bb21f3 (aka svn r301068)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I can certainly sympathize with wanting to keep your downstream separate from upstream llvm code!<o:p></o:p></p>
<p class="MsoNormal">Are you willing to describe some of your extensions?  That might help explain why subclassing DwarfCompileUnit is appropriate.<o:p></o:p></p>
<p class="MsoNormal">--paulr<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> llvm-dev <<a href="mailto:llvm-dev-bounces@lists.llvm.org">llvm-dev-bounces@lists.llvm.org</a>>
<b>On Behalf Of </b>Youssefi, Anna via llvm-dev<br>
<b>Sent:</b> Monday, September 13, 2021 11:34 AM<br>
<b>To:</b> <a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
<b>Subject:</b> [llvm-dev] Vendor extensions to DWARF support<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Hi,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I was wondering if anyone has recommendations on how best to implement Vendor extensions to DWARF support.  In particular, some of the functions I need to call are protected methods of the DwarfUnit class
<br>
(such as addAttribute()), but the DwarfCompileUnit subclass is final and can’t be extended, and making a new subclass of DwarfUnit appears to require overriding functions that we don’t need to override.  Currently I have added vendor-specific functions to DwarfCompileUnit,
 but as we like to keep our extensions separate from proper llvm code, this is less than ideal.<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">Anna Youssefi<o:p></o:p></p>
<p class="MsoNormal">Texas Instruments<o:p></o:p></p>
</div>
</div>
</div>
</body>
</html>