From: Al Viro Date: Mon, 4 Jan 2021 23:34:30 +0000 (-0500) Subject: x32: make X32, !IA32_EMULATION setups able to execute x32 binaries X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=85f2ada718a81b282ee78a96d0ab1450543612e7;p=linux.git 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 --- diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 302a6b453c91c..a2182d22b5fae 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 66bdfe838d611..9224d40cdefee 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)