mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 04:18:39 +08:00
elf: Expose ELF header on arch_setup_additional_pages()
Like it is done for SET_PERSONALITY with ARM, which requires the ELF header to select correct personality parameters, x86 requires the headers when selecting which VDSO to load, instead of relying on the going-away TIF_IA32/X32 flags. Add an indirection macro to arch_setup_additional_pages(), that x86 can reimplement to receive the extra parameter just for ELF files. This requires no changes to other architectures, who can continue to use the original arch_setup_additional_pages for ELF and non-ELF binaries. Signed-off-by: Gabriel Krisman Bertazi <krisman@collabora.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Link: https://lore.kernel.org/r/20201004032536.1229030-8-krisman@collabora.com
This commit is contained in:
parent
2424b14605
commit
9a29a67190
@ -1246,7 +1246,7 @@ out_free_interp:
|
||||
set_binfmt(&elf_format);
|
||||
|
||||
#ifdef ARCH_HAS_SETUP_ADDITIONAL_PAGES
|
||||
retval = arch_setup_additional_pages(bprm, !!interpreter);
|
||||
retval = ARCH_SETUP_ADDITIONAL_PAGES(bprm, elf_ex, !!interpreter);
|
||||
if (retval < 0)
|
||||
goto out;
|
||||
#endif /* ARCH_HAS_SETUP_ADDITIONAL_PAGES */
|
||||
|
@ -115,11 +115,16 @@
|
||||
#define START_THREAD COMPAT_START_THREAD
|
||||
#endif
|
||||
|
||||
#ifdef compat_arch_setup_additional_pages
|
||||
#ifdef compat_arch_setup_additional_pages
|
||||
#define COMPAT_ARCH_SETUP_ADDITIONAL_PAGES(bprm, ex, interpreter) \
|
||||
compat_arch_setup_additional_pages(bprm, interpreter)
|
||||
#endif
|
||||
|
||||
#ifdef COMPAT_ARCH_SETUP_ADDITIONAL_PAGES
|
||||
#undef ARCH_HAS_SETUP_ADDITIONAL_PAGES
|
||||
#define ARCH_HAS_SETUP_ADDITIONAL_PAGES 1
|
||||
#undef arch_setup_additional_pages
|
||||
#define arch_setup_additional_pages compat_arch_setup_additional_pages
|
||||
#undef ARCH_SETUP_ADDITIONAL_PAGES
|
||||
#define ARCH_SETUP_ADDITIONAL_PAGES COMPAT_ARCH_SETUP_ADDITIONAL_PAGES
|
||||
#endif
|
||||
|
||||
#ifdef compat_elf_read_implies_exec
|
||||
|
@ -27,6 +27,11 @@
|
||||
start_thread(regs, elf_entry, start_stack)
|
||||
#endif
|
||||
|
||||
#if defined(ARCH_HAS_SETUP_ADDITIONAL_PAGES) && !defined(ARCH_SETUP_ADDITIONAL_PAGES)
|
||||
#define ARCH_SETUP_ADDITIONAL_PAGES(bprm, ex, interpreter) \
|
||||
arch_setup_additional_pages(bprm, interpreter)
|
||||
#endif
|
||||
|
||||
#define ELF32_GNU_PROPERTY_ALIGN 4
|
||||
#define ELF64_GNU_PROPERTY_ALIGN 8
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user