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