Building the Linux kernel with Clang and LLVM
 help / color / mirror / Atom feed
* Re: [PATCH v2 0/2] objtool: Add option to fail build on vmlinux warnings
       [not found]   ` <20241219010054.pxcnejgkvy3g744k@jpoimboe>
@ 2024-12-19 22:19     ` Nathan Chancellor
  2024-12-19 22:56       ` Josh Poimboeuf
  2024-12-19 23:01       ` Nick Desaulniers
  0 siblings, 2 replies; 5+ messages in thread
From: Nathan Chancellor @ 2024-12-19 22:19 UTC (permalink / raw)
  To: Josh Poimboeuf
  Cc: Andrew Morton, Brendan Jackman, Peter Zijlstra, Masahiro Yamada,
	Nicolas Schier, linux-kernel, linux-kbuild, llvm

Hi Josh,

On Wed, Dec 18, 2024 at 05:00:54PM -0800, Josh Poimboeuf wrote:
...
>   - obscure toolchain bugs in certain compiler versions which do weird
>     things with control flow.  some of these bugs break the kernel, some
>     don't.
> 
> Problem is, it usually falls on the objtool maintainers to figure out
> the root of the problem and the resolution, neither of which is
> necessarily straightforward, especially the latter.  There's only two of
> us maintainers at the moment, with limited bandwidth.
> 
> So yes, it *should* always fail the build.  But unless we get more
> maintainer bandwidth, I don't think we're ready for that.
> 
> We might end up being able to make CONFIG_OBJTOOL_WERROR=y the default,
> and then just require broken features to depend on
> CONFIG_OBJTOOL_WERROR=n.  And then print a big fat warning message at
> build and/or runtime in the case of warnings.
> 
> We also might need to add some features, like a way to mark certain
> compiler versions as bad, or a way to silence objtool warnings for
> certain known harmless cases, or improve the specificity and usefulness
> of certain vague warnings.
> 
> But as a first step I'll planning on just throwing these patches on a
> robot-monitored branch with CONFIG_OBJTOOL_WERROR=y over the holidays to
> see how bad the damage is.

For the record, I plan to monitor these reports for LLVM and try to
investigate and triage all other known objtool warnings for LLVM after
the holidays to try and prepare for this. I felt blind sided by the
compiler -Werror change so I'd rather not go through that again :) one
reason I would like to be objtool clean is to catch changed compiler
behavior quicker, as I tend to notice it is easier to get problems
addressed when the problem is reported as close as possible to the
original change.

I do agree with you that figuring our the root problem and resolution to
some of these warnings is not always the easiest, especially when they
are on the toolchain side, so I have often kicked the can down the road.
I know there is some documentation in objtool.txt around various
warnings, is that pretty up to date/accurate? Are there any other
resources I could look at to help with this work? I know Arnd just
recently fixed a set [1] that I saw in our builds as well due to a bare
unreachable(), which I think tend to hurt Clang more than GCC but maybe
I am imagining things there.

Some objtool reports get sent to only llvm@lists.linux.dev when clang is
involved (due to a historical filter IIRC, I cannot find the original
request), so you may want to glance at [2] to see if anything new pops
up.

[1]: https://git.kernel.org/netdev/net/c/cff865c700711ecc3824b2dfe181637f3ed23c80
[2]: https://lore.kernel.org/llvm/?q=objtool+f:lkp@intel.com

Cheers,
Nathan

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 0/2] objtool: Add option to fail build on vmlinux warnings
  2024-12-19 22:19     ` [PATCH v2 0/2] objtool: Add option to fail build on vmlinux warnings Nathan Chancellor
@ 2024-12-19 22:56       ` Josh Poimboeuf
  2024-12-20 11:30         ` Brendan Jackman
  2024-12-20 20:10         ` Nathan Chancellor
  2024-12-19 23:01       ` Nick Desaulniers
  1 sibling, 2 replies; 5+ messages in thread
From: Josh Poimboeuf @ 2024-12-19 22:56 UTC (permalink / raw)
  To: Nathan Chancellor
  Cc: Andrew Morton, Brendan Jackman, Peter Zijlstra, Masahiro Yamada,
	Nicolas Schier, linux-kernel, linux-kbuild, llvm

On Thu, Dec 19, 2024 at 03:19:13PM -0700, Nathan Chancellor wrote:
> I do agree with you that figuring our the root problem and resolution to
> some of these warnings is not always the easiest, especially when they
> are on the toolchain side, so I have often kicked the can down the road.
> I know there is some documentation in objtool.txt around various
> warnings, is that pretty up to date/accurate? Are there any other
> resources I could look at to help with this work?

I think the document is pretty up to date.  Some warnings are self
explanatory but others like "unreachable instruction" or "stack state
mismatch" do require digging.

One thing that can help is to "export OBJTOOL_VERBOSE=1", which will
tell objtool to disassemble any affected functions and show a backtrace
with all the taken branches leading up to the warning (if applicable).
Maybe that should be the default for --Werror.

I'd definitely like more people to be able to debug objtool warnings.
Any ideas on making that easier or educating people or improving
warnings are very welcome.  I'll be keeping that in mind when looking at
the build errors over the holidays.

> Some objtool reports get sent to only llvm@lists.linux.dev when clang is
> involved (due to a historical filter IIRC, I cannot find the original
> request), so you may want to glance at [2] to see if anything new pops
> up.

We need to figure out how to get that fixed, the commit author really
needs to know if their code causes a warning/error.

-- 
Josh

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 0/2] objtool: Add option to fail build on vmlinux warnings
  2024-12-19 22:19     ` [PATCH v2 0/2] objtool: Add option to fail build on vmlinux warnings Nathan Chancellor
  2024-12-19 22:56       ` Josh Poimboeuf
@ 2024-12-19 23:01       ` Nick Desaulniers
  1 sibling, 0 replies; 5+ messages in thread
From: Nick Desaulniers @ 2024-12-19 23:01 UTC (permalink / raw)
  To: Nathan Chancellor
  Cc: Josh Poimboeuf, Andrew Morton, Brendan Jackman, Peter Zijlstra,
	Masahiro Yamada, Nicolas Schier, linux-kernel, linux-kbuild, llvm

On Thu, Dec 19, 2024 at 2:19 PM Nathan Chancellor <nathan@kernel.org> wrote:
>
> Some objtool reports get sent to only llvm@lists.linux.dev when clang is
> involved (due to a historical filter IIRC, I cannot find the original
> request),

https://lore.kernel.org/all/CAKwvOdmJvWpmbP3GyzaZxyiuwooFXA8D7ui05QE7+f8Oaz+rXg@mail.gmail.com/
perhaps?
-- 
Thanks,
~Nick Desaulniers

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 0/2] objtool: Add option to fail build on vmlinux warnings
  2024-12-19 22:56       ` Josh Poimboeuf
@ 2024-12-20 11:30         ` Brendan Jackman
  2024-12-20 20:10         ` Nathan Chancellor
  1 sibling, 0 replies; 5+ messages in thread
From: Brendan Jackman @ 2024-12-20 11:30 UTC (permalink / raw)
  To: Josh Poimboeuf
  Cc: Nathan Chancellor, Andrew Morton, Peter Zijlstra, Masahiro Yamada,
	Nicolas Schier, linux-kernel, linux-kbuild, llvm

On Thu, 19 Dec 2024 at 22:56, Josh Poimboeuf <jpoimboe@kernel.org> wrote:
> One thing that can help is to "export OBJTOOL_VERBOSE=1", which will
> tell objtool to disassemble any affected functions and show a backtrace
> with all the taken branches leading up to the warning (if applicable).
> Maybe that should be the default for --Werror.

This sounds very useful, I will do this for v3 unless anyone objects.
If we're failing the build the risk of a mega-verbose splat seems like
a good tradeoff vs the risk of the user having to go and read the
objtool code.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v2 0/2] objtool: Add option to fail build on vmlinux warnings
  2024-12-19 22:56       ` Josh Poimboeuf
  2024-12-20 11:30         ` Brendan Jackman
@ 2024-12-20 20:10         ` Nathan Chancellor
  1 sibling, 0 replies; 5+ messages in thread
From: Nathan Chancellor @ 2024-12-20 20:10 UTC (permalink / raw)
  To: Josh Poimboeuf
  Cc: Andrew Morton, Brendan Jackman, Peter Zijlstra, Masahiro Yamada,
	Nicolas Schier, linux-kernel, linux-kbuild, llvm

On Thu, Dec 19, 2024 at 02:56:42PM -0800, Josh Poimboeuf wrote:
> On Thu, Dec 19, 2024 at 03:19:13PM -0700, Nathan Chancellor wrote:
> > I do agree with you that figuring our the root problem and resolution to
> > some of these warnings is not always the easiest, especially when they
> > are on the toolchain side, so I have often kicked the can down the road.
> > I know there is some documentation in objtool.txt around various
> > warnings, is that pretty up to date/accurate? Are there any other
> > resources I could look at to help with this work?
> 
> I think the document is pretty up to date.  Some warnings are self
> explanatory but others like "unreachable instruction" or "stack state
> mismatch" do require digging.
> 
> One thing that can help is to "export OBJTOOL_VERBOSE=1", which will
> tell objtool to disassemble any affected functions and show a backtrace
> with all the taken branches leading up to the warning (if applicable).
> Maybe that should be the default for --Werror.

Yeah, that does not sound like a bad idea. If the build is going to
break, it seems reasonable to give developers as much pertinent
information as possible so they can address the problem properly and
move on.

> I'd definitely like more people to be able to debug objtool warnings.
> Any ideas on making that easier or educating people or improving
> warnings are very welcome.  I'll be keeping that in mind when looking at
> the build errors over the holidays.

I will definitely ponder on that as well since I should have a good
perspective on that front.

> > Some objtool reports get sent to only llvm@lists.linux.dev when clang is
> > involved (due to a historical filter IIRC, I cannot find the original
> > request), so you may want to glance at [2] to see if anything new pops
> > up.
> 
> We need to figure out how to get that fixed, the commit author really
> needs to know if their code causes a warning/error.

I have started a new thread with the 0day folks to get that adjusted
with you and Peter on CC:

https://lore.kernel.org/20241220200617.GA936171@ax162/

Cheers,
Nathan

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-12-20 20:10 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20241218-objtool-strict-v2-0-a5297c961434@google.com>
     [not found] ` <20241218160656.18cbdcbb93b0e0bcf28adf18@linux-foundation.org>
     [not found]   ` <20241219010054.pxcnejgkvy3g744k@jpoimboe>
2024-12-19 22:19     ` [PATCH v2 0/2] objtool: Add option to fail build on vmlinux warnings Nathan Chancellor
2024-12-19 22:56       ` Josh Poimboeuf
2024-12-20 11:30         ` Brendan Jackman
2024-12-20 20:10         ` Nathan Chancellor
2024-12-19 23:01       ` Nick Desaulniers

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox