Linux 6.3-rc3

Nathan Chancellor nathan at kernel.org
Wed Mar 22 20:36:00 UTC 2023


On Wed, Mar 22, 2023 at 09:36:37AM -0700, Nathan Chancellor wrote:
> On Wed, Mar 22, 2023 at 02:44:47PM +0200, Kalle Valo wrote:
> > Nathan Chancellor <nathan at kernel.org> writes:
> > 
> > > On Mon, Mar 20, 2023 at 11:26:17AM -0700, Linus Torvalds wrote:
> > >> On Mon, Mar 20, 2023 at 11:05 AM Nathan Chancellor <nathan at kernel.org> wrote:
> > >> >
> > >> > On the clang front, I am still seeing the following warning turned error
> > >> > for arm64 allmodconfig at least:
> > >> >
> > >> >   drivers/gpu/host1x/dev.c:520:6: error: variable 'syncpt_irq' is uninitialized when used here [-Werror,-Wuninitialized]
> > >> >           if (syncpt_irq < 0)
> > >> >               ^~~~~~~~~~
> > >> 
> > >> Hmm. I do my arm64 allmodconfig builds with gcc, and I'm surprised
> > >> that gcc doesn't warn about this.
> > >
> > > Perhaps these would make doing allmodconfig builds with clang more
> > > frequently less painful for you?
> > >
> > > https://lore.kernel.org/llvm/20230319235619.GA18547@dev-arch.thelio-3990X/
> > 
> > Thank you, at least for me this is really helpful.
> 
> Really glad to hear! I hope this helps make testing and verifying
> changes with clang and LLVM easier for developers and maintainers.
> 
> > I tried now clang for the first time but seeing a strange problem.
> > 
> > I prefer to define the compiler in GNUmakefile so it's easy to change
> > compilers and I don't need to remember the exact command line. So I have
> > this in the top level GNUmakefile (all the rest commented out):
> > 
> > LLVM=/opt/clang/llvm-16.0.0/bin/
> > 
> > If I run 'make oldconfig' it seems to use clang but after I run just
> > 'make' it seems to switch back to the host GCC compiler and ask for GCC
> > specific config questions again. Workaround for this seems to be adding
> > 'export LLVM' to GNUmakefile, after that also 'make' uses clang as
> > expected.
> 
> Interesting... I just tested with a basic GNUmakefile and everything
> seems to work fine without an export. At the same time, the export
> should not hurt anything, so as long as it works, that is what matters.

Ah, the export is needed so that mixed-build works properly (see lines
324 to 361 in Makefile), as 'make' will be called to process each target
individually; without the export, LLVM is not set for the subsequent
'make' calls, so gcc is called. I just saw the same behavior as you did
while testing with

  $ make -j(nproc) clean defconfig all

without the export (GCC was used instead of LLVM).

>     $ gcc --version
>     fish: Unknown command: gcc
> 
> 
>     $ fd -t x . $CBL_TC_LLVM_STORE/16.0.0/bin -x basename
>     clang-16
>     llvm-nm
>     llvm-objdump
>     llvm-objcopy
>     llvm-symbolizer
>     llvm-strings
>     llvm-readobj
>     llvm-dwarfdump
>     lld
>     llvm-ar
> 
> 
>     $ cat GNUmakefile
>     LLVM := $(CBL_TC_LLVM_STORE)/16.0.0/bin/
> 
>     include Makefile
> 
> 
>     $ make -sj(nproc) defconfig
> 
> 
>     $ head -13 .config
>     #
>     # Automatically generated file; DO NOT EDIT.
>     # Linux/x86 6.3.0-rc3 Kernel Configuration
>     #
>     CONFIG_CC_VERSION_TEXT="ClangBuiltLinux clang version 16.0.0"
>     CONFIG_GCC_VERSION=0
>     CONFIG_CC_IS_CLANG=y
>     CONFIG_CLANG_VERSION=160000
>     CONFIG_AS_IS_LLVM=y
>     CONFIG_AS_VERSION=160000
>     CONFIG_LD_VERSION=0
>     CONFIG_LD_IS_LLD=y
>     CONFIG_LLD_VERSION=160000
> 
> 
>     $ make -sj(nproc) init/main.o
> 
> 
>     $ $CBL_TC_LLVM_STORE/16.0.0/bin/llvm-readelf -p .comment init/main.o
>     String dump of section '.comment':
>     [     1] ClangBuiltLinux clang version 16.0.0
> 
> 
> I added an informational print and I always saw the correct value:
> 
> diff --git a/Makefile b/Makefile
> index a2c310df2145..070394c4cb8c 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -431,6 +431,7 @@ HOST_LFS_LDFLAGS := $(shell getconf LFS_LDFLAGS 2>/dev/null)
>  HOST_LFS_LIBS := $(shell getconf LFS_LIBS 2>/dev/null)
>  
>  ifneq ($(LLVM),)
> +$(info LLVM: $(LLVM))
>  ifneq ($(filter %/,$(LLVM)),)
>  LLVM_PREFIX := $(LLVM)
>  else ifneq ($(filter -%,$(LLVM)),)
> 
> If you have any further issues, please do not hesitate to reach out!
> 
> Cheers,
> Nathan
> 


More information about the dri-devel mailing list