• Nathan Chancellor's avatar
    kbuild: Fix '-S -c' in x86 stack protector scripts · 3415b10a
    Nathan Chancellor authored
    After a recent change in clang to stop consuming all instances of '-S'
    and '-c' [1], the stack protector scripts break due to the kernel's use
    of -Werror=unused-command-line-argument to catch cases where flags are
    not being properly consumed by the compiler driver:
    
      $ echo | clang -o - -x c - -S -c -Werror=unused-command-line-argument
      clang: error: argument unused during compilation: '-c' [-Werror,-Wunused-command-line-argument]
    
    This results in CONFIG_STACKPROTECTOR getting disabled because
    CONFIG_CC_HAS_SANE_STACKPROTECTOR is no longer set.
    
    '-c' and '-S' both instruct the compiler to stop at different stages of
    the pipeline ('-S' after compiling, '-c' after assembling), so having
    them present together in the same command makes little sense. In this
    case, the test wants to stop before assembling because it is looking at
    the textual assembly output of the compiler for either '%fs' or '%gs',
    so remove '-c' from the list of arguments to resolve the error.
    
    All versions of GCC continue to work after this change, along with
    versions of clang that do or do not contain the change mentioned above.
    
    Cc: stable@vger.kernel.org
    Fixes: 4f7fd4d7 ("[PATCH] Add the -fstack-protector option to the CFLAGS")
    Fixes: 60a5317f ("x86: implement x86_32 stack protector")
    Link: https://github.com/llvm/llvm-project/commit/6461e537815f7fa68cef06842505353cf5600e9c [1]
    Signed-off-by: default avatarNathan Chancellor <nathan@kernel.org>
    Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
    3415b10a
gcc-x86_64-has-stack-protector.sh 195 Bytes