<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Nov 3, 2015 at 4:37 PM, Zachary Turner <span dir="ltr"><<a href="mailto:zturner@google.com" target="_blank">zturner@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><span class=""><div dir="ltr">On Tue, Nov 3, 2015 at 4:25 PM Dave Bartolomeo <<a href="mailto:Dave.Bartolomeo@microsoft.com" target="_blank">Dave.Bartolomeo@microsoft.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div lang="EN-US" link="blue" vlink="purple">
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">The LLVMCodeView library is definitely independent of the rest of the design questions.
<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">As far as testing goes, what would be the conventional LLVM way of testing a library for file format manipulation? A test tool that converts some simple text
 form into a .obj containing CodeView sections, and comparing with a baseline .obj? Or would the test convert back from the .obj to some kind of text as well, and compare to a text baseline? Is there some other LLVM component that has similar testing requirements
 that I can use as an example for how to test LLVMCodeView? Note that I’d be adding a CodeView->text dump tool anyway, since that will be pretty much essential for anyone working with CodeView.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1f497d">-Dave</span></p></div></div></blockquote></span><div>David Majnemer and David Blaikie (this is seriously like the attack of the Daves) probably have some thoughts, but currently there is code in llvm-readobj.exe to parse certain types of codeview from object files (mostly line table information).  </div><div><br></div><div>So one idea is to generate some object files that have CV records you know about up front, then pass the output of llvm-readobj (which would need to be updated to use LLVMCodeView instead of hand-rolled parsing) to FileCheck and verify that it matches some pattern.</div></div></div></blockquote><div><br></div><div>Yep, this would test the dumping behavior - and how we test llvm-dwarfdump. I assume you have similar checked-in-binary tests for llvm-pdbdump?<br><br>How you get output to dump is a bit fuzzy in this case (we don't have much test coverage like this particular situation) - one way is to create another textual format (json, etc), read it, generate CV from it, dump it, FileCheck it, but that's a bit heavyweight.<br><br>I'd be inclined to write unit tests if possible - use the CV APIs directly in a unit test, generate in-memory CV output to feed into the dumper in-process, if possible (or, if necessary/substantially more convenient, have the unit test actually write CV output, dump, check)<br><br>Hmm, yeah, not perfect, though - how do you check the dumped output? FileCheck is our usual tool for this & there's, again, probably no great in-process story for that... <br><br>Open to further ideas... <br><br>- Nth Dave</div></div></div></div>