• Matthias Kaehlcke's avatar
    x86/build: Fix stack alignment for CLang · 8f918697
    Matthias Kaehlcke authored
    Commit:
    
      d77698df ("x86/build: Specify stack alignment for clang")
    
    intended to use the same stack alignment for clang as with gcc.
    
    The two compilers use different options to configure the stack alignment
    (gcc: -mpreferred-stack-boundary=n, clang: -mstack-alignment=n).
    
    The above commit assumes that the clang option uses the same parameter
    type as gcc, i.e. that the alignment is specified as 2^n. However clang
    interprets the value of this option literally to use an alignment of n,
    in consequence the stack remains misaligned.
    
    Change the values used with -mstack-alignment to be the actual alignment
    instead of a power of two.
    
    cc-option isn't used here with the typical pattern of KBUILD_CFLAGS +=
    $(call cc-option ...). The reason is that older gcc versions don't
    support the -mpreferred-stack-boundary option, since cc-option doesn't
    verify whether the alternative option is valid it would incorrectly
    select the clang option -mstack-alignment..
    Signed-off-by: default avatarMatthias Kaehlcke <mka@chromium.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Bernhard.Rosenkranzer@linaro.org
    Cc: Greg Hackmann <ghackmann@google.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
    Cc: Michael Davidson <md@google.com>
    Cc: Nick Desaulniers <ndesaulniers@google.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephen Hines <srhines@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: dianders@chromium.org
    Link: http://lkml.kernel.org/r/20170817004740.170588-1-mka@chromium.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    8f918697
Makefile 11.7 KB