From: Nathan Chancellor <nathan@kernel.org>
To: Josh Poimboeuf <jpoimboe@redhat.com>,
Peter Zijlstra <peterz@infradead.org>
Cc: Nick Desaulniers <ndesaulniers@google.com>,
Sami Tolvanen <samitolvanen@google.com>,
Kees Cook <keescook@chromium.org>,
clang-built-linux@googlegroups.com, llvm@lists.linux.dev,
linux-kernel@vger.kernel.org
Subject: objtool warning in cfg80211_edmg_chandef_valid() with ThinLTO
Date: Tue, 24 Aug 2021 13:08:58 -0700 [thread overview]
Message-ID: <5913cdf4-9c8e-38f8-8914-d3b8a3565d73@kernel.org> (raw)
Hi Josh and Peter,
An in-review LLVM patch [1] introduces an optimization around switch
cases, marking the default case unreachable when all known values are
covered. This ended up introducing a boot regression when building a
kernel with ThinLTO, which Sami reported initially [2] and I reported it
upstream, generating some discussion starting from [3].
There is an objtool warning about the function that the author of the
patch tracked down to be problematic:
vmlinux.o: warning: objtool: cfg80211_edmg_chandef_valid()+0x169: can't
find jump dest instruction at .text.cfg80211_edmg_chandef_valid+0x17b
The LLVM developers are under the impression that this is an issue with
objtool; specifically quoting Eli Friedman:
"The backend can, in general, create basic blocks that don't contain any
instructions, and don't fall through to another block. A jump table
entry can refer to such a block. I guess certain tools could be confused
by this.
If that's the issue, it should be possible to work around it using
'-mllvm -trap-unreachable'."
I can confirm that adding '-mllvm -trap-unreachable' to
KBUILD_{C,LD}FLAGS does resolve the issue but I am curious if that is an
adequate solution (as Nick has frowned upon the presence of '-mllvm'
flags) or if there is something that could be done on the objtool side.
I do have a small reproducer on Phabricator [4] and I can provide any
binary files that would be helpful for seeing what is going on here.
[1] https://reviews.llvm.org/D106056
[2] https://github.com/ClangBuiltLinux/linux/issues/1440
[3] https://reviews.llvm.org/D106056#2953104
[4] https://reviews.llvm.org/D106056#2961136
Cheers,
Nathan
next reply other threads:[~2021-08-24 20:09 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-24 20:08 Nathan Chancellor [this message]
2021-08-24 21:05 ` objtool warning in cfg80211_edmg_chandef_valid() with ThinLTO Peter Zijlstra
2021-08-24 21:19 ` Nathan Chancellor
2021-08-25 5:30 ` Josh Poimboeuf
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=5913cdf4-9c8e-38f8-8914-d3b8a3565d73@kernel.org \
--to=nathan@kernel.org \
--cc=clang-built-linux@googlegroups.com \
--cc=jpoimboe@redhat.com \
--cc=keescook@chromium.org \
--cc=linux-kernel@vger.kernel.org \
--cc=llvm@lists.linux.dev \
--cc=ndesaulniers@google.com \
--cc=peterz@infradead.org \
--cc=samitolvanen@google.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.