diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2021-01-04 18:34:30 -0500 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2021-01-06 08:41:17 -0500 |
commit | 85f2ada718a81b282ee78a96d0ab1450543612e7 (patch) | |
tree | 15fc174d993df8f3d916f8cc737e618a5d65e146 | |
parent | 7facdc426f86c67e579e49e100943cbccc43e1c6 (diff) | |
download | linux-85f2ada718a81b282ee78a96d0ab1450543612e7.tar.bz2 |
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 <viro@zeniv.linux.org.uk>
-rw-r--r-- | arch/x86/Kconfig | 2 | ||||
-rw-r--r-- | 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) |