|# SPDX-License-Identifier: GPL-2.0-only
|menu "Executable file formats"
|bool "Kernel support for ELF binaries"
|depends on MMU
|ELF (Executable and Linkable Format) is a format for libraries and
|executables used across different architectures and operating
|systems. Saying Y here will enable your kernel to run ELF binaries
|and enlarge it by about 13 KB. ELF support under Linux has now all
|but replaced the traditional Linux a.out formats (QMAGIC and ZMAGIC)
|because it is portable (this does *not* mean that you will be able
|to run executables from different architectures or operating systems
|however) and makes building run-time libraries very easy. Many new
|executables are distributed solely in ELF format. You definitely
|want to say Y here.
|Information about ELF is contained in the ELF HOWTO available from
|If you find that after upgrading from Linux kernel 1.2 and saying Y
|here, you still can't run any ELF binaries (they just crash), then
|you'll have to install the newest ELF runtime libraries, including
|ld.so (check the file <file:Documentation/Changes> for location and
|depends on COMPAT && BINFMT_ELF
|bool "Kernel support for FDPIC ELF binaries"
|default y if !BINFMT_ELF
|depends on (ARM || (SUPERH && !MMU))
|ELF FDPIC binaries are based on ELF, but allow the individual load
|segments of a binary to be located in memory independently of each
|other. This makes this format ideal for use in environments where no
|MMU is available as it still permits text segments to be shared,
|even if data segments are not.
|It is also possible to run FDPIC ELF binaries on MMU linux also.
|This option enables kernel/elfcore.o.
|bool "Write ELF core dumps with partial segments"
|depends on BINFMT_ELF && ELF_CORE
|ELF core dump files describe each memory mapping of the crashed
|process, and can contain or omit the memory contents of each one.
|The contents of an unmodified text mapping are omitted by default.
|For an unmodified text mapping of an ELF object, including just
|the first page of the file in a core dump makes it possible to
|identify the build ID bits in the file, without paying the i/o
|cost and disk space to dump all the text. However, versions of
|GDB before 6.7 are confused by ELF core dump files in this format.
|The core dump behavior can be controlled per process using
|the /proc/PID/coredump_filter pseudo-file; this setting is
|inherited. See Documentation/filesystems/proc.rst for details.
|This config option changes the default setting of coredump_filter
|seen at boot time. If unsure, say Y.
|tristate "Kernel support for scripts starting with #!"
|Say Y here if you want to execute interpreted scripts starting with
|#! followed by the path to an interpreter.
|You can build this support as a module; however, until that module
|gets loaded, you cannot run scripts. Thus, if you want to load this
|module from an initramfs, the portion of the initramfs before loading
|this module must consist of compiled binaries only.
|Most systems will not boot if you say M or N here. If unsure, say Y.
|bool "Kernel support for flat binaries"
|depends on ARCH_HAS_BINFMT_FLAT
|Support uClinux FLAT format binaries.
|bool "Enable support for very old legacy flat binaries"
|depends on BINFMT_FLAT
|Support decade old uClinux FLAT format binaries. Unless you know
|you have some of those say N here.
|bool "Enable ZFLAT support"
|depends on BINFMT_FLAT
|Support FLAT format compressed binaries
|bool "Enable shared FLAT support"
|depends on BINFMT_FLAT
|Support FLAT shared libraries
|tristate "Kernel support for a.out and ECOFF binaries"
|depends on HAVE_AOUT
|A.out (Assembler.OUTput) is a set of formats for libraries and
|executables used in the earliest versions of UNIX. Linux used
|the a.out formats QMAGIC and ZMAGIC until they were replaced
|with the ELF format.
|The conversion to ELF started in 1995. This option is primarily
|provided for historical interest and for the benefit of those
|who need to run binaries from that era.
|Most people should answer N here. If you think you may have
|occasional use for this format, enable module support above
|and answer M here to compile this support as a module called
|If any crucial components of your system (such as /sbin/init
|or /lib/ld.so) are still in a.out format, you will have to
|say Y here.
|bool "OSF/1 v4 readv/writev compatibility"
|depends on ALPHA && BINFMT_AOUT
|Say Y if you are using OSF/1 binaries (like Netscape and Acrobat)
|with v4 shared libraries freely available from Compaq. If you're
|going to use shared libraries from Tru64 version 5.0 or later, say N.
|tristate "Kernel support for MISC binaries"
|If you say Y here, it will be possible to plug wrapper-driven binary
|formats into the kernel. You will like this especially when you use
|programs that need an interpreter to run like Java, Python, .NET or
|Emacs-Lisp. It's also useful if you often run DOS executables under
|the Linux DOS emulator DOSEMU (read the DOSEMU-HOWTO, available from
|<http://www.tldp.org/docs.html#howto>). Once you have
|registered such a binary class with the kernel, you can start one of
|those programs simply by typing in its name at a shell prompt; Linux
|will automatically feed it to the correct interpreter.
|You can do other nice things, too. Read the file
|<file:Documentation/admin-guide/binfmt-misc.rst> to learn how to use this
|feature, <file:Documentation/admin-guide/java.rst> for information about how
|to include Java support. and <file:Documentation/admin-guide/mono.rst> for
|information about how to include Mono-based .NET support.
|To use binfmt_misc, you will need to mount it:
|mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc
|You may say M here for module support and later load the module when
|you have use for it; the module is called binfmt_misc. If you
|don't know what to answer at this point, say Y.
|bool "Enable core dump support" if EXPERT
|This option enables support for performing core dumps. You almost
|certainly want to say Y here. Not necessary on systems that never
|need debugging or only ever run flawless code.