lkml.org 
[lkml]   [2018]   [Feb]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [tip:x86/pti] objtool, retpolines: Integrate objtool with retpoline support more closely
    On Wed, Feb 21, 2018 at 01:53:57PM +0100, Peter Zijlstra wrote:
    > That's because this crossed with the llvm cruft, right? I'll have a
    > look.

    Best I could come up with that seems to work is something like the
    below. Ingo, can you backmerge or stuff on top as appropriate?

    ---
    Makefile | 8 ++++----
    arch/x86/Makefile | 10 +++-------
    scripts/Makefile.build | 2 +-
    3 files changed, 8 insertions(+), 12 deletions(-)

    diff --git a/Makefile b/Makefile
    index e1a155a50fdc..3aa0a115eafb 100644
    --- a/Makefile
    +++ b/Makefile
    @@ -489,10 +489,10 @@ KBUILD_CFLAGS += $(CLANG_TARGET) $(CLANG_GCC_TC)
    KBUILD_AFLAGS += $(CLANG_TARGET) $(CLANG_GCC_TC)
    endif

    -ifneq ($(call cc-option,-mindirect-branch=thunk-extern -mindirect-branch-register),)
    - CC_HAS_RETPOLINE := 1
    -endif
    -export CC_HAS_RETPOLINE
    +RETPOLINE_CFLAGS_GCC := -mindirect-branch=thunk-extern -mindirect-branch-register
    +RETPOLINE_CFLAGS_CLANG := -mretpoline-external-thunk
    +RETPOLINE_CFLAGS := $(call cc-option,$(RETPOLINE_CFLAGS_GCC),$(call cc-option,$(RETPOLINE_CFLAGS_CLANG)))
    +export RETPOLINE_CFLAGS

    ifeq ($(config-targets),1)
    # ===========================================================================
    diff --git a/arch/x86/Makefile b/arch/x86/Makefile
    index dbc7d0ed2eaa..498c1b812300 100644
    --- a/arch/x86/Makefile
    +++ b/arch/x86/Makefile
    @@ -232,13 +232,9 @@ KBUILD_CFLAGS += -fno-asynchronous-unwind-tables

    # Avoid indirect branches in kernel to deal with Spectre
    ifdef CONFIG_RETPOLINE
    - RETPOLINE_CFLAGS_GCC := -mindirect-branch=thunk-extern -mindirect-branch-register
    - RETPOLINE_CFLAGS_CLANG := -mretpoline-external-thunk
    -
    - RETPOLINE_CFLAGS += $(call cc-option,$(RETPOLINE_CFLAGS_GCC),$(call cc-option,$(RETPOLINE_CFLAGS_CLANG)))
    - ifneq ($(RETPOLINE_CFLAGS),)
    - KBUILD_CFLAGS += $(RETPOLINE_CFLAGS) -DRETPOLINE
    - endif
    +ifneq ($(RETPOLINE_CFLAGS),)
    + KBUILD_CFLAGS += $(RETPOLINE_CFLAGS) -DRETPOLINE
    +endif
    endif

    archscripts: scripts_basic
    diff --git a/scripts/Makefile.build b/scripts/Makefile.build
    index 07e5802e324b..4f2b25d43ec9 100644
    --- a/scripts/Makefile.build
    +++ b/scripts/Makefile.build
    @@ -267,7 +267,7 @@ else
    objtool_args += $(call cc-ifversion, -lt, 0405, --no-unreachable)
    endif
    ifdef CONFIG_RETPOLINE
    -ifdef CC_HAS_RETPOLINE
    +ifneq ($(RETPOLINE_CFLAGS),)
    objtool_args += --retpoline
    endif
    endif
    \
     
     \ /
      Last update: 2018-02-21 14:20    [W:2.121 / U:0.732 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site