On Fri, Jul 05, 2019 at 07:28:12PM +0100, Nix wrote: > > What makes it superior to DWARF stripped down to the above feature set? > > Increased compactness. DWARF fundamentally trades off compactness in > favour of its regular structure, which makes it easier to parse (but not > easier to interpret) but very hard to make it much smaller than it is > now. Where DWARF uses word-sized and larger entities for everything, CTF > packs everything much more tightly -- and this is quite visible in the
That is just not true, most of the data in DWARF are uleb128/sleb128 encoded, or often even present just in the abbreviation table (DW_FORM_flag_present, DW_FORM_implicit_const), word-sized is typically only stuff that needs relocations (at assembly time and more importantly at link time). > could define a "restricted DWARF" with smaller tags etc that is smaller, > but frankly that would no longer be DWARF at all.) You can certainly decide what kind of information you emit and what you don't, it is done already (look at -g1 vs. -g2 vs. -g3), and can be done for other stuff, say if you aren't interested in any locations, DW_AT_{decl,call}_{file,line,column} can be omitted, if you aren't interested in debug info within functions, a lot of debug info can be emitted etc. And it still will be DWARF. For DWARF you also have various techniques at reducing size and optimizing redundancies away, look e.g. at the dwz utility. Jakub