Re: [PATCH 7/7] DWARF: add the config option

From: Ingo Molnar
Date: Sun May 07 2017 - 17:40:36 EST



* Josh Poimboeuf <jpoimboe@xxxxxxxxxx> wrote:

> One instance of the structure would exist for each time the stack
> pointer changes, e.g. for every function entry, push/pop, and rsp
> add/subtract. The data could be assembled and sorted offline, possibly
> derived from DWARF, or more likely, generated by objtool. After doing
> some rough calculations, I think the section size would be comparable to
> the sizes of the DWARF .eh_frame sections it would replace.

That's something I've been thinking about as well: if objtool generates the
unwinder data structures then the kernel is not directly exposed to tooling bugs
anymore.

A fair chunk of the fragility of DWARF comes from the fact that it's generated by
a tool chain that we cannot fix as part of the kernel project. If GCC generates
crap debuginfo, and GDB happens to work with it but the kernel not, we'll have to
work it around in the kernel. If GCC starts bloating debuginfo in the future we
are screwed as well, etc.

If objtool generates debuginfo then it's _our_ responsibility to have sane
unwinder info and we obviously manage its structure and size as well. Win-win.

The unwinder itself should still do sanity checks, etc. (like all good debugging
infrastructure code) - but the nature of the kernel's exposure to tool chain
details changes in a very fundamental way.

So yes, I think this is a very good idea, assuming it works in practice! ;-)

Thanks,

Ingo