• Nathan Chancellor's avatar
    x86/boot/compressed: Move CLANG_FLAGS to beginning of KBUILD_CFLAGS · 5fe392ff
    Nathan Chancellor authored
    When cross compiling i386_defconfig on an arm64 host with clang, there
    are a few instances of '-Waddress-of-packed-member' and
    '-Wgnu-variable-sized-type-not-at-end' in arch/x86/boot/compressed/,
    which should both be disabled with the cc-disable-warning calls in that
    directory's Makefile, which indicates that cc-disable-warning is failing
    at the point of testing these flags.
    
    The cc-disable-warning calls fail because at the point that the flags
    are tested, KBUILD_CFLAGS has '-march=i386' without $(CLANG_FLAGS),
    which has the '--target=' flag to tell clang what architecture it is
    targeting. Without the '--target=' flag, the host architecture (arm64)
    is used and i386 is not a valid value for '-march=' in that case. This
    error can be seen by adding some logging to try-run:
    
      clang-14: error: the clang compiler does not support '-march=i386'
    
    Invoking the compiler has to succeed prior to calling cc-option or
    cc-disable-warning in order to accurately test whether or not the flag
    is supported; if it doesn't, the requested flag can never be added to
    the compiler flags. Move $(CLANG_FLAGS) to the beginning of KBUILD_FLAGS
    so that any new flags that might be added in the future can be
    accurately tested.
    
    Fixes: d5cbd80e ("x86/boot: Add $(CLANG_FLAGS) to compressed KBUILD_CFLAGS")
    Signed-off-by: default avatarNathan Chancellor <nathan@kernel.org>
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    Link: https://lore.kernel.org/r/20211222163040.1961481-1-nathan@kernel.org
    5fe392ff
Makefile 5.35 KB