^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) # SPDX-License-Identifier: GPL-2.0-only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) menu "Executable file formats"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) config BINFMT_ELF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) bool "Kernel support for ELF binaries"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) depends on MMU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) select ELFCORE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) ELF (Executable and Linkable Format) is a format for libraries and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) executables used across different architectures and operating
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) systems. Saying Y here will enable your kernel to run ELF binaries
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) and enlarge it by about 13 KB. ELF support under Linux has now all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) but replaced the traditional Linux a.out formats (QMAGIC and ZMAGIC)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) because it is portable (this does *not* mean that you will be able
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) to run executables from different architectures or operating systems
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) however) and makes building run-time libraries very easy. Many new
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) executables are distributed solely in ELF format. You definitely
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) want to say Y here.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) Information about ELF is contained in the ELF HOWTO available from
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) <http://www.tldp.org/docs.html#howto>.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) If you find that after upgrading from Linux kernel 1.2 and saying Y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) here, you still can't run any ELF binaries (they just crash), then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) you'll have to install the newest ELF runtime libraries, including
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) ld.so (check the file <file:Documentation/Changes> for location and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) latest version).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) config COMPAT_BINFMT_ELF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) depends on COMPAT && BINFMT_ELF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) select ELFCORE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) config ARCH_BINFMT_ELF_STATE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) config ARCH_HAVE_ELF_PROT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) config ARCH_USE_GNU_PROPERTY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) config BINFMT_ELF_FDPIC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) bool "Kernel support for FDPIC ELF binaries"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) default y if !BINFMT_ELF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) depends on (ARM || (SUPERH && !MMU) || C6X)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) select ELFCORE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) ELF FDPIC binaries are based on ELF, but allow the individual load
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) segments of a binary to be located in memory independently of each
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) other. This makes this format ideal for use in environments where no
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) MMU is available as it still permits text segments to be shared,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) even if data segments are not.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) It is also possible to run FDPIC ELF binaries on MMU linux also.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) config ELFCORE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) This option enables kernel/elfcore.o.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) config CORE_DUMP_DEFAULT_ELF_HEADERS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) bool "Write ELF core dumps with partial segments"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) depends on BINFMT_ELF && ELF_CORE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) ELF core dump files describe each memory mapping of the crashed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) process, and can contain or omit the memory contents of each one.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) The contents of an unmodified text mapping are omitted by default.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) For an unmodified text mapping of an ELF object, including just
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) the first page of the file in a core dump makes it possible to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) identify the build ID bits in the file, without paying the i/o
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) cost and disk space to dump all the text. However, versions of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) GDB before 6.7 are confused by ELF core dump files in this format.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) The core dump behavior can be controlled per process using
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) the /proc/PID/coredump_filter pseudo-file; this setting is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) inherited. See Documentation/filesystems/proc.rst for details.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) This config option changes the default setting of coredump_filter
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) seen at boot time. If unsure, say Y.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) config BINFMT_SCRIPT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) tristate "Kernel support for scripts starting with #!"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) Say Y here if you want to execute interpreted scripts starting with
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) #! followed by the path to an interpreter.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) You can build this support as a module; however, until that module
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) gets loaded, you cannot run scripts. Thus, if you want to load this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) module from an initramfs, the portion of the initramfs before loading
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) this module must consist of compiled binaries only.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) Most systems will not boot if you say M or N here. If unsure, say Y.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) config ARCH_HAS_BINFMT_FLAT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) config BINFMT_FLAT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) bool "Kernel support for flat binaries"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) depends on ARCH_HAS_BINFMT_FLAT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) Support uClinux FLAT format binaries.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) config BINFMT_FLAT_ARGVP_ENVP_ON_STACK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) config BINFMT_FLAT_OLD_ALWAYS_RAM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) bool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) config BINFMT_FLAT_OLD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) bool "Enable support for very old legacy flat binaries"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) depends on BINFMT_FLAT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) Support decade old uClinux FLAT format binaries. Unless you know
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) you have some of those say N here.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) config BINFMT_ZFLAT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) bool "Enable ZFLAT support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) depends on BINFMT_FLAT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) select ZLIB_INFLATE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) Support FLAT format compressed binaries
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) config BINFMT_SHARED_FLAT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) bool "Enable shared FLAT support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) depends on BINFMT_FLAT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) Support FLAT shared libraries
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) config HAVE_AOUT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) def_bool n
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) config BINFMT_AOUT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) tristate "Kernel support for a.out and ECOFF binaries"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) depends on HAVE_AOUT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) A.out (Assembler.OUTput) is a set of formats for libraries and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) executables used in the earliest versions of UNIX. Linux used
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) the a.out formats QMAGIC and ZMAGIC until they were replaced
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) with the ELF format.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) The conversion to ELF started in 1995. This option is primarily
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) provided for historical interest and for the benefit of those
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) who need to run binaries from that era.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) Most people should answer N here. If you think you may have
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) occasional use for this format, enable module support above
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) and answer M here to compile this support as a module called
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) binfmt_aout.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) If any crucial components of your system (such as /sbin/init
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) or /lib/ld.so) are still in a.out format, you will have to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) say Y here.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) config OSF4_COMPAT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) bool "OSF/1 v4 readv/writev compatibility"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) depends on ALPHA && BINFMT_AOUT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) Say Y if you are using OSF/1 binaries (like Netscape and Acrobat)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) with v4 shared libraries freely available from Compaq. If you're
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) going to use shared libraries from Tru64 version 5.0 or later, say N.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) config BINFMT_EM86
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) tristate "Kernel support for Linux/Intel ELF binaries"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) depends on ALPHA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) Say Y here if you want to be able to execute Linux/Intel ELF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) binaries just like native Alpha binaries on your Alpha machine. For
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) this to work, you need to have the emulator /usr/bin/em86 in place.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) You can get the same functionality by saying N here and saying Y to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) "Kernel support for MISC binaries".
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) You may answer M to compile the emulation support as a module and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) later load the module when you want to use a Linux/Intel binary. The
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) module will be called binfmt_em86. If unsure, say Y.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) config BINFMT_MISC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) tristate "Kernel support for MISC binaries"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) If you say Y here, it will be possible to plug wrapper-driven binary
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) formats into the kernel. You will like this especially when you use
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) programs that need an interpreter to run like Java, Python, .NET or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) Emacs-Lisp. It's also useful if you often run DOS executables under
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) the Linux DOS emulator DOSEMU (read the DOSEMU-HOWTO, available from
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) <http://www.tldp.org/docs.html#howto>). Once you have
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) registered such a binary class with the kernel, you can start one of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) those programs simply by typing in its name at a shell prompt; Linux
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) will automatically feed it to the correct interpreter.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) You can do other nice things, too. Read the file
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) <file:Documentation/admin-guide/binfmt-misc.rst> to learn how to use this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) feature, <file:Documentation/admin-guide/java.rst> for information about how
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) to include Java support. and <file:Documentation/admin-guide/mono.rst> for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) information about how to include Mono-based .NET support.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) To use binfmt_misc, you will need to mount it:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) You may say M here for module support and later load the module when
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) you have use for it; the module is called binfmt_misc. If you
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) don't know what to answer at this point, say Y.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) config COREDUMP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) bool "Enable core dump support" if EXPERT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) This option enables support for performing core dumps. You almost
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) certainly want to say Y here. Not necessary on systems that never
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) need debugging or only ever run flawless code.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) endmenu