<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Wed, Nov 9, 2016 at 9:40 PM Paul Robinson <<a href="mailto:paul.robinson@sony.com">paul.robinson@sony.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">probinson added subscribers: beanz, probinson.<br class="gmail_msg">
probinson added a comment.<br class="gmail_msg">
<br class="gmail_msg">
I agree with Adrian, this is way too big to review.<br class="gmail_msg">
<br class="gmail_msg">
So, following test-first practice, let's talk about the DWARF-test-case-generator first.  There are already 3 different ways it could go.<br class="gmail_msg">
<br class="gmail_msg">
- A standalone generator like you've done here.<br class="gmail_msg">
- A driver for LLVM's DWARF generator, as @dblaikie suggested.<br class="gmail_msg">
- A DWARF-speaking yaml2obj, which @beanz is proposing on cfe-dev.<br class="gmail_msg"></blockquote><div><br>Guess I should go check to understand better what/why that's being proposed... <br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br class="gmail_msg">
The standalone generator looks like it would work well for unittests but not so much for more traditional LIT tests, unless you also want to produce a tool that can parse some textual representation and produce DWARF from it.<br class="gmail_msg">
<br class="gmail_msg">
A driver for LLVM's DwarfDebug would get nice code re-use, but limit the test space to what DwarfDebug knows how to produce.  I think it would be more robust to make sure we had confidence in a reader/dumper before starting to persuade the compiler to emit some of the more finicky bits of DWARF 5.  And, I personally would want a WAY nicer input syntax than having to hand-write IR metadata (oy, what a headache).<br class="gmail_msg"></blockquote><div><br>Sorry for the confusion, but to clarify: I wasn't intending to suggest that this would work by using IR  to generate DWARF, but by using the APIs that lib/CodeGen/AsmPrinter uses to generate DWARF (see the DIE class, etc, in there - fully general purpose for producing whatever DIEs and attributes you might be so inclined).<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br class="gmail_msg">
Speaking of generating binary files from text input, isn't that exactly what yaml2obj does?  I don't know whether people like it or hate it, but it does appear to have worked examples of emitting objects that get used for tests.  Teaching it a convenient DWARF syntax and how to emit DWARF sections into an object file seems like a more fruitful avenue than confining the generator to unittests.  (Maybe you could repurpose the code here, save a lot of typing.)<br class="gmail_msg"></blockquote><div><br>I thought yaml2obj was mostly used for testing in lld and that it was a bit disused now as the non-Darwin side of things wasn't using it anymore (perhaps I'm mistaken - I know there was also a yaml lld 'native' format, perhaps I'm confusing the two)<br><br>- Dave<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br class="gmail_msg">
<br class="gmail_msg">
<a href="https://reviews.llvm.org/D26469" rel="noreferrer" class="gmail_msg" target="_blank">https://reviews.llvm.org/D26469</a><br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
</blockquote></div></div>