Re: [PATCH v7 1/2] Kbuild: make DWARF version a choice

From: Mark Wielaard
Date: Thu Feb 04 2021 - 15:30:56 EST


On Thu, 2021-02-04 at 12:04 -0800, Nick Desaulniers wrote:
> On Thu, Feb 4, 2021 at 11:56 AM Mark Wielaard <mark@xxxxxxxxx> wrote:
> > I agree with Jakub. Now that GCC has defaulted to DWARF5 all the
> > tools
> > have adopted to the new default version. And DWARF5 has been out
> > for
>
> "all of the tools" ?

I believe so yes, we did a mass-rebuild of all of Fedora a few weeks
back with a GCC11 pre-release and did find some tools which weren't
ready, but as far as I know all have been fixed now. I did try to
coordinate with the Suse and Debian packagers too, so all the major
distros should have all the necessary updates once switching to GCC11.

> > more than 4 years already. It isn't unreasonable to assume that people
> > using GCC11 will also be using the rest of the toolchain that has moved
> > on. Which DWARF consumers are you concerned about not being ready for
> > GCC defaulting to DWARF5 once GCC11 is released?
>
> Folks who don't have top of tree pahole or binutils are the two that
> come to mind.

I believe pahole just saw a 1.20 release. I am sure it will be widely
available once GCC11 is released (which will still be 1 or 2 months)
and people are actually using it. Or do you expect distros/people are
going to upgrade to GCC11 without updating their other toolchain tools?
BTW. GCC11 doesn't need top of tree binutils, it will detect the
binutils capabilities (bugs) and adjust its DWARF output based on it.

> I don't have specifics on out of tree consumers, but
> some Aarch64 extensions which had some changes to DWARF for ARMv8.3
> PAC support broke some debuggers.

It would be really helpful if you could provide some specifics. I did
fix some consumers to handle the PAC operands in CFI last year, but I
don't believe that had anything to do with the default DWARF version,
just with dealing with DW_CFA_AARCH64_negate_ra_state.

> I don't doubt a lot of work has gone into fixing many downstream
> projects and then when building everything from ToT that there are no
> issues with DWARF v5. The issue is getting upgrades into developers
> hands, and what to default to until then.

I would suggest you simply default to what you already do when the
compiler is given -g. Just like you do already for the implicit default
-std=gnuc*. Once GCC11 is actually released and people upgrade their
toolchain to use it the tools will be ready and in developers hands.

Cheers,

Mark