On Wed, Dec 16, 2015 at 04:54:34PM +0100, Arnd Bergmann wrote: > On Wednesday 16 December 2015 00:42:35 Yury Norov wrote: > > > > #ifdef CONFIG_COMPAT > > -#define COMPAT_ELF_HWCAP (compat_elf_hwcap) > > -#define COMPAT_ELF_HWCAP2 (compat_elf_hwcap2) > > extern unsigned int compat_elf_hwcap, compat_elf_hwcap2; > > +#define COMPAT_ELF_HWCAP \ > > + (is_a32_compat_task() \ > > + ? compat_elf_hwcap \ > > + : elf_hwcap) > > + > > +#define COMPAT_ELF_HWCAP2 \ > > + (is_a32_compat_task() \ > > + ? compat_elf_hwcap2 \ > > + : 0) > > + > > #endif > > I'm trying to understand how this is used. Are you compiling > fs/compat_binfmt_elf.c twice to handle both 32-bit ELF types?
It's the same compat_binfmt_elf.c which handles all 32-bit ELF types, i.e. AArch32 and A64/ILP32. The above macros are not constants, so they are evaluated every time a new ELF file is loaded. We do a similar trick with COMPAT_SET_PERSONALITY in patch 11. -- Catalin -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/