On Thu, Jan 12, 2023 at 12:05 PM 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). All applied to linux-kbuild. Thanks. I left small comments in 07/14. > --- > 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(-) > --- > base-commit: 88603b6dc419445847923fcb7fe5080067a30f98 > change-id: 20221228-drop-qunused-arguments-0c5c7dae54fb > > Best regards, > -- > Nathan Chancellor <nathan@xxxxxxxxxx> > -- Best Regards Masahiro Yamada