summaryrefslogtreecommitdiffstats
path: root/target/linux/linux-2.4/patches/108-optional_aout_support.patch
diff options
context:
space:
mode:
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2005-05-28 09:17:29 +0000
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2005-05-28 09:17:29 +0000
commit76ed58d705e7f3892a1259abcd92882a527e7b53 (patch)
tree80dfa6ecb493ee8cb9ca1436f1b37ee89f320a55 /target/linux/linux-2.4/patches/108-optional_aout_support.patch
parente285af3e184318b0fefeab597ae5ee4a2628422d (diff)
move package/linux into target/linux, use wbx' new kernel code. support building images with more than one kernel, split kernel module parts off of packages that use their own kernel modules (fuse, shfs, openswan). some cleanup in the image building process in target/. image builder is disabled for now, needs some fixing.
git-svn-id: svn://svn.openwrt.org/openwrt/trunk/openwrt@1085 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/linux-2.4/patches/108-optional_aout_support.patch')
-rw-r--r--target/linux/linux-2.4/patches/108-optional_aout_support.patch688
1 files changed, 688 insertions, 0 deletions
diff --git a/target/linux/linux-2.4/patches/108-optional_aout_support.patch b/target/linux/linux-2.4/patches/108-optional_aout_support.patch
new file mode 100644
index 000000000..56dc1991c
--- /dev/null
+++ b/target/linux/linux-2.4/patches/108-optional_aout_support.patch
@@ -0,0 +1,688 @@
+diff -urPX nopatch linux-2.4.26/Documentation/Configure.help linux/Documentation/Configure.help
+--- linux-2.4.26/Documentation/Configure.help Sat Apr 17 02:10:25 2004
++++ linux/Documentation/Configure.help Sat Apr 17 02:13:54 2004
+@@ -4622,6 +4622,12 @@
+ will be called binfmt_elf.o. Saying M or N here is dangerous because
+ some crucial programs on your system might be in ELF format.
+
++ELF binaries with a.out format interpreters or a.out libraries
++CONFIG_BINFMT_ELF_AOUT
++ The kernel may support ELF executables which use an a.out format
++ interpreter (dynamic linker) and/or a.out shared libraries, in
++ addition to the usual ELF-ELF setups. You shouldn't need this.
++
+ Kernel support for a.out binaries
+ CONFIG_BINFMT_AOUT
+ A.out (Assembler.OUTput) is a set of formats for libraries and
+@@ -4635,13 +4641,11 @@
+ warrant removing support. However its removal is a good idea if you
+ wish to ensure that absolutely none of your programs will use this
+ older executable format. If you don't know what to answer at this
+- point then answer Y. If someone told you "You need a kernel with
++ point then answer N. If someone told you "You need a kernel with
+ QMAGIC support" then you'll have to say Y here. You may answer M to
+ compile a.out support as a module and later load the module when you
+ want to use a program or library in a.out format. The module will be
+- called binfmt_aout.o. Saying M or N here is dangerous though,
+- because some crucial programs on your system might still be in A.OUT
+- format.
++ called binfmt_aout.o.
+
+ OSF/1 v4 readv/writev compatibility
+ CONFIG_OSF4_COMPAT
+diff -urPX nopatch linux-2.4.26/arch/alpha/config.in linux/arch/alpha/config.in
+--- linux-2.4.26/arch/alpha/config.in Fri Feb 20 10:07:20 2004
++++ linux/arch/alpha/config.in Sat Apr 17 02:13:54 2004
+@@ -315,6 +315,9 @@
+ fi
+
+ bool 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF
++if [ "$CONFIG_BINFMT_ELF" != "n" ]; then
++ bool ' ELF binaries with a.out format interpreters or a.out libraries' CONFIG_BINFMT_ELF_AOUT
++fi
+ tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
+ tristate 'Kernel support for Linux/Intel ELF binaries' CONFIG_BINFMT_EM86
+ source drivers/parport/Config.in
+diff -urPX nopatch linux-2.4.26/arch/alpha/defconfig linux/arch/alpha/defconfig
+--- linux-2.4.26/arch/alpha/defconfig Fri Feb 20 10:07:20 2004
++++ linux/arch/alpha/defconfig Sat Apr 17 02:13:54 2004
+@@ -72,6 +72,7 @@
+ # CONFIG_KCORE_AOUT is not set
+ # CONFIG_BINFMT_AOUT is not set
+ CONFIG_BINFMT_ELF=y
++# CONFIG_BINFMT_ELF_AOUT is not set
+ # CONFIG_BINFMT_MISC is not set
+ # CONFIG_BINFMT_EM86 is not set
+
+diff -urPX nopatch linux-2.4.26/arch/arm/config.in linux/arch/arm/config.in
+--- linux-2.4.26/arch/arm/config.in Fri Feb 20 10:07:20 2004
++++ linux/arch/arm/config.in Sat Apr 17 02:13:54 2004
+@@ -499,6 +499,9 @@
+ A.OUT CONFIG_KCORE_AOUT" ELF
+ tristate 'Kernel support for a.out binaries' CONFIG_BINFMT_AOUT
+ bool 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF
++if [ "$CONFIG_BINFMT_ELF" != "n" ]; then
++ bool ' ELF binaries with a.out format interpreters or a.out libraries' CONFIG_BINFMT_ELF_AOUT
++fi
+ tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
+ dep_bool 'Power Management support (experimental)' CONFIG_PM $CONFIG_EXPERIMENTAL
+ dep_tristate 'RISC OS personality' CONFIG_ARTHUR $CONFIG_CPU_32
+diff -urPX nopatch linux-2.4.26/arch/arm/defconfig linux/arch/arm/defconfig
+--- linux-2.4.26/arch/arm/defconfig Fri Feb 20 10:07:21 2004
++++ linux/arch/arm/defconfig Sat Apr 17 02:13:54 2004
+@@ -83,8 +83,9 @@
+ CONFIG_NWFPE=y
+ CONFIG_KCORE_ELF=y
+ # CONFIG_KCORE_AOUT is not set
+-CONFIG_BINFMT_AOUT=y
++# CONFIG_BINFMT_AOUT is not set
+ CONFIG_BINFMT_ELF=y
++# CONFIG_BINFMT_ELF_AOUT is not set
+ # CONFIG_BINFMT_MISC is not set
+ # CONFIG_PM is not set
+ # CONFIG_ARTHUR is not set
+diff -urPX nopatch linux-2.4.26/arch/cris/config.in linux/arch/cris/config.in
+--- linux-2.4.26/arch/cris/config.in Fri Feb 20 10:07:21 2004
++++ linux/arch/cris/config.in Sat Apr 17 02:13:54 2004
+@@ -31,6 +31,9 @@
+ bool 'Sysctl support' CONFIG_SYSCTL
+
+ bool 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF
++if [ "$CONFIG_BINFMT_ELF" != "n" ]; then
++ bool ' ELF binaries with a.out format interpreters or a.out libraries' CONFIG_BINFMT_ELF_AOUT
++fi
+
+ string 'Kernel command line' CONFIG_ETRAX_CMDLINE "root=/dev/mtdblock3"
+
+diff -urPX nopatch linux-2.4.26/arch/cris/defconfig linux/arch/cris/defconfig
+--- linux-2.4.26/arch/cris/defconfig Fri Feb 20 10:07:21 2004
++++ linux/arch/cris/defconfig Sat Apr 17 02:13:54 2004
+@@ -18,6 +18,7 @@
+ # CONFIG_BSD_PROCESS_ACCT is not set
+ # CONFIG_SYSCTL is not set
+ CONFIG_BINFMT_ELF=y
++# CONFIG_BINFMT_ELF_AOUT is not set
+ # CONFIG_ETRAX_KGDB is not set
+ # CONFIG_ETRAX_WATCHDOG is not set
+
+diff -urPX nopatch linux-2.4.26/arch/i386/config.in linux/arch/i386/config.in
+--- linux-2.4.26/arch/i386/config.in Fri Feb 20 10:07:21 2004
++++ linux/arch/i386/config.in Sat Apr 17 02:13:54 2004
+@@ -327,6 +327,9 @@
+ fi
+ tristate 'Kernel support for a.out binaries' CONFIG_BINFMT_AOUT
+ bool 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF
++if [ "$CONFIG_BINFMT_ELF" != "n" ]; then
++ bool ' ELF binaries with a.out format interpreters or a.out libraries' CONFIG_BINFMT_ELF_AOUT
++fi
+ tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
+ bool 'Select task to kill on out of memory condition' CONFIG_OOM_KILLER
+
+diff -urPX nopatch linux-2.4.26/arch/i386/defconfig linux/arch/i386/defconfig
+--- linux-2.4.26/arch/i386/defconfig Sat Apr 17 02:10:25 2004
++++ linux/arch/i386/defconfig Sat Apr 17 02:23:27 2004
+@@ -110,9 +110,10 @@
+ CONFIG_SYSCTL=y
+ CONFIG_KCORE_ELF=y
+ # CONFIG_KCORE_AOUT is not set
+-CONFIG_BINFMT_AOUT=y
++# CONFIG_BINFMT_AOUT is not set
+ CONFIG_BINFMT_ELF=y
+-CONFIG_BINFMT_MISC=y
++# CONFIG_BINFMT_ELF_AOUT is not set
++# CONFIG_BINFMT_MISC is not set
+ # CONFIG_OOM_KILLER is not set
+ CONFIG_PM=y
+ # CONFIG_APM is not set
+diff -urPX nopatch linux-2.4.26/arch/ia64/config.in linux/arch/ia64/config.in
+--- linux-2.4.26/arch/ia64/config.in Fri Feb 20 10:07:21 2004
++++ linux/arch/ia64/config.in Sat Apr 17 02:13:54 2004
+@@ -124,6 +124,9 @@
+ bool 'BSD Process Accounting' CONFIG_BSD_PROCESS_ACCT
+ bool 'Sysctl support' CONFIG_SYSCTL
+ bool 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF
++if [ "$CONFIG_BINFMT_ELF" != "n" ]; then
++ bool ' ELF binaries with a.out format interpreters or a.out libraries' CONFIG_BINFMT_ELF_AOUT
++fi
+ tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
+
+ if [ "$CONFIG_IA64_HP_SIM" = "n" ]; then
+diff -urPX nopatch linux-2.4.26/arch/ia64/defconfig linux/arch/ia64/defconfig
+--- linux-2.4.26/arch/ia64/defconfig Fri Feb 20 10:07:21 2004
++++ linux/arch/ia64/defconfig Sat Apr 17 02:13:54 2004
+@@ -60,6 +60,7 @@
+ # CONFIG_BSD_PROCESS_ACCT is not set
+ CONFIG_SYSCTL=y
+ CONFIG_BINFMT_ELF=y
++# CONFIG_BINFMT_ELF_AOUT is not set
+ # CONFIG_BINFMT_MISC is not set
+ CONFIG_ACPI=y
+ CONFIG_ACPI_EFI=y
+diff -urPX nopatch linux-2.4.26/arch/m68k/config.in linux/arch/m68k/config.in
+--- linux-2.4.26/arch/m68k/config.in Fri Feb 20 10:07:22 2004
++++ linux/arch/m68k/config.in Sat Apr 17 02:13:55 2004
+@@ -99,6 +99,9 @@
+ fi
+ tristate 'Kernel support for a.out binaries' CONFIG_BINFMT_AOUT
+ bool 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF
++if [ "$CONFIG_BINFMT_ELF" != "n" ]; then
++ bool ' ELF binaries with a.out format interpreters or a.out libraries' CONFIG_BINFMT_ELF_AOUT
++fi
+ tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
+
+ if [ "$CONFIG_AMIGA" = "y" ]; then
+diff -urPX nopatch linux-2.4.26/arch/m68k/defconfig linux/arch/m68k/defconfig
+--- linux-2.4.26/arch/m68k/defconfig Fri Feb 20 10:07:22 2004
++++ linux/arch/m68k/defconfig Sat Apr 17 02:13:55 2004
+@@ -44,8 +44,9 @@
+ CONFIG_SYSCTL=y
+ CONFIG_KCORE_ELF=y
+ # CONFIG_KCORE_AOUT is not set
+-CONFIG_BINFMT_AOUT=y
++# CONFIG_BINFMT_AOUT is not set
+ CONFIG_BINFMT_ELF=y
++# CONFIG_BINFMT_ELF_AOUT is not set
+ # CONFIG_BINFMT_MISC is not set
+ CONFIG_ZORRO=y
+ # CONFIG_AMIGA_PCMCIA is not set
+diff -urPX nopatch linux-2.4.26/arch/mips/config-shared.in linux/arch/mips/config-shared.in
+--- linux-2.4.26/arch/mips/config-shared.in Fri Feb 20 10:07:22 2004
++++ linux/arch/mips/config-shared.in Sat Apr 17 02:13:55 2004
+@@ -944,6 +944,9 @@
+ define_bool CONFIG_KCORE_AOUT n
+ define_bool CONFIG_BINFMT_AOUT n
+ bool 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF
++if [ "$CONFIG_BINFMT_ELF" != "n" ]; then
++ bool ' ELF binaries with a.out format interpreters or a.out libraries' CONFIG_BINFMT_ELF_AOUT
++fi
+ dep_bool 'Kernel support for Linux/MIPS 32-bit binary compatibility' CONFIG_MIPS32_COMPAT $CONFIG_MIPS64
+ dep_bool 'Kernel support for o32 binaries' CONFIG_MIPS32_O32 $CONFIG_MIPS32_COMPAT
+ dep_bool 'Kernel support for n32 binaries' CONFIG_MIPS32_N32 $CONFIG_MIPS32_COMPAT
+diff -urPX nopatch linux-2.4.26/arch/mips/defconfig linux/arch/mips/defconfig
+--- linux-2.4.26/arch/mips/defconfig Fri Feb 20 10:07:22 2004
++++ linux/arch/mips/defconfig Sat Apr 17 02:13:55 2004
+@@ -139,6 +139,7 @@
+ # CONFIG_KCORE_AOUT is not set
+ # CONFIG_BINFMT_AOUT is not set
+ CONFIG_BINFMT_ELF=y
++# CONFIG_BINFMT_ELF_AOUT is not set
+ # CONFIG_MIPS32_COMPAT is not set
+ # CONFIG_MIPS32_O32 is not set
+ # CONFIG_MIPS32_N32 is not set
+diff -urPX nopatch linux-2.4.26/arch/mips/kernel/irixelf.c linux/arch/mips/kernel/irixelf.c
+--- linux-2.4.26/arch/mips/kernel/irixelf.c Mon Aug 25 11:44:40 2003
++++ linux/arch/mips/kernel/irixelf.c Sat Apr 17 02:13:55 2004
+@@ -8,6 +8,7 @@
+ * Copyright 1993, 1994: Eric Youngdale (ericy@cais.com).
+ */
+
++#include <linux/config.h>
+ #include <linux/module.h>
+
+ #include <linux/fs.h>
+@@ -48,7 +49,12 @@
+ extern int dump_fpu (elf_fpregset_t *);
+
+ static struct linux_binfmt irix_format = {
+- NULL, THIS_MODULE, load_irix_binary, load_irix_library,
++ NULL, THIS_MODULE, load_irix_binary,
++#ifdef CONFIG_BINFMT_ELF_AOUT
++ load_irix_library,
++#else
++ NULL,
++#endif
+ irix_core_dump, PAGE_SIZE
+ };
+
+@@ -787,6 +793,7 @@
+ goto out;
+ }
+
++#ifdef CONFIG_BINFMT_ELF_AOUT
+ /* This is really simpleminded and specialized - we are loading an
+ * a.out library that is given an ELF header.
+ */
+@@ -863,6 +870,7 @@
+ kfree(elf_phdata);
+ return 0;
+ }
++#endif
+
+ /* Called through irix_syssgi() to map an elf image given an FD,
+ * a phdr ptr USER_PHDRP in userspace, and a count CNT telling how many
+diff -urPX nopatch linux-2.4.26/arch/mips64/defconfig linux/arch/mips64/defconfig
+--- linux-2.4.26/arch/mips64/defconfig Fri Feb 20 10:07:24 2004
++++ linux/arch/mips64/defconfig Sat Apr 17 02:13:55 2004
+@@ -137,6 +137,7 @@
+ # CONFIG_KCORE_AOUT is not set
+ # CONFIG_BINFMT_AOUT is not set
+ CONFIG_BINFMT_ELF=y
++# CONFIG_BINFMT_ELF_AOUT is not set
+ CONFIG_MIPS32_COMPAT=y
+ CONFIG_MIPS32_O32=y
+ # CONFIG_MIPS32_N32 is not set
+diff -urPX nopatch linux-2.4.26/arch/parisc/config.in linux/arch/parisc/config.in
+--- linux-2.4.26/arch/parisc/config.in Fri Feb 20 10:07:25 2004
++++ linux/arch/parisc/config.in Sat Apr 17 02:13:55 2004
+@@ -89,6 +89,9 @@
+ bool 'Sysctl support' CONFIG_SYSCTL
+ define_bool CONFIG_KCORE_ELF y
+ bool 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF
++if [ "$CONFIG_BINFMT_ELF" != "n" ]; then
++ bool ' ELF binaries with a.out format interpreters or a.out libraries' CONFIG_BINFMT_ELF_AOUT
++fi
+ tristate 'Kernel support for SOM binaries' CONFIG_BINFMT_SOM
+ tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
+
+diff -urPX nopatch linux-2.4.26/arch/parisc/defconfig linux/arch/parisc/defconfig
+--- linux-2.4.26/arch/parisc/defconfig Fri Feb 20 10:07:25 2004
++++ linux/arch/parisc/defconfig Sat Apr 17 02:13:55 2004
+@@ -56,6 +56,7 @@
+ CONFIG_SYSCTL=y
+ CONFIG_KCORE_ELF=y
+ CONFIG_BINFMT_ELF=y
++# CONFIG_BINFMT_ELF_AOUT is not set
+ CONFIG_BINFMT_SOM=y
+ # CONFIG_BINFMT_MISC is not set
+ # CONFIG_PM is not set
+diff -urPX nopatch linux-2.4.26/arch/ppc/config.in linux/arch/ppc/config.in
+--- linux-2.4.26/arch/ppc/config.in Sat Apr 17 02:10:25 2004
++++ linux/arch/ppc/config.in Sat Apr 17 02:13:55 2004
+@@ -384,6 +384,7 @@
+ fi
+ define_bool CONFIG_BINFMT_ELF y
+ define_bool CONFIG_KERNEL_ELF y
++bool 'ELF binaries with a.out format interpreters or a.out libraries' CONFIG_BINFMT_ELF_AOUT
+ tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
+ bool 'Select task to kill on out of memory condition' CONFIG_OOM_KILLER
+
+diff -urPX nopatch linux-2.4.26/arch/ppc/defconfig linux/arch/ppc/defconfig
+--- linux-2.4.26/arch/ppc/defconfig Fri Feb 20 10:07:25 2004
++++ linux/arch/ppc/defconfig Sat Apr 17 02:13:55 2004
+@@ -59,7 +59,8 @@
+ CONFIG_KCORE_ELF=y
+ CONFIG_BINFMT_ELF=y
+ CONFIG_KERNEL_ELF=y
+-CONFIG_BINFMT_MISC=m
++# CONFIG_BINFMT_ELF_AOUT is not set
++# CONFIG_BINFMT_MISC is not set
+ # CONFIG_OOM_KILLER is not set
+ CONFIG_PCI_NAMES=y
+ CONFIG_HOTPLUG=y
+diff -urPX nopatch linux-2.4.26/arch/ppc64/config.in linux/arch/ppc64/config.in
+--- linux-2.4.26/arch/ppc64/config.in Fri Feb 20 10:07:25 2004
++++ linux/arch/ppc64/config.in Sat Apr 17 02:13:55 2004
+@@ -82,6 +82,9 @@
+ fi
+
+ bool 'Kernel support for 64 bit ELF binaries' CONFIG_BINFMT_ELF
++if [ "$CONFIG_BINFMT_ELF" != "n" ]; then
++ bool ' ELF binaries with a.out format interpreters or a.out libraries' CONFIG_BINFMT_ELF_AOUT
++fi
+
+ tristate 'Kernel support for 32 bit ELF binaries' CONFIG_BINFMT_ELF32
+
+diff -urPX nopatch linux-2.4.26/arch/ppc64/defconfig linux/arch/ppc64/defconfig
+--- linux-2.4.26/arch/ppc64/defconfig Fri Feb 20 10:07:25 2004
++++ linux/arch/ppc64/defconfig Sat Apr 17 02:13:55 2004
+@@ -56,6 +56,7 @@
+ # CONFIG_BSD_PROCESS_ACCT is not set
+ CONFIG_KCORE_ELF=y
+ CONFIG_BINFMT_ELF=y
++# CONFIG_BINFMT_ELF_AOUT is not set
+ CONFIG_BINFMT_ELF32=y
+ # CONFIG_BINFMT_MISC is not set
+ CONFIG_PCI_NAMES=y
+diff -urPX nopatch linux-2.4.26/arch/s390/config.in linux/arch/s390/config.in
+--- linux-2.4.26/arch/s390/config.in Fri Nov 28 18:26:19 2003
++++ linux/arch/s390/config.in Sat Apr 17 02:13:55 2004
+@@ -58,6 +58,9 @@
+ bool 'Sysctl support' CONFIG_SYSCTL
+ define_bool CONFIG_KCORE_ELF y
+ bool 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF
++if [ "$CONFIG_BINFMT_ELF" != "n" ]; then
++ bool ' ELF binaries with a.out format interpreters or a.out libraries' CONFIG_BINFMT_ELF_AOUT
++fi
+ tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
+ bool 'Show crashed user process info' CONFIG_PROCESS_DEBUG
+ bool 'Pseudo page fault support' CONFIG_PFAULT
+diff -urPX nopatch linux-2.4.26/arch/s390/defconfig linux/arch/s390/defconfig
+--- linux-2.4.26/arch/s390/defconfig Fri Feb 20 10:07:26 2004
++++ linux/arch/s390/defconfig Sat Apr 17 02:13:55 2004
+@@ -46,6 +46,7 @@
+ CONFIG_SYSCTL=y
+ CONFIG_KCORE_ELF=y
+ CONFIG_BINFMT_ELF=y
++# CONFIG_BINFMT_ELF_AOUT is not set
+ # CONFIG_BINFMT_MISC is not set
+ # CONFIG_PROCESS_DEBUG is not set
+ CONFIG_PFAULT=y
+diff -urPX nopatch linux-2.4.26/arch/s390x/config.in linux/arch/s390x/config.in
+--- linux-2.4.26/arch/s390x/config.in Fri Nov 28 18:26:19 2003
++++ linux/arch/s390x/config.in Sat Apr 17 02:13:55 2004
+@@ -61,6 +61,9 @@
+ bool 'Sysctl support' CONFIG_SYSCTL
+ define_bool CONFIG_KCORE_ELF y
+ bool 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF
++if [ "$CONFIG_BINFMT_ELF" != "n" ]; then
++ bool ' ELF binaries with a.out format interpreters or a.out libraries' CONFIG_BINFMT_ELF_AOUT
++fi
+ tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
+ bool 'Show crashed user process info' CONFIG_PROCESS_DEBUG
+ bool 'Pseudo page fault support' CONFIG_PFAULT
+diff -urPX nopatch linux-2.4.26/arch/s390x/defconfig linux/arch/s390x/defconfig
+--- linux-2.4.26/arch/s390x/defconfig Fri Feb 20 10:07:26 2004
++++ linux/arch/s390x/defconfig Sat Apr 17 02:13:55 2004
+@@ -47,6 +47,7 @@
+ CONFIG_SYSCTL=y
+ CONFIG_KCORE_ELF=y
+ CONFIG_BINFMT_ELF=y
++# CONFIG_BINFMT_ELF_AOUT is not set
+ # CONFIG_BINFMT_MISC is not set
+ # CONFIG_PROCESS_DEBUG is not set
+ CONFIG_PFAULT=y
+diff -urPX nopatch linux-2.4.26/arch/sh/config.in linux/arch/sh/config.in
+--- linux-2.4.26/arch/sh/config.in Fri Feb 20 10:07:26 2004
++++ linux/arch/sh/config.in Sat Apr 17 02:13:55 2004
+@@ -283,6 +283,9 @@
+ A.OUT CONFIG_KCORE_AOUT" ELF
+ fi
+ bool 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF
++if [ "$CONFIG_BINFMT_ELF" != "n" ]; then
++ bool ' ELF binaries with a.out format interpreters or a.out libraries' CONFIG_BINFMT_ELF_AOUT
++fi
+ tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
+
+ bool 'Select task to kill on out of memory condition' CONFIG_OOM_KILLER
+diff -urPX nopatch linux-2.4.26/arch/sh/defconfig linux/arch/sh/defconfig
+--- linux-2.4.26/arch/sh/defconfig Fri Feb 20 10:07:26 2004
++++ linux/arch/sh/defconfig Sat Apr 17 02:13:55 2004
+@@ -48,6 +48,7 @@
+ CONFIG_KCORE_ELF=y
+ # CONFIG_KCORE_AOUT is not set
+ CONFIG_BINFMT_ELF=y
++# CONFIG_BINFMT_ELF_AOUT is not set
+ # CONFIG_BINFMT_MISC is not set
+
+ #
+diff -urPX nopatch linux-2.4.26/arch/sparc/config.in linux/arch/sparc/config.in
+--- linux-2.4.26/arch/sparc/config.in Fri Feb 20 10:07:26 2004
++++ linux/arch/sparc/config.in Sat Apr 17 02:13:55 2004
+@@ -74,6 +74,9 @@
+ fi
+ tristate 'Kernel support for a.out binaries' CONFIG_BINFMT_AOUT
+ bool 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF
++if [ "$CONFIG_BINFMT_ELF" != "n" ]; then
++ bool ' ELF binaries with a.out format interpreters or a.out libraries' CONFIG_BINFMT_ELF_AOUT
++fi
+ tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
+ bool 'SunOS binary emulation' CONFIG_SUNOS_EMUL
+ bool 'Select task to kill on out of memory condition' CONFIG_OOM_KILLER
+diff -urPX nopatch linux-2.4.26/arch/sparc/defconfig linux/arch/sparc/defconfig
+--- linux-2.4.26/arch/sparc/defconfig Sat Apr 17 02:10:25 2004
++++ linux/arch/sparc/defconfig Sat Apr 17 02:13:55 2004
+@@ -49,9 +49,10 @@
+ # CONFIG_BSD_PROCESS_ACCT is not set
+ CONFIG_SYSCTL=y
+ CONFIG_KCORE_ELF=y
+-CONFIG_BINFMT_AOUT=y
++# CONFIG_BINFMT_AOUT is not set
+ CONFIG_BINFMT_ELF=y
+-CONFIG_BINFMT_MISC=m
++# CONFIG_BINFMT_ELF_AOUT is not set
++# CONFIG_BINFMT_MISC is not set
+ CONFIG_SUNOS_EMUL=y
+ # CONFIG_OOM_KILLER is not set
+
+diff -urPX nopatch linux-2.4.26/arch/sparc64/config.in linux/arch/sparc64/config.in
+--- linux-2.4.26/arch/sparc64/config.in Fri Feb 20 10:07:26 2004
++++ linux/arch/sparc64/config.in Sat Apr 17 02:13:55 2004
+@@ -77,6 +77,9 @@
+ bool ' Kernel support for 32-bit (ie. SunOS) a.out binaries' CONFIG_BINFMT_AOUT32
+ fi
+ bool 'Kernel support for 64-bit ELF binaries' CONFIG_BINFMT_ELF
++if [ "$CONFIG_BINFMT_ELF" != "n" ]; then
++ bool ' ELF binaries with a.out format interpreters or a.out libraries' CONFIG_BINFMT_ELF_AOUT
++fi
+ tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
+ bool 'SunOS binary emulation' CONFIG_SUNOS_EMUL
+ if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
+diff -urPX nopatch linux-2.4.26/arch/sparc64/defconfig linux/arch/sparc64/defconfig
+--- linux-2.4.26/arch/sparc64/defconfig Sat Apr 17 02:10:26 2004
++++ linux/arch/sparc64/defconfig Sat Apr 17 02:13:55 2004
+@@ -56,7 +56,8 @@
+ CONFIG_BINFMT_ELF32=y
+ # CONFIG_BINFMT_AOUT32 is not set
+ CONFIG_BINFMT_ELF=y
+-CONFIG_BINFMT_MISC=m
++# CONFIG_BINFMT_ELF_AOUT is not set
++# CONFIG_BINFMT_MISC is not set
+ # CONFIG_SUNOS_EMUL is not set
+ CONFIG_SOLARIS_EMUL=m
+ # CONFIG_OOM_KILLER is not set
+diff -urPX nopatch linux-2.4.26/arch/x86_64/config.in linux/arch/x86_64/config.in
+--- linux-2.4.26/arch/x86_64/config.in Sat Apr 17 02:10:26 2004
++++ linux/arch/x86_64/config.in Sat Apr 17 02:13:55 2004
+@@ -118,6 +118,9 @@
+ fi
+ #tristate 'Kernel support for a.out binaries' CONFIG_BINFMT_AOUT
+ bool 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF
++if [ "$CONFIG_BINFMT_ELF" != "n" ]; then
++ bool ' ELF binaries with a.out format interpreters or a.out libraries' CONFIG_BINFMT_ELF_AOUT
++fi
+ tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
+
+ bool 'Power Management support' CONFIG_PM
+diff -urPX nopatch linux-2.4.26/arch/x86_64/defconfig linux/arch/x86_64/defconfig
+--- linux-2.4.26/arch/x86_64/defconfig Sat Apr 17 02:10:26 2004
++++ linux/arch/x86_64/defconfig Sat Apr 17 02:13:55 2004
+@@ -67,6 +67,7 @@
+ CONFIG_SYSCTL=y
+ CONFIG_KCORE_ELF=y
+ CONFIG_BINFMT_ELF=y
++# CONFIG_BINFMT_ELF_AOUT is not set
+ # CONFIG_BINFMT_MISC is not set
+ CONFIG_PM=y
+ CONFIG_IA32_EMULATION=y
+diff -urPX nopatch linux-2.4.26/fs/binfmt_elf.c linux/fs/binfmt_elf.c
+--- linux-2.4.26/fs/binfmt_elf.c Sat Apr 17 02:10:31 2004
++++ linux/fs/binfmt_elf.c Sat Apr 17 02:13:55 2004
+@@ -9,6 +9,7 @@
+ * Copyright 1993, 1994: Eric Youngdale (ericy@cais.com).
+ */
+
++#include <linux/config.h>
+ #include <linux/module.h>
+
+ #include <linux/fs.h>
+@@ -43,7 +44,9 @@
+ #include <linux/elf.h>
+
+ static int load_elf_binary(struct linux_binprm * bprm, struct pt_regs * regs);
++#ifdef CONFIG_BINFMT_ELF_AOUT
+ static int load_elf_library(struct file*);
++#endif
+ static unsigned long elf_map (struct file *, unsigned long, struct elf_phdr *, int, int);
+ extern int dump_fpu (struct pt_regs *, elf_fpregset_t *);
+ extern void dump_thread(struct pt_regs *, struct user *);
+@@ -73,8 +76,14 @@
+ #define ELF_PAGEOFFSET(_v) ((_v) & (ELF_MIN_ALIGN-1))
+ #define ELF_PAGEALIGN(_v) (((_v) + ELF_MIN_ALIGN - 1) & ~(ELF_MIN_ALIGN - 1))
+
+-static struct linux_binfmt elf_format = {
+- NULL, THIS_MODULE, load_elf_binary, load_elf_library, elf_core_dump, ELF_EXEC_PAGESIZE
++static struct linux_binfmt elf_format = {
++ NULL, THIS_MODULE, load_elf_binary,
++#ifdef CONFIG_BINFMT_ELF_AOUT
++ load_elf_library,
++#else
++ NULL,
++#endif
++ elf_core_dump, ELF_EXEC_PAGESIZE
+ };
+
+ #define BAD_ADDR(x) ((unsigned long)(x) > TASK_SIZE)
+@@ -369,6 +378,7 @@
+ return error;
+ }
+
++#ifdef CONFIG_BINFMT_ELF_AOUT
+ static unsigned long load_aout_interp(struct exec * interp_ex,
+ struct file * interpreter)
+ {
+@@ -413,6 +423,7 @@
+ out:
+ return elf_entry;
+ }
++#endif
+
+ /*
+ * These are the functions used to load ELF style executables and shared
+@@ -420,7 +431,9 @@
+ */
+
+ #define INTERPRETER_NONE 0
++#ifdef CONFIG_BINFMT_ELF_AOUT
+ #define INTERPRETER_AOUT 1
++#endif
+ #define INTERPRETER_ELF 2
+
+
+@@ -444,7 +457,9 @@
+ struct elfhdr elf_ex;
+ struct elfhdr interp_elf_ex;
+ struct exec interp_ex;
++#ifdef CONFIG_BINFMT_ELF_AOUT
+ char passed_fileno[6];
++#endif
+ struct files_struct *files;
+
+ /* Get the exec-header */
+@@ -556,6 +571,7 @@
+
+ /* Some simple consistency checks for the interpreter */
+ if (elf_interpreter) {
++#ifdef CONFIG_BINFMT_ELF_AOUT
+ interpreter_type = INTERPRETER_ELF | INTERPRETER_AOUT;
+
+ /* Now figure out which format our binary is */
+@@ -563,6 +579,9 @@
+ (N_MAGIC(interp_ex) != ZMAGIC) &&
+ (N_MAGIC(interp_ex) != QMAGIC))
+ interpreter_type = INTERPRETER_ELF;
++#else
++ interpreter_type = INTERPRETER_ELF;
++#endif
+
+ if (memcmp(interp_elf_ex.e_ident, ELFMAG, SELFMAG) != 0)
+ interpreter_type &= ~INTERPRETER_ELF;
+@@ -571,6 +590,7 @@
+ if (!interpreter_type)
+ goto out_free_dentry;
+
++#ifdef CONFIG_BINFMT_ELF_AOUT
+ /* Make sure only one type was selected */
+ if ((interpreter_type & INTERPRETER_ELF) &&
+ interpreter_type != INTERPRETER_ELF) {
+@@ -578,6 +598,7 @@
+ // printk(KERN_WARNING "ELF: Ambiguous type, using ELF\n");
+ interpreter_type = INTERPRETER_ELF;
+ }
++#endif
+ /* Verify the interpreter has a valid arch */
+ if ((interpreter_type == INTERPRETER_ELF) &&
+ !elf_check_arch(&interp_elf_ex))
+@@ -590,6 +611,7 @@
+ /* OK, we are done with that, now set up the arg stuff,
+ and then start this sucker up */
+
++#ifdef CONFIG_BINFMT_ELF_AOUT
+ if (!bprm->sh_bang) {
+ char * passed_p;
+
+@@ -605,6 +627,7 @@
+ }
+ }
+ }
++#endif
+
+ /* Flush all traces of the currently running executable */
+ retval = flush_old_exec(bprm);
+@@ -721,10 +744,12 @@
+ end_data += load_bias;
+
+ if (elf_interpreter) {
++#ifdef CONFIG_BINFMT_ELF_AOUT
+ if (interpreter_type == INTERPRETER_AOUT)
+ elf_entry = load_aout_interp(&interp_ex,
+ interpreter);
+ else
++#endif
+ elf_entry = load_elf_interp(&interp_elf_ex,
+ interpreter,
+ &interp_load_addr);
+@@ -743,7 +768,9 @@
+
+ kfree(elf_phdata);
+
++#ifdef CONFIG_BINFMT_ELF_AOUT
+ if (interpreter_type != INTERPRETER_AOUT)
++#endif
+ sys_close(elf_exec_fileno);
+
+ set_binfmt(&elf_format);
+@@ -757,10 +784,14 @@
+ &elf_ex,
+ load_addr, load_bias,
+ interp_load_addr,
++#ifdef CONFIG_BINFMT_ELF_AOUT
+ (interpreter_type == INTERPRETER_AOUT ? 0 : 1));
+ /* N.B. passed_fileno might not be initialized? */
+ if (interpreter_type == INTERPRETER_AOUT)
+ current->mm->arg_start += strlen(passed_fileno) + 1;
++#else
++ 1);
++#endif
+ current->mm->start_brk = current->mm->brk = elf_brk;
+ current->mm->end_code = end_code;
+ current->mm->start_code = start_code;
+@@ -838,9 +869,9 @@
+ goto out;
+ }
+
++#ifdef CONFIG_BINFMT_ELF_AOUT
+ /* This is really simpleminded and specialized - we are loading an
+ a.out library that is given an ELF header. */
+-
+ static int load_elf_library(struct file *file)
+ {
+ struct elf_phdr *elf_phdata;
+@@ -911,6 +942,7 @@
+ out:
+ return error;
+ }
++#endif
+
+ /*
+ * Note that some platforms still use traditional core dumps and not
+diff -urPX nopatch linux-2.4.26/fs/exec.c linux/fs/exec.c
+--- linux-2.4.26/fs/exec.c Fri Feb 20 10:07:36 2004
++++ linux/fs/exec.c Sat Apr 17 02:13:55 2004
+@@ -109,6 +109,7 @@
+ */
+ asmlinkage long sys_uselib(const char * library)
+ {
++#if defined(CONFIG_BINFMT_AOUT) || defined(CONFIG_BINFMT_ELF_AOUT)
+ struct file * file;
+ struct nameidata nd;
+ int error;
+@@ -155,6 +156,9 @@
+ exit:
+ path_release(&nd);
+ goto out;
++#else
++ return -ENOSYS;
++#endif
+ }
+
+ /*