Hi Nathan, On Thu, 12 Jan 2023 at 08:35, Nathan Chancellor <nathan@xxxxxxxxxx> wrote: > > Hi all, > > Clang can emit a few different warnings when it encounters a flag that it > recognizes but does not support internally. These warnings are elevated to > errors within {as,cc}-option via -Werror to catch unsupported flags that should > not be added to KBUILD_{A,C}FLAGS; see commit c3f0d0bc5b01 ("kbuild, LLVMLinux: > Add -Werror to cc-option to support clang"). > > If an unsupported flag is unconditionally to KBUILD_{A,C}FLAGS, all subsequent > {as,cc}-option will always fail, preventing supported and even potentially > necessary flags from getting adding to the tool flags. > > One would expect these warnings to be visible in the kernel build logs since > they are added to KBUILD_{A,C}FLAGS but unfortunately, these warnings are > hidden with clang's -Qunused-arguments flag, which is added to KBUILD_CPPFLAGS > and used for both compiling and assembling files. > > Patches 1-4 address the internal inconsistencies of invoking the assembler > within kbuild by using KBUILD_AFLAGS consistently and using '-x > assembler-with-cpp' over '-x assembler'. This matches how assembly files are > built across the kernel and helps avoid problems in situations where macro > definitions or warning flags are present in KBUILD_AFLAGS, which cause > instances of -Wunused-command-line-argument when the preprocessor is not called > to consume them. There were a couple of places in architecture code where this > change would break things so those are fixed first. > > Patches 5-12 clean up warnings that will show up when -Qunused-argument is > dropped. I hope none of these are controversial. > > Patch 13 turns two warnings into errors so that the presence of unused flags > cannot be easily ignored. > > Patch 14 drops -Qunused-argument. This is done last so that it can be easily > reverted if need be. > > This series has seen my personal test framework, which tests several different > configurations and architectures, with LLVM tip of tree (16.0.0). I have done > defconfig, allmodconfig, and allnoconfig builds for arm, arm64, i386, mips, > powerpc, riscv, s390, and x86_64 with GCC 12.2.0 as well but I am hoping the > rest of the test infrastructure will catch any lurking problems. > > I would like this series to stay together so that there is no opportunity for > breakage so please consider giving acks so that this can be carried via the > kbuild tree (and many thanks to the people who have already provided such > tags). > > --- > Changes in v2: > - Pick up tags where provided (thank you everyone!) > - Patch 6 and 9: Clarify that '-s' is a compiler flag that is only relevant to > the linking phase and remove all mention of the assembler's '-s' flag, as the > assembler is never directly invoked (Nick, Segher) > - Patch 7: Move '-z noexecstack' into new ldflags-y variable (Nick) > - Patch 8: Reword commit message to explain the problem in a clearer manner > (Nick) > - Link to v1: https://lore.kernel.org/r/20221228-drop-qunused-arguments-v1-0-658cbc8fc592@xxxxxxxxxx > > --- > Nathan Chancellor (12): > MIPS: Always use -Wa,-msoft-float and eliminate GAS_HAS_SET_HARDFLOAT > MIPS: Prefer cc-option for additions to cflags > powerpc: Remove linker flag from KBUILD_AFLAGS > powerpc/vdso: Remove unused '-s' flag from ASFLAGS > powerpc/vdso: Improve linker flags > powerpc/vdso: Remove an unsupported flag from vgettimeofday-32.o with clang > s390/vdso: Drop unused '-s' flag from KBUILD_AFLAGS_64 > s390/vdso: Drop '-shared' from KBUILD_CFLAGS_64 > s390/purgatory: Remove unused '-MD' and unnecessary '-c' flags > drm/amd/display: Do not add '-mhard-float' to dml_ccflags for clang > kbuild: Turn a couple more of clang's unused option warnings into errors > kbuild: Stop using '-Qunused-arguments' with clang > > Nick Desaulniers (2): > x86/boot/compressed: prefer cc-option for CFLAGS additions > kbuild: Update assembler calls to use proper flags and language target > > Makefile | 1 - > arch/mips/Makefile | 13 ++------- > arch/mips/include/asm/asmmacro-32.h | 4 +-- > arch/mips/include/asm/asmmacro.h | 42 ++++++++++++++--------------- > arch/mips/include/asm/fpregdef.h | 14 ---------- > arch/mips/include/asm/mipsregs.h | 20 +++----------- > arch/mips/kernel/genex.S | 2 +- > arch/mips/kernel/r2300_fpu.S | 4 +-- > arch/mips/kernel/r4k_fpu.S | 12 ++++----- > arch/mips/kvm/fpu.S | 6 ++--- > arch/mips/loongson2ef/Platform | 2 +- > arch/powerpc/Makefile | 2 +- > arch/powerpc/kernel/vdso/Makefile | 25 +++++++++++------ > arch/s390/kernel/vdso64/Makefile | 4 +-- > arch/s390/purgatory/Makefile | 2 +- > arch/x86/boot/compressed/Makefile | 2 +- > drivers/gpu/drm/amd/display/dc/dml/Makefile | 3 ++- > scripts/Kconfig.include | 2 +- > scripts/Makefile.clang | 2 ++ > scripts/Makefile.compiler | 8 +++--- > scripts/as-version.sh | 2 +- > 21 files changed, 74 insertions(+), 98 deletions(-) FYI, [ please provide comments, feedback and improvements on build/ ltp smoke tests ] LKFT test farm have fetched your patch series [1] [PATCH v2 00/14] Remove clang's -Qunused-arguments from KBUILD_CPPFLAGS [1] https://lore.kernel.org/llvm/20221228-drop-qunused-arguments-v2-0-9adbddd20d86@xxxxxxxxxx/ Following build warnings and errors reported. sh: gcc-11-defconfig — FAIL gcc-11-shx3_defconfig — FAIL https://qa-reports.linaro.org/~anders.roxell/linux-mainline-patches/build/https___lore_kernel_org_llvm_20221228-drop-qunused-arguments-v2-1-9adbddd20d86_kernel_org/testrun/14221835/suite/build/tests/ mainline getting passed. https://qa-reports.linaro.org/lkft/linux-mainline-master/build/v6.2-rc5/testrun/14298156/suite/build/test/gcc-11-defconfig/history/ https://qa-reports.linaro.org/lkft/linux-mainline-master/build/v6.2-rc5/testrun/14298156/suite/build/test/gcc-11-shx3_defconfig/history/ Build error: In function 'follow_pmd_mask', inlined from 'follow_pud_mask' at /builds/linux/mm/gup.c:735:9, inlined from 'follow_p4d_mask' at /builds/linux/mm/gup.c:752:9, inlined from 'follow_page_mask' at /builds/linux/mm/gup.c:809:9: /builds/linux/include/linux/compiler_types.h:358:45: error: call to '__compiletime_assert_263' declared with attribute error: Unsupported access size for {READ,WRITE}_ONCE(). 358 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) s390: clang-15-defconfig — FAIL https://qa-reports.linaro.org/~anders.roxell/linux-mainline-patches/build/https___lore_kernel_org_llvm_20221228-drop-qunused-arguments-v2-1-9adbddd20d86_kernel_org/testrun/14221913/suite/build/tests/ mainline getting passed. https://qa-reports.linaro.org/lkft/linux-mainline-master/build/v6.2-rc5/testrun/14300495/suite/build/test/clang-15-defconfig/history/ Build error: make --silent --keep-going --jobs=8 O=/home/tuxbuild/.cache/tuxmake/builds/1/build LLVM_IAS=0 ARCH=s390 CROSS_COMPILE=s390x-linux-gnu- 'HOSTCC=sccache clang' 'CC=sccache clang' `.exit.text' referenced in section `__jump_table' of fs/fuse/inode.o: defined in discarded section `.exit.text' of fs/fuse/inode.o `.exit.text' referenced in section `__jump_table' of fs/fuse/inode.o: defined in discarded section `.exit.text' of fs/fuse/inode.o `.exit.text' referenced in section `__bug_table' of crypto/algboss.o: defined in discarded section `.exit.text' of crypto/algboss.o `.exit.text' referenced in section `__bug_table' of drivers/scsi/sd.o: defined in discarded section `.exit.text' of drivers/scsi/sd.o `.exit.text' referenced in section `__jump_table' of drivers/md/md.o: defined in discarded section `.exit.text' of drivers/md/md.o `.exit.text' referenced in section `__jump_table' of drivers/md/md.o: defined in discarded section `.exit.text' of drivers/md/md.o `.exit.text' referenced in section `.altinstructions' of drivers/md/md.o: defined in discarded section `.exit.text' of drivers/md/md.o `.exit.text' referenced in section `.altinstructions' of drivers/md/md.o: defined in discarded section `.exit.text' of drivers/md/md.o `.exit.text' referenced in section `.altinstructions' of net/iucv/iucv.o: defined in discarded section `.exit.text' of net/iucv/iucv.o `.exit.text' referenced in section `__bug_table' of drivers/s390/cio/qdio_thinint.o: defined in discarded section `.exit.text' of drivers/s390/cio/qdio_thinint.o `.exit.text' referenced in section `__bug_table' of drivers/s390/net/qeth_l3_main.o: defined in discarded section `.exit.text' of drivers/s390/net/qeth_l3_main.o `.exit.text' referenced in section `__bug_table' of drivers/s390/net/qeth_l3_main.o: defined in discarded section `.exit.text' of drivers/s390/net/qeth_l3_main.o s390x-linux-gnu-ld: BFD (GNU Binutils for Debian) 2.35.2 assertion fail ../../bfd/elf64-s390.c:3349 make[2]: *** [/builds/linux/scripts/Makefile.vmlinux:34: vmlinux] Error 1 But, Build and boot pass on arm64, arm, x86_64 and i386. Build test performed for mips, parisc, riscv, s390, sh, sparc and powerpc (known build errors for maple_defconfig and cell_defconfig), Please refer following link for detailed build, boot, LTP smoketest. https://qa-reports.linaro.org/~anders.roxell/linux-mainline-patches/build/https___lore_kernel_org_llvm_20221228-drop-qunused-arguments-v2-1-9adbddd20d86_kernel_org/?failures_only=false&results_layout=table#!#test-results Best regards Naresh Kamboju -- Linaro LKFT https://lkft.linaro.org > --- > base-commit: 88603b6dc419445847923fcb7fe5080067a30f98 > change-id: 20221228-drop-qunused-arguments-0c5c7dae54fb > > Best regards, > -- > Nathan Chancellor <nathan@xxxxxxxxxx> > >