| <html> |
| <head><title>Debug Info BOF</title></head> |
| <body> |
| |
| <h1>Debug Info BOF</h1> |
| <h3><i>Eric Christopher</i></h3> |
| |
| <p>Optimized debugging is still a big miss with a lof of metadata being lost at |
| various stages, mostly affecting variable tracking, leastly affecting line |
| information.</p> |
| |
| <p>Suggestion to use dom/dataflow to compute liveness for location lists. |
| Eric not keen on this (expensive?).</p> |
| |
| <p>Dwarf 4 seems to be the standard that LLVM is being coded to, Dwarf 3 in |
| maintenance mode, Dwarf 2 is dead. Still, would be good to have some mechanism |
| to limit the version of Dwarf symbols, to avoid breaking compatibility with |
| older toolchains for a small feature.</p> |
| |
| <p>In time, Dwarf 3 will be deprecated, and the story will repeat, and it's clear |
| and accepted by all that this is the natural course of thing.</p> |
| |
| <p>Debug info for LTO "now works" in 3.4, uniquing all C++ types. |
| This depends on having consistent class descriptions across CUs.</p> |
| |
| <p>Many debug info size improvements. Non-LTO "smaller than GCC" in 3.4.</p> |
| |
| <p>Verifier will check debug info, so metadata is supposed to be consistent |
| after validation.</p> |
| |
| <p>Metadata may lose type information and be left with line, function and scope |
| info. The rest can be inferred from IR.</p> |
| |
| <p>Debug metadata is widely known to be huge and methods to reduce the size in |
| IR are being considered, including emitting Dwarf directly in IR, converting |
| the most common constructs to text literals (including small numbers, < 4-8 |
| digits), packing (zip) the contents, etc.</p> |
| |
| </body> |
| |