From 85f2ada718a81b282ee78a96d0ab1450543612e7 Mon Sep 17 00:00:00 2001 From: Al Viro Date: Mon, 4 Jan 2021 18:34:30 -0500 Subject: [PATCH] x32: make X32, !IA32_EMULATION setups able to execute x32 binaries It's really trivial - the only wrinkle is making sure that compiler knows that ia32-related side of COMPAT_ARCH_DLINFO is dead code on such configs (we don't get there without having passed compat_elf_check_arch(), and on such configs that'll fail for ia32 binary). Signed-off-by: Al Viro --- arch/x86/Kconfig | 2 +- arch/x86/include/asm/elf.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 302a6b453c91..a2182d22b5fa 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -2864,7 +2864,6 @@ config IA32_EMULATION depends on X86_64 select ARCH_WANT_OLD_COMPAT_IPC select BINFMT_ELF - select COMPAT_BINFMT_ELF select COMPAT_OLD_SIGACTION help Include code to run legacy 32-bit programs under a @@ -2900,6 +2899,7 @@ config COMPAT_32 config COMPAT def_bool y depends on IA32_EMULATION || X86_X32 + select COMPAT_BINFMT_ELF if BINFMT_ELF if COMPAT config COMPAT_FOR_U64_ALIGNMENT diff --git a/arch/x86/include/asm/elf.h b/arch/x86/include/asm/elf.h index 66bdfe838d61..9224d40cdefe 100644 --- a/arch/x86/include/asm/elf.h +++ b/arch/x86/include/asm/elf.h @@ -364,7 +364,7 @@ do { \ #define COMPAT_ARCH_DLINFO \ if (exec->e_machine == EM_X86_64) \ ARCH_DLINFO_X32; \ -else \ +else if (IS_ENABLED(CONFIG_IA32_EMULATION)) \ ARCH_DLINFO_IA32 #define COMPAT_ELF_ET_DYN_BASE (TASK_UNMAPPED_BASE + 0x1000000) -- 2.11.0