<div dir="ltr">I think it seems like an oversight, and improvements in this area would be welcome.<div><br></div><div>I think most of the effort in COFF <-> YAML translation has been for representing object files, and debug directories are a feature of fully linked PE images. With that in mind, it's not too surprising that the feature is missing.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Mar 3, 2020 at 7:10 PM Penzin, Petr via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</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 lang="EN-US">
<div class="gmail-m_-1798762709560628111WordSection1">
<p class="gmail-m_-1798762709560628111FirstParagraph"><i>Spoiler:</i> the following only applies to Windows binary format handling.<u></u><u></u></p>
<p class="gmail-m_-1798762709560628111MsoBodyText">Potential for extending <span class="gmail-m_-1798762709560628111VerbatimChar">yaml2obj</span> to support COFF
<a href="https://docs.microsoft.com/en-us/windows/win32/debug/pe-format#debug-directory-image-only" target="_blank">
debug directories</a> recently came up during <a href="https://reviews.llvm.org/D70606#1873185" target="_blank">
a code review</a>. Currently, its <a href="http://llvm.org/docs/yaml2obj.html#coff-syntax" target="_blank">
COFF syntax</a> allows for specifying section data, but not debug directories, that's why
<span class="gmail-m_-1798762709560628111VerbatimChar">llvm-readobj</span> tests which depend on debug directory contents use pre-built executable images instead of
<span class="gmail-m_-1798762709560628111VerbatimChar">yaml2obj</span>.<u></u><u></u></p>
<p class="gmail-m_-1798762709560628111MsoBodyText">It is possible to extend the tool, but first I would be interested in gathering feedback on usability of this, especially on potential uses of this change. It looks like porting
<span class="gmail-m_-1798762709560628111VerbatimChar">llvm-readobj</span> tests for codeview would depend on this and also
<a href="https://reviews.llvm.org/D70606" target="_blank">D70606</a> is introducing another possible use. But I am not sure how trivial would the codeview effort, would it be worth it or is it easier to leave things as they are for now?<u></u><u></u></p>
<p class="gmail-m_-1798762709560628111MsoBodyText">In case this is interesting, base Yaml syntax for COFF debug directory may look like this (enum values representing
<a href="https://docs.microsoft.com/en-us/windows/win32/debug/pe-format#debug-type" target="_blank">
COFF Debug Types</a>):<u></u><u></u></p>
<p class="gmail-m_-1798762709560628111SourceCode"><span class="gmail-m_-1798762709560628111VerbatimChar">DebugDirectory:</span><br>
<span class="gmail-m_-1798762709560628111VerbatimChar">  - Type: [ {type: str, enum: [...]}, {type: int} ]</span><br>
<span class="gmail-m_-1798762709560628111VerbatimChar">  - DebugDirectoryData: {type: str}</span><u></u><u></u></p>
<p class="gmail-m_-1798762709560628111FirstParagraph">This may have to be further specialized for sub-categories, specifically codeview.<u></u><u></u></p>
<p class="gmail-m_-1798762709560628111MsoBodyText"><u></u> <u></u></p>
<p class="gmail-m_-1798762709560628111MsoBodyText">Best,<u></u><u></u></p>
<p class="gmail-m_-1798762709560628111MsoBodyText">Petr<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>

_______________________________________________<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" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div>