Messages in this thread | | | From | Nick Desaulniers <> | Date | Mon, 12 Jul 2021 10:04:54 -0700 | Subject | Re: [PATCH] arm64: Restrict ARM64_BTI_KERNEL to clang 12.0.0 and newer |
| |
On Mon, Jul 12, 2021 at 5:24 AM Will Deacon <will@kernel.org> wrote: > > Hi Nathan, > > On Thu, Jul 08, 2021 at 05:06:27PM -0700, Nathan Chancellor wrote: > > Commit 97fed779f2a6 ("arm64: bti: Provide Kconfig for kernel mode BTI") > > disabled CONFIG_ARM64_BTI_KERNEL when CONFIG_GCOV_KERNEL was enabled and > > compilign with clang because of warnings that occur because LLVM was not > > Typo: "compilign" > > > emitting PAC/BTI instructions for compiler generated functions. > > > > This was an adequate fix to avoid the warnings with allmodconfig until > > commit 51c2ee6d121c ("Kconfig: Introduce ARCH_WANTS_NO_INSTR and > > CC_HAS_NO_PROFILE_FN_ATTR"), which prevented CONFIG_GCOV_KERNEL from > > being selected with clang 12.0.0 and older because it does not support > > the no_profile_instrument_function attribute. As a result, > > CONFIG_ARM64_BTI_KERNEL gets enabled and there are more warnings of this > > nature. > > I'm half asleep today, but I'm struggling to follow what GCOV_KERNEL has > to do with the warnings here. Prior to 51c2ee6d121c, you could still go > and turn that option off and so wouldn't the same warnings be triggered > in that configuration?
Nathan, consider if any of the below can be reused to reword the commit message? ``` Prior to 51c2ee6d121c, allmodconfig with clang-11 would not select ARM64_BTI_KERNEL because GCOV_KERNEL already had been.
After 51c2ee6d121c, allmodconfig with clang-11 does select ARM64_BTI_KERNEL because GCOV_KERNEL cannot be selected.
clang-11 had basic support for BTI, but failed to instrument compiler generated functions properly. This produces the following stream of warnings for clang-11 allmodconfig builds of ARCH=arm64:
warning: some functions compiled with BTI and some compiled without BTI warning: not setting BTI in feature flags
This was fixed in clang-12 via https://reviews.llvm.org/D85649. ``` Perhaps its of interest to find which config in (allmodconfig minus GCOV_KERNEL) but not in (defconfig) produces these, since I don't think we see them in defconfig builds of clang-11? https://github.com/ClangBuiltLinux/continuous-integration2/runs/3009146591?check_suite_focus=true
> > In other words, I think there are two aspects to this patch: > > 1. Removing the (now useless) !GCOV_KERNEL dependency > 2. Requiring Clang >= version 12 > > but the commit message doesn't really say where these warnings are coming > from or why Clang 12 gets rid of them. > > Thanks, > > Will
-- Thanks, ~Nick Desaulniers
| |