From: Nathan Chancellor <nathan@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: "Josh Poimboeuf" <jpoimboe@kernel.org>,
"Harry Wentland" <harry.wentland@amd.com>,
"Leo Li" <sunpeng.li@amd.com>,
"Alex Deucher" <alexander.deucher@amd.com>,
"Christian König" <christian.koenig@amd.com>,
"David Airlie" <airlied@gmail.com>,
"Simona Vetter" <simona@ffwll.ch>,
"Nick Desaulniers" <nick.desaulniers+lkml@gmail.com>,
"Bill Wendling" <morbo@google.com>,
"Justin Stitt" <justinstitt@google.com>,
"the arch/x86 maintainers" <x86@kernel.org>,
dri-devel <dri-devel@lists.freedesktop.org>,
"Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>,
llvm@lists.linux.dev
Subject: Re: clang and drm issue: objtool warnings from clang build
Date: Sat, 26 Apr 2025 16:05:13 -0400 [thread overview]
Message-ID: <20250426200513.GA427956@ax162> (raw)
In-Reply-To: <CAHk-=wip2-yTrWpAkrUQ0iejEo2PjReddu4xntwBvdnSvWDbzg@mail.gmail.com>
Hi Linus,
On Sat, Apr 26, 2025 at 10:42:40AM -0700, Linus Torvalds wrote:
> But I *really* think that clang silently just generating known bad
> code for invalida operations like this is very very dangerous, and is
> a bug in clang.
>
> Can we *please* get a flag for clang that it doesn't just stop
> generating code because it has decided some path is unreachable or
> undefined? Add a TRAP instruction, for Chrissake! PLEASE!
>
> Maybe such a flag already exists, and the kernel just doesn't know
> about it. This whole "do random things for undefined behavior" is a
> bug, dammit.
I think there is an internal LLVM flag, '-trap-unreachable', that does
what we would want here. Within the last year, I tested adding something
like
KBUILD_CFLAGS += -mllvm -trap-unreachable
to Makefile under an 'ifdef CONFIG_CC_IS_CLANG' and it eliminated most
objtool warnings but I seem to recall it introducing some new ones, I
think around __noreturn functions? I know Josh has done a lot of work on
objtool recently so I should retest. GCC has this behavior exposed under
-funreachable-traps, I could see about trying to expose that in clang.
This specific case started with clang-20 and your analysis is spot on:
https://lore.kernel.org/20241220223403.GA2605890@ax162/
On Sat, Apr 26, 2025 at 10:52:10AM -0700, Linus Torvalds wrote:
> Please people: "ASSERT()" like behavior is simply not acceptable in
> the kernel. WARN_ON() and friends need to either be otherwise benign
> (ie "warn but then continue to do valid things") or they need to be
> *handled* (ie "warn and then refuse to do things that aren't valid").
>
> Just warning and then doing random crap is not sane. If you aren't
> capable of dealing with the situation, don't do the bogus test. Just
> warning about it isn't fixing the code, and can make things actively
> worse as in these two examples.
This was the most recent series to clear up those objtool warnings in
the AMD driver:
https://lore.kernel.org/20250114132856.19463-1-yangtiezhu@loongson.cn/
Not sure if other ASSERT() uses should be audited or eliminated too but
that would at least make the build cleaner.
> Not this silent "now I generate random code by falling through to
> something else entirely" that clang does now. Not good.
Aside from what I mention above, I suppose getting OBJTOOL_WERROR in
useful shape would help with this a little bit because it will be easier
for me and others testing tip of tree LLVM to notice when optimizations
introduce new warnings.
Cheers,
Nathan
next prev parent reply other threads:[~2025-04-26 20:05 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-26 17:42 clang and drm issue: objtool warnings from clang build Linus Torvalds
2025-04-26 17:52 ` Linus Torvalds
2025-04-26 20:05 ` Nathan Chancellor [this message]
2025-04-26 20:56 ` Linus Torvalds
2025-04-26 23:23 ` Nathan Chancellor
2025-04-27 0:31 ` Linus Torvalds
2025-04-28 18:08 ` Bill Wendling
2025-04-28 19:34 ` Linus Torvalds
2025-04-28 19:54 ` Josh Poimboeuf
2025-04-28 20:57 ` Linus Torvalds
2025-04-28 20:58 ` Bill Wendling
2025-04-29 9:17 ` Peter Zijlstra
2025-04-28 17:53 ` Bill Wendling
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250426200513.GA427956@ax162 \
--to=nathan@kernel.org \
--cc=airlied@gmail.com \
--cc=alexander.deucher@amd.com \
--cc=christian.koenig@amd.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=harry.wentland@amd.com \
--cc=jpoimboe@kernel.org \
--cc=justinstitt@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=llvm@lists.linux.dev \
--cc=morbo@google.com \
--cc=nick.desaulniers+lkml@gmail.com \
--cc=simona@ffwll.ch \
--cc=sunpeng.li@amd.com \
--cc=torvalds@linux-foundation.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox