Deprecate a.out ELF interpreters
The Linux ELF loader is quite complicated and messy code (that could probably need a rewrite, but that's a different chapter). One particular messy part in it is the support for non ELF a.out ld.sos. This was originally added to make transition from a.out to ELF easier because an a.out ELF ld.so could be still build using an older a.out toolkit. But by now that should be fully obsolete and removing it would clean up binfmt_elf.c up a bit. I propose to deprecate this support and remove for 2.6.25. Drawback is that someone still runs their system with a.out ld.so they would need to update the ld.so when updating to a new kernel. This patch just adds an entry to the deprecation file and a printk warning users. [akpm@linux-foundation.org: better warning message] Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
045f902de5
commit
8e9073ed02
2 changed files with 19 additions and 0 deletions
|
@ -82,6 +82,17 @@ Who: Dominik Brodowski <linux@brodo.de>
|
||||||
|
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
|
What: a.out interpreter support for ELF executables
|
||||||
|
When: 2.6.25
|
||||||
|
Files: fs/binfmt_elf.c
|
||||||
|
Why: Using a.out interpreters for ELF executables was a feature for
|
||||||
|
transition from a.out to ELF. But now it is unlikely to be still
|
||||||
|
needed anymore and removing it would simplify the hairy ELF
|
||||||
|
loader code.
|
||||||
|
Who: Andi Kleen <ak@suse.de>
|
||||||
|
|
||||||
|
---------------------------
|
||||||
|
|
||||||
What: remove EXPORT_SYMBOL(kernel_thread)
|
What: remove EXPORT_SYMBOL(kernel_thread)
|
||||||
When: August 2006
|
When: August 2006
|
||||||
Files: arch/*/kernel/*_ksyms.c
|
Files: arch/*/kernel/*_ksyms.c
|
||||||
|
|
|
@ -730,6 +730,7 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
|
||||||
|
|
||||||
/* Some simple consistency checks for the interpreter */
|
/* Some simple consistency checks for the interpreter */
|
||||||
if (elf_interpreter) {
|
if (elf_interpreter) {
|
||||||
|
static int warn;
|
||||||
interpreter_type = INTERPRETER_ELF | INTERPRETER_AOUT;
|
interpreter_type = INTERPRETER_ELF | INTERPRETER_AOUT;
|
||||||
|
|
||||||
/* Now figure out which format our binary is */
|
/* Now figure out which format our binary is */
|
||||||
|
@ -741,6 +742,13 @@ static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs)
|
||||||
if (memcmp(loc->interp_elf_ex.e_ident, ELFMAG, SELFMAG) != 0)
|
if (memcmp(loc->interp_elf_ex.e_ident, ELFMAG, SELFMAG) != 0)
|
||||||
interpreter_type &= ~INTERPRETER_ELF;
|
interpreter_type &= ~INTERPRETER_ELF;
|
||||||
|
|
||||||
|
if (interpreter_type == INTERPRETER_AOUT && warn < 10) {
|
||||||
|
printk(KERN_WARNING "a.out ELF interpreter %s is "
|
||||||
|
"deprecated and will not be supported "
|
||||||
|
"after Linux 2.6.25\n", elf_interpreter);
|
||||||
|
warn++;
|
||||||
|
}
|
||||||
|
|
||||||
retval = -ELIBBAD;
|
retval = -ELIBBAD;
|
||||||
if (!interpreter_type)
|
if (!interpreter_type)
|
||||||
goto out_free_dentry;
|
goto out_free_dentry;
|
||||||
|
|
Loading…
Reference in a new issue