lkml.org 
[lkml]   [2012]   [Feb]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:x86/x32] x32: Warn and disable rather than error if binutils too old
    Commit-ID:  0bf6276392e990dd0da0ccd8e10f42597d503f29
    Gitweb: http://git.kernel.org/tip/0bf6276392e990dd0da0ccd8e10f42597d503f29
    Author: H. Peter Anvin <hpa@linux.intel.com>
    AuthorDate: Mon, 27 Feb 2012 14:09:10 -0800
    Committer: H. Peter Anvin <hpa@linux.intel.com>
    CommitDate: Mon, 27 Feb 2012 14:09:10 -0800

    x32: Warn and disable rather than error if binutils too old

    If X32 is enabled in .config, but the binutils can't build it, issue a
    warning and disable the feature rather than erroring out.

    In order to support this, have CONFIG_X86_X32 be the option set in
    Kconfig, and CONFIG_X86_X32_ABI be the option set by the Makefile when
    it is enabled and binutils has been found to be functional.

    Requested-by: Ingo Molnar <mingo@elte.hu>
    Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
    Cc: H. J. Lu <hjl.tools@gmail.com>
    Link: http://lkml.kernel.org/r/1329696488-16970-1-git-send-email-hpa@zytor.com
    ---
    arch/x86/Kconfig | 4 ++--
    arch/x86/Makefile | 16 ++++++++++++++++
    2 files changed, 18 insertions(+), 2 deletions(-)

    diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
    index c9d6c9e..e2b38b4 100644
    --- a/arch/x86/Kconfig
    +++ b/arch/x86/Kconfig
    @@ -2175,7 +2175,7 @@ config IA32_AOUT
    ---help---
    Support old a.out binaries in the 32bit emulation.

    -config X86_X32_ABI
    +config X86_X32
    bool "x32 ABI for 64-bit mode (EXPERIMENTAL)"
    depends on X86_64 && IA32_EMULATION && EXPERIMENTAL
    ---help---
    @@ -2190,7 +2190,7 @@ config X86_X32_ABI

    config COMPAT
    def_bool y
    - depends on IA32_EMULATION || X86_X32_ABI
    + depends on IA32_EMULATION || X86_X32

    config COMPAT_FOR_U64_ALIGNMENT
    def_bool COMPAT
    diff --git a/arch/x86/Makefile b/arch/x86/Makefile
    index 209ba12..31bb1eb 100644
    --- a/arch/x86/Makefile
    +++ b/arch/x86/Makefile
    @@ -82,6 +82,22 @@ ifdef CONFIG_CC_STACKPROTECTOR
    endif
    endif

    +ifdef CONFIG_X86_X32
    + x32_ld_ok := $(call try-run,\
    + /bin/echo -e '1: .quad 1b' | \
    + $(CC) $(KBUILD_AFLAGS) -c -xassembler -o "$$TMP" - && \
    + $(OBJCOPY) -O elf32-x86-64 "$$TMP" "$$TMPO" && \
    + $(LD) -m elf32_x86_64 "$$TMPO" -o "$$TMP",y,n)
    + ifeq ($(x32_ld_ok),y)
    + CONFIG_X86_X32_ABI := y
    + KBUILD_AFLAGS += -DCONFIG_X86_X32_ABI
    + KBUILD_CFLAGS += -DCONFIG_X86_X32_ABI
    + else
    + $(warning CONFIG_X86_X32 enabled but no binutils support)
    + endif
    +endif
    +export CONFIG_X86_X32_ABI
    +
    # Don't unroll struct assignments with kmemcheck enabled
    ifeq ($(CONFIG_KMEMCHECK),y)
    KBUILD_CFLAGS += $(call cc-option,-fno-builtin-memcpy)

    \
     
     \ /
      Last update: 2012-02-27 23:25    [W:0.025 / U:32.448 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site