Pavel Labath via llvm-dev
2020-Mar-31 17:34 UTC
[llvm-dev] [yaml2obj] GSoC-20: Add DWARF support to yaml2obj
On 31/03/2020 18:29, Adrian Prantl via llvm-dev wrote:> It's great to see someone interested in improving yaml2obj! > > As far as I'm concerned, the main problem with yam2obj for DWARF testcases is that at the moment, it is both too high-level and too low-level at the same time. For writing debug info testcases, yaml2obj at the moment does not add anything on top of assembler. If it is only providing an alternative syntax, and no other features, it isn't that useful. Let me explain what I mean: > > 1. Too high-level > > For testing parsers we need to be able to create malformed input, so we need to be able to manually tweak offsets and headers where necessary. IIRC currently yaml2obj always creates section headers automatically, and can do so for only one DWARF version. It would be valuable to support more than one version of DWARF, and to support them on a per-section basis (it is not uncommon to mix a DWARF 5 .debug_info section with a DWARF 4 line table). Also there needs to be a way to optionally manually specify headers byte-for-byte, for when we do need this. > > 2. Too low-level > > For functionality tests, however, we don't want to hardcode things like byte offsets, because it makes it extremely hard to write/modify tests by hand. It would be awesome if yaml2obj could automatically generate abbreviation sections if the user requests it, if their exact layout isn't relevant to the test. Similarly, having to manually adjust object file metadata, such as Mach-O section load commands or ELF headers every time we're editing a test in a way that changes the size of, e.g., the .debug_info section prevents us from using yaml2obj for any kind of hand-written tests. > > The tasks you are describing to add explicit syntax for more DWARF constructs are also good and necessary, but addressing one or both of these problems would be even more important to increase the usefulness of yaml2obj for DWARF testing. > > -- adrian >Hello Xing, I'd like to echo Adrian here. I currently find the assembly much more readable and maintainable that the yaml dwarf representation, and so I always write tests that way. For me personally, the ability to write/edit syntactically correct dwarf easily is much more important than being able to generate "incorrect" dwarf -- I'm perfectly happy to continue to write the latter in assembly, but there is a lot that could be improved about the experience of writing "correct" dwarf. Ideally, I'd have a mode where I can just write the logical DIE structure (tags, attributes and their values), and the tool would split that into the abbrev/loclist/range/etc. sections. regards, pavel
David Blaikie via llvm-dev
2020-Mar-31 17:55 UTC
[llvm-dev] [yaml2obj] GSoC-20: Add DWARF support to yaml2obj
+1 to all that & cc'ing a few of the usual suspects as FYI On Tue, Mar 31, 2020 at 10:36 AM Pavel Labath via llvm-dev < llvm-dev at lists.llvm.org> wrote:> On 31/03/2020 18:29, Adrian Prantl via llvm-dev wrote: > > It's great to see someone interested in improving yaml2obj! > > > > As far as I'm concerned, the main problem with yam2obj for DWARF > testcases is that at the moment, it is both too high-level and too > low-level at the same time. For writing debug info testcases, yaml2obj at > the moment does not add anything on top of assembler. If it is only > providing an alternative syntax, and no other features, it isn't that > useful. Let me explain what I mean: > > > > 1. Too high-level > > > > For testing parsers we need to be able to create malformed input, so we > need to be able to manually tweak offsets and headers where necessary. IIRC > currently yaml2obj always creates section headers automatically, and can do > so for only one DWARF version. It would be valuable to support more than > one version of DWARF, and to support them on a per-section basis (it is not > uncommon to mix a DWARF 5 .debug_info section with a DWARF 4 line table). > Also there needs to be a way to optionally manually specify headers > byte-for-byte, for when we do need this. > > > > 2. Too low-level > > > > For functionality tests, however, we don't want to hardcode things like > byte offsets, because it makes it extremely hard to write/modify tests by > hand. It would be awesome if yaml2obj could automatically generate > abbreviation sections if the user requests it, if their exact layout isn't > relevant to the test. Similarly, having to manually adjust object file > metadata, such as Mach-O section load commands or ELF headers every time > we're editing a test in a way that changes the size of, e.g., the > .debug_info section prevents us from using yaml2obj for any kind of > hand-written tests. > > > > The tasks you are describing to add explicit syntax for more DWARF > constructs are also good and necessary, but addressing one or both of these > problems would be even more important to increase the usefulness of > yaml2obj for DWARF testing. > > > > -- adrian > > > > Hello Xing, > > I'd like to echo Adrian here. I currently find the assembly much more > readable and maintainable that the yaml dwarf representation, and so I > always write tests that way. > > For me personally, the ability to write/edit syntactically correct dwarf > easily is much more important than being able to generate "incorrect" > dwarf -- I'm perfectly happy to continue to write the latter in > assembly, but there is a lot that could be improved about the experience > of writing "correct" dwarf. Ideally, I'd have a mode where I can just > write the logical DIE structure (tags, attributes and their values), and > the tool would split that into the abbrev/loclist/range/etc. sections. > > regards, > pavel > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200331/0fdf815c/attachment.html>
Adrian Prantl via llvm-dev
2020-Mar-31 18:01 UTC
[llvm-dev] [yaml2obj] GSoC-20: Add DWARF support to yaml2obj
> On Mar 31, 2020, at 10:55 AM, David Blaikie <dblaikie at gmail.com> wrote: > > +1 to all that & cc'ing a few of the usual suspects as FYI > > On Tue, Mar 31, 2020 at 10:36 AM Pavel Labath via llvm-dev <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote: > > > For me personally, the ability to write/edit syntactically correct dwarf > easily is much more important than being able to generate "incorrect" > dwarf -- I'm perfectly happy to continue to write the latter in > assembly, but there is a lot that could be improved about the experience > of writing "correct" dwarf. Ideally, I'd have a mode where I can justDo we think that yaml2obj is the best format for this, or would high-level DWARF DIE assembler directives be a more useful abstraction level? If you think about the .loc directive, there is actually some prior art in assembler. -- adrian -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200331/01490860/attachment.html>